MPICH2在VS2022安装和使用

1、下载mpich2-1.4.1p1-win-x86-64.msi

       链接Index of /static/downloads/1.4.1p1

2、以管理员身份安装。

      这一步是是第一个坑。大多数帖子都提到了一定要以管理员身份安装,且win10中无法直接通过右键选择以管理员身份安装.msi文件。

      大多数帖子给的方法是改注册表,参考链接是以管理员身份运行msi文件_shellpackage.msi-CSDN博客但是!!!我试了很多遍我的电脑就是不行

      所以推荐命令行里以管理员身份运行msi文件。方法如下:

             以管理员身份运行cmd

             进入msi文件目录,输入命令msiexec /package 文件名,我的输入:msiexec /package mpich2-1.4.1p1-win-x86-64.msi

             (参考 命令行里以管理员身份运行msi文件_msi文件以管理员运行-CSDN博客

3、进入安装过程

 (第二个坑)在process manager setup页面输入电脑登录密码,点击next。一定要输入电脑登陆密码不要用behappy这个默认短语,这一点很少有人提,但我就是改了这一点后终于成功了。

 

4、安装完成以后配置MPICH,首先找到wmpiregister,这里的account和password输入windows账户里具有超级管理员权限的账户名和密码,看到password encrypted into the Registry 则表明注册成功,如图

 

至此应该已经大功告成。接下来测试一下。

5、最后可以运行wmpiexec,可以选择MPICH2的examples文件夹下的exe文件,运行时选择run in an seperate window,然后点击excute执行,若能成功运行,则表明安装成功。

在弹出的窗口填上执行步数。

 

一、在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个进程并行运行,运行次序随机显示。

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值