gpt4 book ai didi

c++ - AMD GPU 的 OpenCL 时间测量问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:52 27 4
gpt4 key购买 nike

我最近比较了两种进行内核运行时测量的方法,我看到了一些令人困惑的结果。

我使用带有集成 GPU 和 Ubuntu Linux 的 AMD Bobcat CPU (E-350)(CL_PLATFORM_VERSIONOpenCL 1.2 AMD-APP (923.1))。

gettimeofday 的基本思路如下所示:

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.06 毫秒,
  • 提交时间花费:2733 毫秒,
  • 执行时间:2731 毫秒(实际执行时间)。

我看到它加起来是 5466 毫秒,但为什么它有一半时间处于提交状态?

有趣的是:

  • 提交的状态始终是实际执行时间的一半,即使对于不同的内核或不同的工作负载(因此它不可能是一个恒定的设置时间),

  • 对于 CPU 而言,提交状态的时间花费为 0,执行时间等于 gettimeofday 结果,

  • 我在带有 Windows 的 Intel Ivy Bridge 上使用 CPU 和 GPU 测试了我的内核,但我没有看到效果。

有人知道吗?

我怀疑 GPU 运行内核两次(导致 gettimeofday 是实际执行时间的两倍)或者函数 clGetEventProfilingInfo 对于 AMD GPU 无法正常工作。

最佳答案

我在 AMD 论坛上发布了这个问题。他们说这是 AMD 分析器中的错误。

http://devgurus.amd.com/thread/159809

关于c++ - AMD GPU 的 OpenCL 时间测量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12605546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com