有没有一种方法来描述OpenCL或pyOpenCL程序?

2024-10-02 08:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试优化pyOpenCL程序。出于这个原因,我想知道是否有一种方法来描述这个程序,看看大部分时间需要在哪里。在

你知道如何解决这个问题吗?在

提前感谢
安蒂

编辑:例如,用于CUDA的nvidias nvprof可以为pyCuda实现这个功能,但是对于pyOpenCL则不行。在


Tags: 方法程序pycuda功能pyopencl编辑时间原因
3条回答

是的,绝对有-您可以分析设备上运行的单个PyOpenCL事件,也可以分析主机上的整个程序。在

PyOpenCL事件是通过将内存复制到设备、在设备上运行内核以及从设备上复制内存来返回的。在

以下是分析设备事件的示例:

event = cl.enqueue_copy(queue, np_array, cl_array)
event.wait()
print (event.profile.end-event.profile.start)*1e-9

以下是在主机上分析的示例:

^{pr2}$

我还没有见过更全面的方法来描述PyOpenCL程序。希望这有帮助!在

除了benshope's answer,您应该通过创建命令队列来启用它的分析

queue = cl.CommandQueue(context, 
            properties=cl.command_queue_properties.PROFILING_ENABLE)

PyOpenCL examples包含执行一些基本分析的基准脚本(检查benchmark.pydump-performance.py和{})。在

好的,
我想出了一个方法:Cuda Toolkit 3.1提供了openCL的评测(更高版本不会)。从这个包中使用compute visual profiler,它是(computeprof.exe)。它可用于windows和linux here,并可与新的Cuda工具包一起安装。
看起来像这样:

TimingsTotal time histogramHist 2Hist 3

我希望这对其他人也有帮助。在

相关问题 更多 >

    热门问题