3

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) を呼び出す

4

0 に答える 0