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
這裡為了友善,移植一下,圖就不全貼了:
- 鍵盤輸入win+r,運作輸入regedit,打開系統資料庫編輯器
- 找到計算機\HKEY_CLASSES_ROOT\Msi.Package\shell,右鍵點選shell,選擇建立->項,命名為 runas ,選中runas項,輕按兩下右側視窗的“預設”,在彈出的視窗中數值資料處輸入“以管理者身份運作”,點選确定,如圖。
- 然後右鍵點選runas,選擇建立->項,命名為 command,用同樣的方法把 預設 字元串的數值資料修改為 msiexec /i“%1”
- 然後就可以關閉系統資料庫編輯器。
- 右鍵msi檔案菜單裡出現了以管理者身份運作選項,希望你不會遇到windows installer無法打開此安裝程式包錯誤。如果你也和我一樣遇到了這種錯誤,請參考https://blog.csdn.net/captainfeng/article/details/80928162給出的解決方案。
很不巧,我就遇到了這個錯誤,于是我按着第二篇博文繼續設定…
- 以 管理者 身份運作cmd
- 進入msi檔案目錄,輸入指令msiexec /package 檔案名,我的輸入:msiexec /package mpich2-1.4-win-x86-64.msi
然後我成功地進入了安裝界面!
這裡說一下如果你不以管理者權限安裝的話,到後面全部安裝成功後,測試的時候你會遇到像我一樣的問題:
由于目标計算機積極拒絕,無法連接配接。 (10061)
這個時候隻有解除安裝以管理者打開後重裝。
如果你是搜這個進來的,那恭喜你找到解決方案了。
2、安裝前我又遇到了問題,缺少.NET Framework 2.0.50727,搜了一下好像這個東西和系統一起自動更新,而我好久沒更新系統了…于是我去單獨下了一個安裝了。(真的不想更新系統)
接下來的安裝過程按最前面的教程走就好,這裡提兩個點,我自己作死的地方…
一個是一定要選“Everyone”,我選了“Just Me”然後失敗了,雖然不知道是不是這個原因,但還是規規矩矩地吧…
還有一個就是上面這個圖裡,預設安裝在C槽,就不要改了吧…雖然我也不知道為什麼我裝到D盤就不行,可能是權限問題?反正不大,就裝C槽吧。
【配置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;
}