589
社区成员




cufftHandle hdFFT;
cufftResult result = cufftPlan1d(&hdFFT, nFFTSize, CUFFT_C2C, nBatch);
if(result != CUFFT_SUCCESS)
return FALSE;
cufftComplex *pComplex = (cufftComplex*)pInComp;
cufftComplex *pDevComplex;
if(cudaMalloc((void**)&pDevComplex, nFFTSize*sizeof(cufftComplex)*nBatch))
{
cufftDestroy(hdFFT);
return FALSE;
}
cudaMemset(pDevComplex, 0, nFFTSize*sizeof(cufftComplex)*nBatch);
cudaMemcpy(pDevComplex, pComplex, nCount*sizeof(cufftComplex), cudaMemcpyHostToDevice);
cufftResult rfft = cufftExecC2C(hdFFT, pDevComplex, pDevComplex, CUFFT_FORWARD_INVERSE);
if(rfft == CUFFT_SUCCESS)
{
rfft = cufftExecC2C(hdFFT, pDevComplex, pDevComplex, CUFFT_INVERSE);
cudaMemcpy(pOutComp, pDevComplex, nCount*sizeof(cufftComplex), cudaMemcpyDeviceToHost);
}
cudaFree(pDevComplex);
cufftDestroy(hdFFT);