我想从MPI / C开始,我想编译/执行标准程序mpi_hello。 关于mpicc,我成功了但是在编译文件时收到了错误信息。 这是程序:
#include <mpi.h>
#include <stdio.h>
int main (int argc, char* argv[])
{
int mynode, totalnodes;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &totalnodes);
MPI_Comm_rank(MPI_COMM_WORLD, &mynode);
printf( "\nHello world from process %d of %d\n", mynode, totalnodes );
if(totalnodes==1) printf("You have just one processor!\n");
MPI_Finalize();
return 0;
}
我得到了以下内容:
turb@turb-LIFEBOOK-AH531:~/Desktop/Prog$ mpicc mpi_hello.c
turb@turb-LIFEBOOK-AH531:~/Desktop/Prog$ cc -O3 mpi_hello.c
mpi_hello.c:6:17: fatal error: mpi.h: No such file or directory
#include <mpi.h>
^
compilation terminated.
感谢您的帮助。谢谢! 一个
答案 0 :(得分:2)
你可以尝试:
module add gcc mpich2
mpicc mpi_hello.c
编辑:哦,哇,我完全误读了你的帖子。你用它的外观成功地编译了它 mpicc hello_world.c
现在你应该可以用
执行a.out了mpirun -np 2 ./a.out
其中2 =处理器数量。 使用您的代码和全新安装:
beaty@korriban:~$ mpicc test.c
beaty@korriban:~$ mpirun ./a.out
Hello world from process 0 of 1
You have just one processor!
beaty@korriban:~$ mpirun -np 2 ./a.out
Hello world from process 0 of 2
Hello world from process 1 of 2
答案 1 :(得分:1)
您需要确保更新包含路径,以便编译器可以找到mpi.h(如果它未安装在标准位置。
答案 2 :(得分:0)
使用MPI时,您也不能使用cc -O3 name.c来编译程序。正确的编译命令是:mpicc -O3 name.c.命令mpicc name.c在这里无关。 这就是你只得到一个过程:
turb@turb-LIFEBOOK-AH531:~/Desktop/Prog$ mpicc -O3 mpi_hello.c
turb@turb-LIFEBOOK-AH531:~/Desktop/Prog$ ./a.out
Hello world from process 0 of 1
You have just one processor!
如上所述,您还可以使用多个处理器(例如2)mpirun -np 2 ./a.out。我希望这有点帮助!