如此说来:如何减少CUDA同步延迟
等待设备结果有两种方法:
但是对于"阻塞",我需要使用
正如所写的,
- "轮询" - 通过自旋消耗CPU资源以减少等待结果的延迟
- "阻塞" - 线程在等待中断期间处于休眠状态,以提高总体性能
CudaDeviceScheduleSpin
。但是对于"阻塞",我需要使用
CudaDeviceScheduleYield
还是cudaDeviceScheduleBlockingSync
?
cudaDeviceScheduleBlockingSync
和cudaDeviceScheduleYield
有什么区别?正如所写的,
cudaDeviceScheduleYield
会在等待设备结果时指示CUDA让线程停止。这可能会增加等待时间,但可以同时提高CPU线程执行并行工作的性能。即等待结果而不自旋消耗CPU资源,就是"阻塞"。而cudaDeviceScheduleBlockingSync也是等待结果,不过不自旋消耗CPU资源。但有什么区别呢?
CudaDeviceScheduleYield
和CudaDeviceScheduleSpin
是否都使用轮询循环?那么它们之间有什么区别?根据文档,CudaDeviceScheduleYield
会增加延迟,因此它不能是“轮询”,不是吗? - Alex