2024-10-02 08:26:37 发布
网友
我正在尝试优化pyOpenCL程序。出于这个原因,我想知道是否有一种方法来描述这个程序,看看大部分时间需要在哪里。在
你知道如何解决这个问题吗?在
提前感谢 安蒂
编辑:例如,用于CUDA的nvidias nvprof可以为pyCuda实现这个功能,但是对于pyOpenCL则不行。在
是的,绝对有-您可以分析设备上运行的单个PyOpenCL事件,也可以分析主机上的整个程序。在
PyOpenCL事件是通过将内存复制到设备、在设备上运行内核以及从设备上复制内存来返回的。在
以下是分析设备事件的示例:
event = cl.enqueue_copy(queue, np_array, cl_array) event.wait() print (event.profile.end-event.profile.start)*1e-9
以下是在主机上分析的示例:
我还没有见过更全面的方法来描述PyOpenCL程序。希望这有帮助!在
除了benshope's answer,您应该通过创建命令队列来启用它的分析
queue = cl.CommandQueue(context, properties=cl.command_queue_properties.PROFILING_ENABLE)
PyOpenCL examples包含执行一些基本分析的基准脚本(检查benchmark.py、dump-performance.py和{})。在
benchmark.py
dump-performance.py
好的, 我想出了一个方法:Cuda Toolkit 3.1提供了openCL的评测(更高版本不会)。从这个包中使用compute visual profiler,它是(computeprof.exe)。它可用于windows和linux here,并可与新的Cuda工具包一起安装。 看起来像这样:
Cuda Toolkit 3.1
compute visual profiler
(computeprof.exe)
我希望这对其他人也有帮助。在
是的,绝对有-您可以分析设备上运行的单个PyOpenCL事件,也可以分析主机上的整个程序。在
PyOpenCL事件是通过将内存复制到设备、在设备上运行内核以及从设备上复制内存来返回的。在
以下是分析设备事件的示例:
以下是在主机上分析的示例:
^{pr2}$我还没有见过更全面的方法来描述PyOpenCL程序。希望这有帮助!在
除了benshope's answer,您应该通过创建命令队列来启用它的分析
PyOpenCL examples包含执行一些基本分析的基准脚本(检查})。在
benchmark.py
、dump-performance.py
和{好的,
我想出了一个方法:
Cuda Toolkit 3.1
提供了openCL的评测(更高版本不会)。从这个包中使用compute visual profiler
,它是(computeprof.exe)
。它可用于windows和linux here,并可与新的Cuda工具包一起安装。看起来像这样:
我希望这对其他人也有帮助。在
相关问题 更多 >
编程相关推荐