在WSL里安装MPI非常方便,只需执行
1 | sudo apt install -y build-essential mpich |
即可。
这样就可以在终端中使用mpi了,但为了方便使用,还需在VSCode中添加路径。
在c_cpp_properties.json的includePath中添加”/usr/include/mpich”即可。
用mpi编写一个helloworld程序:
1 |
|
上述代码由许多值得注意的地方:
1.注意不能使用 bits/stdc++ 这个库,否则会出错。
2.main函数要带命令行参数。
3.MPI_Init函数表示从这一行开始,后面的代码会被并行执行,即在每个进程中执行一次。其他的MPI
函数必须在MPI_Init函数之后。
4.MPI_Comm_rank函数获得本进程是第几个进程,把进程号存储在myid中。第1个进程(也称为主进程)对应的myid是0,
第二个进程对应的myid是1……以此类推。
5.MPI_Comm_size得到进程的数量。
6.在网上查阅资料了解到,MPI_Finalize函数将并行部分终止,除了主进程外的进程都会被终止,主进程的串行部分还可以正常执行。但事实上我在本地运行程序时,MPI_Finalize函数之后的部分还是会被并行执行,我也不知道为什么。
写完之后,就可以在终端执行程序了。
用mpic++编译源代码,生成一个名为hw的可执行文件。再用mpirun运行文件,4表示4个进程,所以输出时4个helloworld。