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