为了测量 OpenCL 内核执行时间,我们可以使用:
1- CPU 定时器.. 但我们需要考虑 OCL 函数是非阻塞的,因此我们需要使用clFinish()
例程来实现全吞吐量。
2- GPU 计时器.. 使用clGetEventProfilingInfo()
例程以及CL_QUEUE_PROFILING_ENABLE
在任一例程的属性参数中clCreateCommandQueue()
设置clSetCommandQueueProperty()
标志。
操作系统和驱动程序版本如何影响用于测量内核执行时间的计时器的准确性?
我所知道的是,我们需要用至少一个内核调用来预热设备,以在一开始就吸收 OpenCL 资源分配的延迟。