warmup和execute the kernel区别

dim3 dimBlock(8, 8, 1);
dim3 dimGrid(width / dimBlock.x, height / dimBlock.y, 1);

// Warmup
transformKernel<<<dimGrid, dimBlock, 0>>>(dData, width, height, angle);

checkCudaErrors(cudaDeviceSynchronize());
StopWatchInterface *timer = NULL;
sdkCreateTimer(&timer);
sdkStartTimer(&timer);

// Execute the kernel
transformKernel<<<dimGrid, dimBlock, 0>>>(dData, width, height, angle);

warmup后的为什么不会马上执行,而在下面执行?
先谢谢版主;P;P

我没有看懂你的疑问所在:

这两次kernel启动实际上都执行了,一次是前面的作为热身的,而第二次则是下面的那个正式作为实践测试启动的。

所以不存在你疑问的为何只有下面的才能执行的疑问(他们都执行了)。

如果说为何要启动2次,则是第一次可能有额外的开销,导致时间不准确,所以我们一般以第二次为准。

感谢来访,如果还有疑问,欢迎继续发文。

明白了,谢谢版主!

您客气了,服务您是我们的荣幸。

期待您的下次莅临。