我在我的mac上安装了Open MPI和FFTW。我已经成功使用了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
但现在我看到了很多这个:
如何解决此问题?我知道我安装了OpenMPI,没有它就安装了FFTW。
答案 0 :(得分:1)
在-lfftw3
-lfftw3_mpi
使用mpicxx
代替gcc
命令:mpicxx test.c -lfftw3_mpi -lfftw3