Windows+Microsoft MPI v10.1.3 安装配置记录
- MS-MPI 安装
- VS中进行配置
- 属性管理器-添加新项目属性表
- VC++目录-包含目录
- 链接器-常规-附加库目录
- 链接器-输入-附加依赖项
- 测试
某个项目需要MPI支持,在此记录MS MPI的安装配置过程。
MS-MPI 安装
在微软官网下载
两个都下
双击安装,安装路径改为D盘
我这里先运行msi装sdk再运行的exe装的可执行文件
测试
在CMD中输入以下命令测试
set MSMPI
可得
为了让这些环境变量正式生效,能在VS中识别成功,需要重启一下设备
VS中进行配置
属性管理器-添加新项目属性表
注意是在Release x64平台下创建的属性表
VC++目录-包含目录
添加
$(MSMPI_INC);$(MSMPI_INC)\x64;
链接器-常规-附加库目录
添加
$(MSMPI_LIB64)
链接器-输入-附加依赖项
添加
msmpi.lib
msmpifec.lib
msmpifmc.lib
配置完成
测试
可以看到使用mpi的相关项目不再报错
也可以重新找一个mpi相关测试代码,如
#include <mpi.h>
#include <iostream>
int main(int argc, char* argv[])
{
// 初始化MPI环境
MPI_Init(&argc, &argv);
// 获取当前进程的rank和总的进程数
int rank, size;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
// 每个进程打印自己的信息
std::cout << "Hello world from process " << rank << " of " << size << std::endl;
// 简单的点对点通信
if (size > 1) {
if (rank == 0) { // 如果是进程0
const char* message = "Greetings from process 0!";
// 发送消息给进程1
MPI_Send(const_cast<char*>(message), strlen(message) + 1, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
std::cout << "Process 0 sent a message to process 1." << std::endl;
}
else if (rank == 1) { // 如果是进程1
char message[100];
// 接收来自进程0的消息
MPI_Recv(message, 100, MPI_CHAR, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
std::cout << "Process 1 received the message: " << message << std::endl;
}
}
// 清理MPI环境
MPI_Finalize();
return 0;
}
运行输出为
Hello world from process 0 of 1
可在终端设置多线程
PS D:\Project\CppProject\MSMPI_Test\x64\Release> mpiexec -n 4 .\MSMPI_Test.exe
Hello world from process 0 of 4
Hello world from process 1 of 4
Hello world from process 2 of 4
Hello world from process 3 of 4
Process 0 sent a message to process 1.
Process 1 received the message: Greetings from process 0!
也可以在VS中设置调试属性,如
先到这儿。