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

时间:2012-12-31 00:52:14

标签: c++ visual-c++ cuda

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

SYSTEMTIME sm;
FILETIME fm;

GetSystemTime(&sm);
SystemTimeToFileTime(&sm,&fm);

*time =  (double)(fm.dwLowDateTime / 10000000.0);

现在我想在实现CUDA版本的同时计算这个函数在CUDA内核函数之间调用。任何想法或帮助我如何做到这一点。我对cuda编程很新,并且不太了解它。 也可以有人告诉我如何在我尝试的__device__函数中使用new运算符

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

1 个答案:

答案 0 :(得分:1)

你可以通过寄存器(私有的每线程)和共享内存(私有的每个块)做一点动态或伪动态内存分配,但它看起来不像你正在尝试做的那样。

要从设备端代码在堆上分配内存,可以使用C ++ new运算符,也可以使用device-side malloc。这仅适用于Fermi和更新的GPU。

使用cudaEvent API是计算cuda代码最无故障的方法。

编辑: 我已将Robert Crovella的评论合并到这个答案中。如果他发表评论作为答案,请投票给他而不是这个。