代码段
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创建计划所需的时间和执行时间。
如何仅计算执行时间而不包括创建计划所需的时间?
答案 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);
请务必检查cudaEventRecord
和cudaEventSynchronize
的返回值,查看我未显示的错误,但您可以找到检查错误here的正确方法。