I have a 3D grid with a float3 assigned to each cell and I want to perform, for each component of the float3, a 3D FFT.
The cufft plan is as follows:
int n = 200;
int dim[] = {n, n, n};
cufftPlanMany(&cufft_plan,
3, dim, /*Three dimensional FFT*/
dim,
/*Each FFT starts in 1+previous FFT index. FFTx in 0*/
3, 1, //Each element separated by three others x0 y0 z0 x1 y1 z1...
dim,
3, 1,
/*Perform 3 FFTs*/
CUFFT_R2C, 3);
So I am saying, do three 3D FFTs with this data.
I want the three FFTs to execute concurrently. I guess I could do this by creating three plans and assigning a stream to each one.
But I wonder, can one configure cuFFT to perform the batched calls asynchronously?
So I can just call:
cufftExecR2C(cufft_plan, (cufftReal*)in, (cufftComplex*)out);
And let cuFFT execute the three FFTs at the same time (if the device has enough resources!)
Greetings!