Mat38
October 7, 2010, 12:21pm
1
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]
Mat38
October 7, 2010, 12:21pm
2
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]
Vimy
August 26, 2017, 2:05am
3
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…