使用CudaEvent记录时间时出错

使用CudaEvent记录时间时出错,cuda,Cuda,我使用cudaEvent方法来查找内核执行所需的时间 cudaEvent_t start,stop; float time=0; cudaEventCreate(&start); cudaEventCreate(&stop); cudaEventRecord(start,0); subsampler<<<gridSize,blockSize>>>(img_redd,img_greend,img_blued,i

我使用cudaEvent方法来查找内核执行所需的时间

  cudaEvent_t start,stop;
  float time=0;
  cudaEventCreate(&start);
  cudaEventCreate(&stop);      
  cudaEventRecord(start,0);
  subsampler<<<gridSize,blockSize>>>(img_redd,img_greend,img_blued,img_height,img_width,final_device_r,final_device_g,final_device_b);
  cudaEventRecord(stop,0);
  cudaEventSynchronize(stop);
  cudaEventElapsedTime(&time,start,stop);

现在,当我运行这个程序并尝试查看它出现的时间时,类似于52428800.000的值有所不同,但顺序是这样的。我知道它是以毫秒为单位的,但这仍然是一个巨大的数字,特别是当这个程序执行不超过一分钟时。有人能指出为什么会发生这种情况吗。我真的需要找出内核需要多少时间执行。

您应该检查每个CUDA调用的返回值。至少在最后打电话给Cudagetlastror,检查一切是否成功


如果在内核执行过程中出现错误,请尝试使用cuda memcheck运行应用程序,特别是如果出现未指定的启动失败,检查非法内存访问。

感谢您的代表。我在完成程序之前调用了cudaGetLastError函数,它说没有错误。此外,我正在编写一个图像,结果是正确的,因此我非常确定代码是正确的。我只是很惊讶为什么一个不到一分钟的程序会显示这么大的数字执行。您在操作系统和bitness上使用什么平台,CUDA版本?检查编译主机和设备的位是否相同,即如果编译的是64位主机,请确保nvcc命令行上有-m64。