安装和配置MPI
- mpi的下载路径:https://www.microsoft.com/en-us/download/details.aspx?id=57467,两个文件都要安装(SDK和Bin),并记住路径(注意:由于MPI的bin在安装时自动添加了环境变量,故此时应该重启Windows使其生效)。
- 在vs工程的项目属性页配置MPI(以我的项目为例,配置x64平台的Debug和Release):
- 选择所有配置,x64平台
- “VC++目录”=>包含目录添加MPI头文件所在的路径:C:\Program Files (x86)\Microsoft SDKs\MPI\Include\x64和C:\Program Files (x86)\Microsoft SDKs\MPI\Include;
- “VC++目录”=>库目录添加MPI链接库所在的目录:C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64;
- 链接器=>输入=>附加依赖项添加msmpi.lib;
- C/C++ => 预处理器=>预处理器定义添加MPICH_SKIP_MPICXX;
- C/C++ => 代码生成=>运行库添加:
- debug模式下添加多线程调试 (/MTd)
- release模式下添加多线程 (/MT)
使用MPI
MPI程序的测试代码如下:
#include <mpi.h>
int main(int argc, char*argv[])
{
int myid, numprocs, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
//用MPI_Comm_rank 获得进程的rank,该rank值为0到p-1间的整数,相当于进程的ID
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
//用MPI_Comm_size 获得进程个数 int MPI_Comm_size(MPI_Comm comm, int *size);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Get_processor_name(processor_name, &namelen);
printf("Hello World! by MoreWindows\nProcess %d of %d on %s\n", myid, numprocs, processor_name);
MPI_Finalize();
return 0;
}
编译成功后用cmd进入到该可执行文件所在路径,运行如下命令:
# 5为启动的并行进程数,test_mpi.exe为编写的mpi程序
mpiexec -n 5 test_mpi.exe
MPI程序主要利用其同步和互斥API,具体用法还需进一步探索。