1、Windows下的安裝配置
我用的參與計(jì)算的系統(tǒng)都是WindowsXP Pro
SP2,安裝的過程沒什么太特別的,一般就是默認(rèn)就可以,只是其中有個(gè)地方要填一個(gè)什么passphrase,上面提示說所有系統(tǒng)都要用相同的passphrase,照做就是了,在所有參與計(jì)算的結(jié)點(diǎn)機(jī)器上都填一樣的passphrase就好了。另外就是需要.net
framework 2的運(yùn)行環(huán)境。
默認(rèn)安裝的位置是C:/Program
Files/MPICH2,下面的bin目錄下是系統(tǒng)配置運(yùn)行需要的程序,為了方便在控制臺使用,可以把C:/Program
Files/MPICH2/bin加到系統(tǒng)的PATH變量中去。Include是頭文件,開發(fā)的時(shí)候用,lib是鏈接程序的時(shí)候用的庫文件。Jumpshot下有個(gè)pdf的文檔,干什么用的可以看看這個(gè)文檔,我沒仔細(xì)看,感覺我暫時(shí)還用不上。Examples下面是一個(gè)樣本程序,就是一個(gè)用MPI計(jì)算圓周率的程序,分別有C,C++和Fortran版,C/C++的應(yīng)該可以用VS2003以上版本打開。同時(shí),安裝程序還會自動向系統(tǒng)注冊一個(gè)服務(wù)MPICH2
Process
Manager,我們從控制面板-管理工具-服務(wù)里就能找到,這是管理運(yùn)行MPI程序的一個(gè)服務(wù),安裝好后就是自動啟動的,所以一般也就不用動它。
安裝完畢后開始菜單-程序中就添加了一個(gè)MPICH2目錄,其中就有上面提到的Jumpshot,另外wmpiconfig.exe是用來配置運(yùn)行環(huán)境的,我在網(wǎng)上有找到的說明都是以前舊版本的,和現(xiàn)在的差別比較大,感覺這新版本用的不爽,沒搞明白這個(gè)程序該咋用,不過好像默認(rèn)狀態(tài)下不改什么就能正常使用,所以也就不管它了。wmpiregister.exe則是用來注冊用戶的,使用MPI之前需要在這個(gè)程序里注冊一個(gè)系統(tǒng)里已經(jīng)存在的用戶,而且這個(gè)用戶必需擁有管理員權(quán)限,擁有運(yùn)行我們安裝了的MPI系統(tǒng)的能力。比如我就在所有參與運(yùn)算的機(jī)器上添加了一個(gè)管理員mpi,密碼也是mpi。
接下來,我們就可以開始試著運(yùn)行一下MPI的程序了。就用examples目錄下面的那個(gè)計(jì)算圓周率的程序。如果要多機(jī)并行計(jì)算的話,就需要在所有機(jī)器上的相同位置放置要運(yùn)行的程序,我的情況就是在所有機(jī)器的C盤下建了一個(gè)mpiexe的目錄,并把cpi.exe拷到所有機(jī)器的這個(gè)目錄下。然后,在其中的某臺機(jī)器上進(jìn)入控制臺(運(yùn)行MPI程序其實(shí)也可以用開始菜單的MPICH2下的wmpiexec.exe,這是個(gè)gui程序,但是我覺得用的不爽,不如直接在控制臺下敲命令來得靈活),敲下命令mpiexec
-hosts 2 192.168.10.142 192.168.0.23
c:/mpiexe/cpi.exe。mpiexec是安裝目錄下bin目錄里的一個(gè)程序,在本文的例子中就是C:/Program
Files/MPICH2/bin/mpiexec.exe,因?yàn)閯偛耪f了,我把這個(gè)地址加入到PATH里了,所以可以在任何地方直接執(zhí)行,它是用來啟動MPI程序的,-hosts參數(shù)說明是啟動多臺機(jī)器并行運(yùn)算,后面跟著的2就是說要在兩臺機(jī)器上執(zhí)行程序,再后面的就是那兩臺機(jī)器的ip地址,其中第一個(gè)就是我啟動程序的機(jī)器,當(dāng)然,這個(gè)地方也可以寫機(jī)器名,只要它的機(jī)器名能被正常的解析就可以,最后面的就是要運(yùn)行的程序,也就是剛才提到的所有機(jī)器都要在相同位置放置的那個(gè)MPI程序。如果只是在本機(jī)運(yùn)行,則命令為mpiexec
–n 2
cpi.exe,?-n表示是在本地運(yùn)行,后面的2表示啟動的進(jìn)程數(shù)。程序運(yùn)行后就會提示讓你輸入一個(gè)數(shù)字intervals,這個(gè)數(shù)字影響計(jì)算的精度,值越大精度越高,當(dāng)然計(jì)算時(shí)間就越長了,然后程序會打印出計(jì)算的結(jié)果和花費(fèi)的時(shí)間。
比如,我使用單機(jī)單進(jìn)程運(yùn)行,intervals設(shè)為99999999,耗時(shí)1.253849秒,而用兩臺機(jī)器雙進(jìn)程則只有0.628954秒,明顯快很多,并行運(yùn)算還是很有效果的。不過,如果我們把intervals改為9999,單機(jī)運(yùn)行只用了0.000279秒,而兩臺機(jī)器卻花了0.001548秒,這是因?yàn)椴⑿羞\(yùn)算過程中,參與運(yùn)算的機(jī)器需要通過網(wǎng)絡(luò)傳遞一些消息,如果計(jì)算量不大的話,花在了這上面的時(shí)間影響會比較明顯,因而反不如單機(jī)版的來得快。
到現(xiàn)在我們的MPI運(yùn)行環(huán)境就基本安裝好了,當(dāng)然,MPI還有很多其他的命令參數(shù),只不過最常用估計(jì)也就這兩條了,其他的用得著的時(shí)候就去查上面提到的文檔,里面有比較詳細(xì)的介紹。另外,如果按照以上的介紹進(jìn)行安裝配置,在運(yùn)行多機(jī)并行MPI程序的時(shí)候卻出現(xiàn)連接錯誤的話,八成是因?yàn)榫W(wǎng)絡(luò)的問題,看看你的防火墻是不是開著,打開相應(yīng)的端口,或者干脆關(guān)掉防火墻就好了。