问题描述:
CUDA: 使用cudaEventElapsedTime时返回device not ready error
强调下我是用谷歌大神搜索到的结构哦!
http://stackoverflow.com/questions/6551121/cuda-cudaeventelapsedtime-returns-device-not-ready-error
我自己的环境是用的Tesla C2070 GPU,也不知道为什么会出现这个问题,但是根据网上这个方法是可以解决问题的。
方案如下:
1 cudaError_t err; 2 cudaEvent_t start, stop; 3 cudaEventCreate(&start); 4 cudaEventCreate(&stop); 5 err = cudaEventRecord(start, 0); 6 f(err != cudaSuccess) { 7 printf ("\n\n 1. Error: %s\n\n", cudaGetErrorString(err)); 8 exit(1); 9 } 10 // actual code 11 cudaThreadSynchronize(); 12 err = cudaEventRecord(stop, 0); 13 if(err != cudaSuccess) { 14 printf ("\n\n2. Error: %s\n\n", cudaGetErrorString(err)); 15 exit(1); 16 } 17 err = cudaEventElapsedTime(&elapsed_time, start, stop); 18 f(err != cudaSuccess) { 19 printf ("\n\n 3. Error: %s\n\n", cudaGetErrorString(err)); 20 exit(1); 21 }
对如上代码调整如下:
将11行代码和12行代码对换位置。
这样就OK了!
但是,如果GPU是其他结构的如fermi架构就不用修改,原因未知!
时间: 2024-10-13 03:14:19