2017-05-04 19 views
0

为了测量在OpenCL内核执行时间,我们要么使用:操作系统和驱动程序如何影响OpenCL内核时序?

1- CPU定时器 ..但我们需要考虑的是,OCL功能无阻塞因此,我们需要使用clFinish()实现完全吞吐量的例程。

2- GPU定时器 ..正在使用clGetEventProfilingInfo()常规用在任一或clCreateCommandQueue()clSetCommandQueueProperty()例程的性能参数设定CL_QUEUE_PROFILING_ENABLE标志一起。

操作系统和驱动程序版本如何影响用于测量内核执行时间的定时器的精度?

我所知道的是,我们需要用至少一个内核调用来预热设备,以便在开始时吸收OpenCL资源分配的延迟。

回答

0

1-如果由于非阻塞内核启动,您在驱动程序上花费的时间而只使用CPU时序,并且甚至可能因操作系统视角的上下文切换而有所不同,您将无法获得准确的时序。 2- GPU定时器取决于GPU硬件计数器。使用这些事件读取计数器会给你最准确的时间,你可以得到。由于CPU或操作系统不会插入GPU硬件计数器,所以效果不会。在处理硬件计数器的情况下,唯一可能会影响的是驱动程序。

预热部分用于数据传输和内存分配,因此它不会影响硬件计数器的行为方式。

相关问题