-2

代码片段

   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 创建计划所需的时间和执行时间。

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

4

1 回答 1

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

于 2013-11-24T05:12:58.207 回答