CUDA中的系统时间和文件时间

System time and file time in CUDA

本文关键字:时间 文件 系统 CUDA      更新时间:2023-10-16

我正在使用以下代码来计算c++ coce中的时间

SYSTEMTIME sm;
FILETIME fm;
GetSystemTime(&sm);
SystemTimeToFileTime(&sm,&fm);
*time =  (double)(fm.dwLowDateTime / 10000000.0);

现在我想计算相同的时间,当我实现CUDA版本这个函数在CUDA内核函数之间被调用。有什么主意或帮助我怎么做吗?我是cuda编程的新手,对它了解不多。也有人能告诉我如何使用新的操作符在__device__函数我尝试

maxY = new int[m_imgWidth*m_imgHeight]; 
cudaMalloc((void **)&m_labelBuf , m_imgWidth*m_imgHeight);

但是显示错误

 calling a __host__ function("cudaMalloc") from a __global__ function("kernel_Labeling") is not allowed

您可以通过寄存器(每个线程私有)和共享内存(每个块私有)进行一点动态或伪动态内存分配,但这看起来并不是您想要做的。

要从设备端代码分配堆上的内存,可以使用c++的new操作符,也可以使用设备端malloc。这只适用于Fermi和更新的gpu。

使用cudaEvent API是计时cuda代码的最省事的方法。

编辑: 我已经将Robert Crovella的评论合并到这个答案中。