fftw_mpi サブルーチン (バージョン 3.3.2) で次元 (nxn) の複素行列を使用しようとしています。列。最初に Fortran でシリアル コードを作成し、すべて正常に動作していますが、mpi で fftw サブルーチンを試していると、期待どおりの結果が得られません。1D FFT 変換の計画の作成方法に問題がありますか? 以下に例を示します (行の最初の 1D FFT のみ)。
! ローカル データ サイズを取得して割り当てる (次元反転) alloc_local = fftw_mpi_local_size_2d(M, L, MPI_COMM_WORLD, & local_M、local_j_offset) cdata = fftw_alloc_complex(alloc_local) c_f_pointer(cdata, ldata, [L,local_M]) を呼び出す c_f_pointer(cdata, data, [L,local_M]) を呼び出す ! MPI プランの作成 計画 = fftw_mpi_plan_many_dft(1, L*local_M, local_M, FFTW_MPI_DEFAULT_BLOCK, & FFTW_MPI_DEFAULT_BLOCK、ldata、data、MPI_COMM_WORLD、FFTW_FORWARD、FFTW_ESTIMATE) do j = 1、local_M do i = 1、L ldata(i,j)= my_function 遠藤 遠藤 ! 計算変換 fftw_mpi_execute_dft(plan, ldata, data) を呼び出す fftw_destroy_plan(計画) を呼び出す fftw_free(cdata) を呼び出す MPI_FINALIZE(mpi_err) を呼び出す