评估1d cuFFT的执行时间

时间:2013-11-22 16:52:47

标签: cuda cufft

代码段

   cudaEventRecord(start, 0);

   /* creates 1D FFT plan */
   cufftPlan1d(&plan, NX, CUFFT_C2C, BATCH);
   /* executes FFT processes */
   cufftExecC2C(plan, devPtr, devPtr, CUFFT_FORWARD);

   cudaEventRecord(stop, 0);
   cudaEventSynchronize(stop);

测量cuFFT创建计划所需的时间和执行时间。

如何仅计算执行时间而不包括创建计划所需的时间?

1 个答案:

答案 0 :(得分:1)

可以使用以下代码段测量计算没有计划创建时间的执行时间所需的时间。它只是重新排列你的问题。

cufftResult     cuRet ;

/* creates 1D FFT plan */
cuRet = cufftPlan1d(&plan, NX, CUFFT_C2C, BATCH);
if (CUFFT_SUCCESS != cuRet)
{
    printf ("Failed in plan creation\n") ;
    return ;
}

cudaEventRecord(start, 0);
/* executes FFT processes */
cuRet = cufftExecC2C(plan, devPtr, devPtr, CUFFT_FORWARD);
if (CUFFT_SUCCESS != cuRet)
{
    printf ("Failed in FFT execution\n") ;
    return ;
}
if (cudaThreadSynchronize() != cudaSuccess)
{
    printf("Failed to synchronize\n");
    return;
}

cudaEventRecord(stop, 0);
cudaEventSynchronize(stop);

请务必检查cudaEventRecordcudaEventSynchronize的返回值,查看我未显示的错误,但您可以找到检查错误here的正确方法。