2016-09-14 34 views
2

我已经在我的Mac上安装了Open MPI和FFTW。我已经成功地使用了FFTW,现在我正尝试将它与MPI结合使用。在C中编译FFTW与MPI

这里是我试图运行:

int main(int argc, char **argv){ 
    clock_t time0, time1; 
    int N = 10; 
    fftw_complex *in, *out; 
    fftw_plan p; 
    MPI_Init(&argc, &argv); 
    fftw_mpi_init(); 
    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); 
    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); 
    p = fftw_mpi_plan_dft_1d(N, in, out,MPI_COMM_WORLD, FFTW_FORWARD, FFTW_ESTIMATE); 
    for (int i = 0; i<N; i++) { 
     in[i]=i+(i+1)*I; 
    } 
    time0 = clock(); 
    fftw_execute(p); 
    time1 = clock(); 
    printf(" FFT time = %f \n\n", (float)(time1 - time0)/CLOCKS_PER_SEC); 
    fftw_destroy_plan(p); 
    fftw_free(in); fftw_free(out); 
    MPI_Finalize(); 
    return 0; 
} 

这里是我在尝试编译:

gcc -I/usr/local/include test.c -L/usr/local/lib -lfftw3_mpi 

这几乎等同于我如何编译无MPI和所有工作正常:

gcc -I/usr/local/include test.c -L/usr/local/lib -lfftw3 

,但现在我看到很多这样的:

enter image description here

我该如何解决这个问题?我知道我安装了OpenMPI,没有安装FFTW就失败了。

+0

我会尝试, – Burgundy

+0

你知道该怎么做呢? – Burgundy

+1

我这样做,仍然有同样的问题,但具有不同的功能,所以我也加了-lfftw3,现在它可以工作,谢谢! – Burgundy

回答

1
  1. 添加-lfftw3-lfftw3_mpi

  2. 使用mpicxx而不是gcc

命令:mpicxx test.c -lfftw3_mpi -lfftw3