AMD GPU的OpenCL时间测量问题
OpenCL time measurment issues with AMD GPU
我最近比较了两种进行内核运行时测量的方法,发现了一些令人困惑的结果。
我使用AMD山猫CPU(E-350),集成GPU和Ubuntu Linux(CL_PLATFORM_VERSION
就是OpenCL 1.2 AMD-APP (923.1)
)。
每日获取时间的基本想法如下:
clFinish(...) // that all tasks are finished on the command queue
gettimeofday(&starttime,0x0)
clEnqueueNDRangeKernel(...)
clFlush(...)
clWaitForEvents(...)
gettimeofday(&endtime,0x0)
这意味着内核需要5466毫秒左右的
我用clGetEventProfilingInfo
对QUEUED
/SUBMIT
/START
/END
进行了第二次时间测量。
使用4个时间值,我可以计算在不同状态下花费的时间:
- 排队时间:0.06ms
- 提交的时间花费:2733ms
- 执行时间:2731ms(实际执行时间)
我看到它加起来是5466毫秒,但为什么它有一半时间处于提交状态?
有趣的是:
提交的状态总是实际执行时间的一半,即使对于不同的内核或不同的工作负载(因此它不可能是恒定的设置时间),
对于CPU,在提交状态下花费的时间为0,执行时间等于获取日期结果
我在英特尔常春藤桥上用CPU和GPU测试了我的内核,没有看到效果。
有人知道线索吗?
我怀疑GPU运行内核两次(导致gettimeofday是实际执行时间的两倍),或者函数clGetEventProfileInfo对AMD GPU工作不正常。
我在AMD论坛上发布了这个问题。他们说这是AMD探查器中的一个错误。
http://devgurus.amd.com/thread/159809
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 在C++中测量postscript字体宽度
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- Linux 测量时间问题! std::chrono, QueryPerformanceCounter, clock_ge
- CGAL 3D 周期性德劳内三角测量与信息的问题
- 尝试构造包装器测量函数调用时间时出现问题
- 通过计数步骤来测量算法的运行时间时遇到问题
- AMD GPU的OpenCL时间测量问题
- Visual Studio 2010中测量C++项目性能的问题