from MKL DFTI to CUFFT need help to port code

As an absolute beginner in FFT, I have difficulties trying to move the following piece of code from the MKL DFTI interface to CUFFT.

Can somebody help me, please ?

Thanks for your help.

Mathieu

[codebox]

if (.not.bwd_fft_is_set) then

    bwd_strides_in (1) = 0

    bwd_strides_in (2) = 1

    bwd_strides_in (3) =  TMV%run_nz/2

    bwd_strides_in (4) = (TMV%run_nz/2)*TMV%run_nx

    bwd_strides_out(1) = 0

    bwd_strides_out(2) = 1

    bwd_strides_out(3) = TMV%run_nz

    bwd_strides_out(4) = TMV%run_nz*TMV%run_nx

bwd_len(1) = TMV%run_nz-2

    bwd_len(2) = TMV%run_nx

    bwd_len(3) = TMV%run_ny

bwd_fft_ierr = DftiCreateDescriptor( bwd_fft_desc, DFTI_SINGLE, DFTI_REAL, 3, bwd_len )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_PLACEMENT, DFTI_INPLACE )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_INPUT_STRIDES,  bwd_strides_in  )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_OUTPUT_STRIDES, bwd_strides_out )

    bwd_fft_scale= 1./(real(TMV%run_nx) * real(TMV%run_nz-2) * real(TMV%run_ny))

    bwd_fft_ierr = DftiSetValue(bwd_fft_desc,DFTI_BACKWARD_SCALE,bwd_fft_scale)

    bwd_fft_ierr = DftiCommitDescriptor(bwd_fft_desc)

    bwd_fft_is_set = .true.

endif

ierr = DftiComputeForward(fwd_fft_desc,rwork_tmp_kx2_vmin)

[/codebox]

As an absolute beginner in FFT, I have difficulties trying to move the following piece of code from the MKL DFTI interface to CUFFT.

Can somebody help me, please ?

Thanks for your help.

Mathieu

[codebox]

if (.not.bwd_fft_is_set) then

    bwd_strides_in (1) = 0

    bwd_strides_in (2) = 1

    bwd_strides_in (3) =  TMV%run_nz/2

    bwd_strides_in (4) = (TMV%run_nz/2)*TMV%run_nx

    bwd_strides_out(1) = 0

    bwd_strides_out(2) = 1

    bwd_strides_out(3) = TMV%run_nz

    bwd_strides_out(4) = TMV%run_nz*TMV%run_nx

bwd_len(1) = TMV%run_nz-2

    bwd_len(2) = TMV%run_nx

    bwd_len(3) = TMV%run_ny

bwd_fft_ierr = DftiCreateDescriptor( bwd_fft_desc, DFTI_SINGLE, DFTI_REAL, 3, bwd_len )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_PLACEMENT, DFTI_INPLACE )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_INPUT_STRIDES,  bwd_strides_in  )

    bwd_fft_ierr = DftiSetValue        ( bwd_fft_desc, DFTI_OUTPUT_STRIDES, bwd_strides_out )

    bwd_fft_scale= 1./(real(TMV%run_nx) * real(TMV%run_nz-2) * real(TMV%run_ny))

    bwd_fft_ierr = DftiSetValue(bwd_fft_desc,DFTI_BACKWARD_SCALE,bwd_fft_scale)

    bwd_fft_ierr = DftiCommitDescriptor(bwd_fft_desc)

    bwd_fft_is_set = .true.

endif

ierr = DftiComputeForward(fwd_fft_desc,rwork_tmp_kx2_vmin)

[/codebox]

Do you have any idea? I am having trouble with the same problem now. It seems to be a conflict between the data layout? MKL Dfti accept column major data while cufft accept row major? What should I do? I simply change the value of nx and nz for a 3D cufft, but it doesn’t work…