天天看點

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 安裝遇到的那些坑