天天看点

Mark:MPICH2 安装遇到的那些坑

Mark:MPICH2 win10下安装遇到的那些坑

    • 【安装教程】
    • 【配置MPICH2】

编辑于2019/9/17 4:16

安装及调试过程参考:https://blog.csdn.net/u013642500/article/details/83549093

这里说几个安装时遇到的问题,和百度许久查到的解决方案,目录就统一用上面这位博主的吧。

【安装教程】

这里我安装的版本是mpich2-1.4-win-x86-64.msi

安装很简单,但是这位博主貌似忽略了一些很重要的问题,都是坑啊…

1、首先说一下,一定要用管理员运行msi安装包,这里就有大问题了,因为我最开始发现右键菜单里没有 “管理员运行” 选项,这里参考一下下面这篇博文,改一下注册表:

链接:https://blog.csdn.net/captainfeng/article/details/80927877

这里为了方便,移植一下,图就不全贴了:

  1. 键盘输入win+r,运行输入regedit,打开注册表编辑器
  2. 找到计算机\HKEY_CLASSES_ROOT\Msi.Package\shell,右键点击shell,选择新建->项,命名为 runas ,选中runas项,双击右侧窗口的“默认”,在弹出的窗口中数值数据处输入“以管理员身份运行”,点击确定,如图。
    Mark:MPICH2 安装遇到的那些坑
  3. 然后右键点击runas,选择新建->项,命名为 command,用同样的方法把 默认 字符串的数值数据修改为 msiexec /i“%1”
  4. 然后就可以关闭注册表编辑器。
  5. 右键msi文件菜单里出现了以管理员身份运行选项,希望你不会遇到windows installer无法打开此安装程序包错误。如果你也和我一样遇到了这种错误,请参考https://blog.csdn.net/captainfeng/article/details/80928162给出的解决方案。

很不巧,我就遇到了这个错误,于是我按着第二篇博文继续设置…

  1. 以 管理员 身份运行cmd
  2. 进入msi文件目录,输入命令msiexec /package 文件名,我的输入:msiexec /package mpich2-1.4-win-x86-64.msi
Mark:MPICH2 安装遇到的那些坑

然后我成功地进入了安装界面!

这里说一下如果你不以管理员权限安装的话,到后面全部安装成功后,测试的时候你会遇到像我一样的问题:

由于目标计算机积极拒绝,无法连接。 (10061)

这个时候只有卸载以管理员打开后重装。

如果你是搜这个进来的,那恭喜你找到解决方案了。

2、安装前我又遇到了问题,缺少.NET Framework 2.0.50727,搜了一下好像这个东西和系统一起自动更新,而我好久没更新系统了…于是我去单独下了一个安装了。(真的不想更新系统)

接下来的安装过程按最前面的教程走就好,这里提两个点,我自己作死的地方…

一个是一定要选“Everyone”,我选了“Just Me”然后失败了,虽然不知道是不是这个原因,但还是规规矩矩地吧…

Mark:MPICH2 安装遇到的那些坑

还有一个就是上面这个图里,默认安装在C盘,就不要改了吧…虽然我也不知道为什么我装到D盘就不行,可能是权限问题?反正不大,就装C盘吧。

【配置MPICH2】

这里也不搬运了,就按照教程来,我还是提一点里面的不足之处。

Mark:MPICH2 安装遇到的那些坑

关于这里的用户名和密码,强烈建议去控制面板开一个新管理员账户。我是用本机的账户注册的,后面测试那个自带例子的时候,一直给我报下面这个错,我都快疯了…查了半天也没查到,后来灵机一动开了个新账户就好了~

Credentials for … rejected connecting to …

Aborting: Unable to connect to

如果你是搜这个进来的,那也恭喜你了!

除此之外,如果你在“smpd -install -phrase behappy”时报错如下:

Unable to remove the previous installation, install failed.

这说明…你没用管理员运行cmd/powershell

后面给VS配环境就没什么好说的了,本文到此结束,如果帮到了你是我的荣幸。还有什么问题可以留言,我要是会的话会及时回复的~

结尾纪念一下本小白的第一个mpi程序

#include <mpi.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

#pragma comment (lib, "mpi.lib") 

int main(int argc, char* argv[])
{
	int myid, numprocs;
	int 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;
}
           
Mark:MPICH2 安装遇到的那些坑