關於在Windows上配置MPI環境的一些經驗

結束了緊張的期末,我又馬上要迎來GRE的洗禮。但是,說好的文章不能不寫。今天想說說我在windows配置MPI環境的一些做法和經驗吧。

其實,MPI還是在Linux或者Unix上使用起來比較方便,在windows上用起來很蛋疼。不過作為非CS的工科生,熟練使用Linux的不多,圖個方便,用windows+Visual Studio土法鍊鋼更適合於我們練習MPI的使用。

所謂的MPI就是Message Passing Interface, 一種進程間通信協議,大概的用途就是建立計算集群進行並行計算,還是很實用的。當前隨著計算需求的不斷加大,單一計算機已經很難滿足時間短精度高的需求,因此計算機科學家開發出了並行計算的方法來解決這一問題。MPI是一種兼容C/C++和Fortan的類似於庫一樣的介面,通過調用MPI就可以實現Cluster裡面機器的通信和並行計算。

我在這篇文章裡面選用的環境是Windows 10 + Visual Studio 2013,然而我並不是很推薦這種配置,最推薦的配置還是採用Visual Studio 2010,因為這個版本有自帶內置的MPI Debugger。網上以前多多少少有一些教程,不過都有一些錯誤之處,我綜合了這些教程並且親自動手做了一遍。感覺還是有一些改進的。

我這裡介紹兩種,MS-MPI和MPICH2的配置,不過實際上是大同小異的。網上的教程有的部分我就不贅述了,大家可以去這個網址

wenku.baidu.com/link?

自己閱讀,我就把我遇到的一些問題和解決辦法寫上。

首先是系統問題,我所使用的是win10系統,不過非常不推薦用win10系統,原因後面會提到。

第一個問題就是下載MPICH庫安裝文件時候。一定不要使用IE瀏覽器或者edge瀏覽器以及任何和IE內核相關的瀏覽器,這幾個瀏覽器會自動將msi文件轉換為man文件,而man文件是UNIX系統下的文件格式,不能在Windows系統下使用,所以最後我使用了Firefox瀏覽器下載成功了msi文件。

第二個問題是我在安裝MPICH庫文件時候遇到的。這個庫文件必須要在管理員許可權下安裝,否則安裝以後是錯誤的沒法跑出來任何結果,但是微軟從win7以後就不再支持對於msi格式的文件使用管理員許可權。這個時候,需要修改註冊表,具體的步驟是這樣的:

1、 Win+R,打開運行,輸入regedit

2、 打開註冊表編輯器(出現用戶賬戶控制時,選擇是)

3、 定位到HKEY_CLASSES_ROOTMsi.Packageshell路徑,右擊shell,新建「runas」項

4、 在runas項右側,更改默認字元串,為「以管理員身份運行」

5、 在shell下,繼續新建「command」項,更改默認字元串為msiexecn/i「%1」(此處嚴格依照格式,否則效果失效)

6、 退出註冊表編輯器,生效。

這樣就可以使用管理員模式運行安裝程序了。

第三個問題是有可能遇到也有可能遇不到,但是很不幸我遇到了。。。我的計算機禁用了很多服務,所以一上來運行msiexec(庫函數的主要界面)不行,所以後來我在服務裡面找到了MSIservicen這個服務,點擊了啟動,就可以用了。

第四個問題是在VS環境裡面調試時候發現的,就是每次我們建立一個project時候都要按照教程裡面所說的重新調一遍配置,這樣才能在並行環境下做。

第五個問題比較要命,是調試程序時候會提示引用的所有函數都無效,這是因為我們必須要調節一下debug器的屬性,把它調節成x64模式,這一條一調節完,馬上就success了。

前五個問題都解決了以後就可以在VS上寫並行程序了,也可以運行,對於我們平時改程序寫程序可以了,但是如果需要通信(真正的模擬模擬時候)要用mpiexec程序,這裡就出現了第六個問題,這個問題是,mpiexec程序默認需要註冊一個可以和本機通信的賬號,這個賬號的用戶名和密碼都必須要和本機一樣,這裡我解決了最後一個問題,在win10系統上也可以完美運行。解決的辦法是需要到控制面板的地方選取切換到本地賬戶,系統會提示說當前的電腦沒有本地賬戶,需要重新創建,系統會自動提供一個默認的本地用戶名,這個用戶名就是計算機默認的具有最高許可權的計算機管理員名,利用這個名字和當前的密碼註冊就可以了。

目前MPICH已經專註於linux系統上的開發,已經不再更新windows系統上的並行庫,最近的版本已經是2009年發布的了。在MPICH的官網上已經提示說需要最新的技術支持的MPI庫是由microsoft開發的MS-MPI,因此我在另外一台win10電腦上安裝了這個庫。

MS-MPI的最新版本是V7版本,需要在microsoft的官網上下載,一共是兩個文件,兩個都需要下載,一個msi格式的文件,另外一個是exe格式的安裝包。這兩個可以無障礙安裝,因此也沒什麼需要特別注意的地方,哦對了,exe格式文件一定要用管理員模式安裝,msi文件不用,直接安裝就可以了。

配置VS環境的時候和上面的MPICH略有不同,包括文件名和格式。默認的頭文件配置文件都是存放在msi文件的安裝路徑之下的。

配置過程之中需要改動的地方是如下幾個圖裡的黑體字部分,這些都是我的計算機之上的安裝路徑。

之所以寫這個是因為目前網路上的教程都是針對於伺服器系統下的HPC server2008的MSMPI配置,所以我自己摸索了一下,總結了出來。

這個圖片之中,

包含目錄裡面添加:C:ProgramnFiles (x86)Microsoft SDKsMPIInclude;

庫目錄的裡面添加:C:ProgramnFiles (x86)Microsoft SDKsMPILibx86;

這個圖片,預處理器定義的地方添加:

MPICH_SKIP_MPICXX;

這個圖片,運行庫的地方修改為:

多線程調試(/MTd)

這裡在附加依賴項裡面添加的是:msmpi.libn

以上就是完整的過程。

最後就是使用MSMPI,這裡的使用是和MPICH不一樣的,MSMPI沒有GUI界面,要用命令行調用,具體的操作方法如下:

· n將編譯得到的 exe文件(debug文件夾下)放在安裝的MS-MPI的bin目錄下(和sdk不在一個安裝包)

· n按住shift鍵在bin文件夾空白處右鍵單擊,選擇命令行窗口

· n輸入 smpd -d 運行MPI進程 (這一步可以不用)

· n輸入 mpiexec -n 4ntest.exe 得到運行結果

以上就是兩種環境完整的使用方法。

寫的很粗淺,還請大家指正。

崔忱

2016-07-03


推薦閱讀:

MPI中如何發送C++對象?

TAG:北京航空航天大学 | MPI | 并行计算 |