天天看點

Windows7+VS2012下配置MPI環境一、安裝MPICH2二、一勞永逸修改Include和lib的方法三、First MPI Program四、MPI并行計算五、可能的錯誤及其他資料

MPI(MessagePassing Interface)标準消息傳遞界面,主要是用于并行計算,或者用現在很流行的名詞,大資料計算、分布式計算系統,其具體實作方式一般是使用MPICH。新瓶裝舊酒而已,下面主要說說在Win7系統下VS2012中搭建MPI環境和編寫MPI程式。

一、安裝MPICH2

mpich2-1.4.1p1-win-ia32.msi下載下傳位址

http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.4.1p1/mpich2-1.4.1p1-win-ia32.msi

安裝好了後需注冊一個使用者,我猜測因為是分布式計算,肯定會涉及到很多台主機,故需要一個标志來識别,注冊完了之後可以自行測試一下。(可參見http://blog.csdn.net/morewindows/article/details/6823436的1.1部分)

二、一勞永逸修改Include和lib的方法

參考http://www.cnblogs.com/hwangbae/archive/2012/06/24/2560463.html,個人覺得方法二比較好,因為方案一隻能對建立的程式有效,但是該部落客使用了兩個版本的VS,是以需要建立兩個檔案夾(不過為了保險起見,還是給這種檔案做個備份比較好,或者記錄為了什麼而修改過什麼,不然重裝個vs也挺蛋疼的)。針對隻有VS2012的同學可以使用解決方案一中編輯default.vcxproj的方法編輯Microsoft.Cpp.Win32.user.props即可。這裡我使用了方案一,至于為什麼,因為最開始看的它照着弄的,之後就懶得改了。。。

三、First MPI Program

這裡我使用的是http://blog.csdn.net/morewindows/article/details/6823436的代碼,比較懶。。。(打了這麼多廣告,是不是該收點廣告費呢,哈哈哈哈)。在VS中成功Build,Run了一下會一閃而過,在return 0前面加上getchar()之後發現隻有一行,當然是因為你隻有一台機子,沒法并行。是以需要多台電腦協同運作MPI,具體方法我沒事,也可以檢視本小節提及網址裡的第三部分。這裡我想在一台機子上用多線程模拟出多個主機,畢竟寫個代碼要好幾台電腦也很麻煩,更别說怎麼去弄那第二台了。

四、MPI并行計算

想要多線程運作寫出來的程式,有兩種辦法,一種是找到安裝目錄下的wmpiexec.exe,然後跟第一步中所說的測試程式一樣運作,這樣。。。太弱智了,而且明顯不符合Coder的逼格,當然是要用敲指令才更好了!!可以在C槽建立一個sbin(名字和位址随意),然後把mpiexec.exe拷到這個檔案夾,再新增path環境變量,後面加上C:\sbin,注意要跟前面的有分号隔開。照理說應該可以直接将mpiexec.exe的原始路徑新增到path中,不過在我這兒試了很多次都不行。

照上面說的做完了之後,打開cmd,直接敲mpiexec就會出現一些類似于幫助菜單的東西。我所知道的運作你所寫代碼的exe程式的指令是:

mpiexec -n 4“exe檔案路徑”(這裡路徑要包括你所想run程式的名字+.exe,那個4是你想開的線程數),暫時就寫這麼多了,一晚上兩個小時就是折騰這東西然後寫篇日志了,也不知道傳說中的寫技術部落格可以增長姿勢是真的了。

第一次寫部落格,第一次寫MPI,哎,不歸路啊不歸路。

五、可能的錯誤及其他資料

查資料的過程中看到一個部落客出現了下面的錯誤:

ERROR:unable to read the cmd header on the pmi context, Error = -1

所幸我沒出現過這麼蛋疼的事情,這裡貼出他的網站,也給自己備用。接下來就是一些比較好的資料網站,留一下。

1. MPICH2簡單的安裝配置總結(Linux環境下)

http://blog.csdn.net/cleverysm/article/details/1638651

2.mpich2使用者手冊

http://www.tuicool.com/articles/U3YfM3

3. 分布式并行庫MPICH2安裝(VMware10, ubuntu14.04)

http://jacoxu.com/?p=936

繼續閱讀