mpich2下载链接https://www.mpich.org/static/downloads/1.4.1p1/
MPICHP2安装可以参考:win10下安装MPICH2(已经排坑,成功运行)_风流潇洒云中子的博客-CSDN博客
一、在VS2022中的配置:
1.首先新建一个C++控制台程序:
2.在属性中配置
3.配置选择所有配置,在左侧找到C/C++,编辑附加包含目录:
先点击图标新建,然后点击后面那三个点:
选择MPICH2安装所在文件夹中的include文件夹:
默认安装在C盘路径一般是C:\Program Files\MPICH2\include
4.在属性页面,在左侧找到“链接器”,编辑附加库目录:
先点击图标新建,然后点击后面那三个点:
选择MPICH2安装所在文件夹中的lib文件夹:
默认安装在C盘路径一般是C:\Program Files\MPICH2\lib
5.在属性页面,在左侧找到“链接器”,展开“链接器”,点击“输入”,在右侧第一项“附加依赖项”,前面加上“mpi.lib;”,末尾有分号。
最后点击应用,确定,配置完成。
二、命令行测试,演示Hello world:
1.运行控制台程序所生成的初始文件
.
2.在文件资源管理器中打开文件夹:
3.在Debug文件夹中找到.exe可执行文件,debug文件夹在x64里面
4.复制当前文件夹所在路径D:\code_test\test\x64\Debug
5.Win + R输入并打开cmd,先输入cd + MPICH2安装文件夹bin所在路径,MIPCH2 C盘安装bin默认路径为C:\Program Files\MPICH2\bin
输入cd C:\Program Files\MPICH2\bin
6.再输入“mpiexec -n 6 D:\code_test\test\x64\Debug\test”,前面复制过路径D:\code_test\test\x64\Debug,该命令行中的路径处可以用粘贴方式输入 。
“-n 6”是参数,是指6个进程,后面就是路径 + .exe文件名。
配置环境变量在cmd命令中就可以不用每次都cd+路径
此电脑+右键属性+高级系统设置+环境变量+系统变量+PATH+新建+C:\Program Files\MPICH2\bin
三.两个演示程序的实现
1.第一个演示程序代码:
#include <stdio.h>
#include <mpi.h>
int main(int argc, char * argv[])
{
int myrank, nprocs;
// 初始化MPI环境
MPI_Init(&argc, &argv);
// 获取当前进程在通信器MPI_COMM_WORLD中的进程号
MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
printf("Hellow, world! %dth of totalTaskNum = %d\n", myrank, nprocs);
MPI_Finalize();
return 0;
}
2.第二个演示程序代码:
#include <stdio.h>
#include "mpi.h"
#include <windows.h>
int main(int argc, char* argv[])
{
int myrank, nprocs, name_len, flag;
double start_time, end_time;
char host_name[20];
MPI_Initialized(&flag);
//fprintf(stderr, "flag:%d/n", flag);
MPI_Init(0, 0);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
MPI_Get_processor_name(host_name, &name_len);
if (myrank == 0)
{
fprintf(stderr, "Precision of MPI_WTIME(): %f.\n", MPI_Wtick());
fprintf(stderr, "Host Name:%s\n", host_name);
}
start_time = MPI_Wtime();
Sleep(myrank * 3);
end_time = MPI_Wtime();
fprintf(stderr, "flag:%d/nmyrank: %d. I have slept %f seconds.\n", flag, myrank, end_time - start_time);
MPI_Finalize();
return 0;
}
将代码替换上面的控制台应用程序所生成的初始代码,若新建工程后VS2022需要重新配置,参照上面内容。
调用MPI演示程序:
第一个演示程序:
在cmd命令中输入
mpiexec -n 8 D:\code_test\test\x64\Debug\test
mpiexec -n 16 D:\code_test\test\x64\Debug\test
8个进程并行运行,16个进程并行运行,运行次序随机显示。
第二个演示程序:
在cmd命令中输入
mpiexec -n 16 D:\code_test\test\x64\Debug\test
16个进程并行运行,运行次序随机显示。