Für eine OpenCL-Kernel-Ausführungszeit messen wir entweder verwendet ein:Wie beeinflussen das Betriebssystem und der Treiber das Timing des OpenCL-Kernels?
1- CPU Timer .. aber wir müssen bedenken, dass die OCL-Funktionen sind non-blocking daher müssen wir die clFinish()
verwenden Routine zum Erreichen des vollen Durchsatzes.
2- GPU Timers .. das verwendet clGetEventProfilingInfo()
Routine zusammen mit den CL_QUEUE_PROFILING_ENABLE
Flag in Eigenschaften Argumente entweder clCreateCommandQueue()
oder clSetCommandQueueProperty()
Routinen Einstellung.
Wie können das Betriebssystem und die Treiberversion die Genauigkeit der Timer beeinflussen, die zur Messung der Ausführungszeit des Kernels verwendet werden?
Alles, was ich weiß, ist, dass wir das Gerät mit mindestens einen Kernel-Aufruf aufwärmen müssen, um die Latenz der OpenCL-Ressourcenallokation am Anfang zu absorbieren.