時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
應(yīng)該說(shuō)MPICH是一個(gè)比較成熟的軟件了,安裝說(shuō)明已經(jīng)很詳細(xì)。我安裝它的時(shí)候就完全是按照其文檔一步一步來(lái)做的。
首先,下載安裝包,我使用的MPICH2,對(duì)MPICH是兼容的,但是注意MPI2的許多功能在MPI1中是不受支持的,而很多機(jī)器裝的仍然是MPI1。
然后,解壓縮,找到README文件,里面有詳細(xì)的安裝說(shuō)明。強(qiáng)烈建議看一遍。
第三,安裝前的準(zhǔn)備。至少你的系統(tǒng)要有程序編譯器,因?yàn)閙pich支持c/c++和fortran,因此,至少要一種編譯器,常用的gcc,用來(lái)編譯c,編譯c++的是gxx或g++,編譯fortran77的是g77,編譯fortran95的是gfortran,這些我全安裝了。不同系統(tǒng)安裝命令不一樣,如ubuntu是sudo apt-get install gcc,而fedora是yum install gcc,在此不多敘述。
除了編譯器,你還要安裝make和automake,姑且稱其為工程管理器吧。雖然,后面只用到了make,但是沒(méi)有automake,make的時(shí)候是會(huì)報(bào)錯(cuò)的。
然后就是python,版本至少是2.2以上。linux中一般是已經(jīng)預(yù)裝了的。
第四,配置。命令行下進(jìn)入當(dāng)前目錄,即cd currentDIR,然后,運(yùn)行./configure。
這個(gè)耗時(shí)比較多,最后如果沒(méi)有提示錯(cuò)誤信息,就說(shuō)明配置成功。如果有,那就對(duì)癥下藥,一般的問(wèn)題是某個(gè)軟件沒(méi)有安裝。配置的時(shí)候,可以有選項(xiàng),如--prefix,這是指定安裝目錄的,如果不指定就會(huì)默認(rèn)安裝到系統(tǒng)目錄,用管理員帳號(hào)安裝即可。
第五,編譯。命令make。這個(gè)耗時(shí)仍然很長(zhǎng),而且可以聽(tīng)到硬盤轉(zhuǎn)動(dòng)的聲音,沒(méi)辦法,編譯安裝軟件就是這個(gè)樣子。不過(guò),除了心痛電腦之外,我倒覺(jué)得挺有感覺(jué)的。同樣,如果沒(méi)有錯(cuò)誤,就可以進(jìn)行下一步了。
第六,安裝。命令是make install。安裝不出錯(cuò),就算OK了。
第七,最后一步,在用戶主目錄下新建一個(gè)文件.mpd.conf,然后加入一句SECRETWORD=pkuwwt,等號(hào)后面的字符串任意寫就好了。這是為運(yùn)行mpd服務(wù)的,可能與安全性有關(guān),其權(quán)限應(yīng)該設(shè)置成-rw-------,即600,命令是chmod 600 .mpd.conf。
實(shí)際上,如果不進(jìn)行這一步,運(yùn)行mpd的時(shí)候也會(huì)提示你的。
下面測(cè)試一下,是否安裝成功,運(yùn)行這樣幾個(gè)命令,mpd,mpirun,mpicc...,如果沒(méi)有特別的錯(cuò)誤,那就是安裝成功了。
第八,現(xiàn)在講一下mpd。mpd是mpi的后臺(tái)程序,因此運(yùn)行的時(shí)候要用mpd &,運(yùn)行一次就夠了。這是運(yùn)行其它mpi命令的前提。實(shí)際上,對(duì)于個(gè)人電腦來(lái)說(shuō),仍然屬于串行計(jì)算機(jī),但mpich會(huì)模擬一個(gè)并行環(huán)境,即用多進(jìn)程分時(shí)來(lái)模擬并行。
第九,現(xiàn)在可以嘗試編寫第一個(gè)mpi程序了。將下面的代碼保存到helloWorld.c中:
/*第一個(gè)mpich程序"HELLO WORLD" */
#include "mpi.h"
#include
#include
int main(int argc,char* argv[]){
int myid, numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);/* 初始化并行環(huán)境 */
MPI_Comm_rank(MPI_COMM_WORLD,&myid);/* 當(dāng)前進(jìn)程的ID號(hào) */
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);/* 進(jìn)程的總數(shù) */
MPI_Get_processor_name(processor_name,&namelen);/* 當(dāng)前處理器的名稱 */
fprintf(stderr,"Hello World! Process %d of %d on %s\n",
myid, numprocs, processor_name);
MPI_Finalize();/* 結(jié)束并行環(huán)境 */
return 0;
}
接下來(lái)編譯并運(yùn)行:
mpd &
mpicc helloWorld.c -o helloWorld
mpirun -np 4 ./helloWorld
其中,mpd是前面講過(guò)的后臺(tái)程序,如果啟動(dòng)過(guò)就不用再啟動(dòng)了。mpicc專用來(lái)編譯c程序,其它有對(duì)應(yīng)的mpicxx,mpif77,mpif90。mpirun是運(yùn)行命令,-np表示有幾個(gè)處理器,也就是說(shuō)進(jìn)程數(shù)需要提前指定。
在程序中,
1)頭文件mpi.h是針對(duì)c語(yǔ)言的,fortran是mpif.h。
?。玻㎝PI_Init和MPI_Finalize是必須調(diào)用的兩個(gè)函數(shù),任何其它mpi函數(shù)都必須在兩者中間,有一個(gè)例外,是查詢當(dāng)前是否已經(jīng)進(jìn)入并行狀態(tài)MPI_Initialized。最好不要在MPI_Finalize后面寫什么代碼,可能會(huì)出現(xiàn)意想不到的錯(cuò)誤。
?。常┰谝粋€(gè)程序中MPI_Init和MPI_Finaiize這兩個(gè)函數(shù)只需要在主程序中調(diào)用一次,中間的子程序可以調(diào)用其它mpi函數(shù)而不需要初始化。
?。矗〤語(yǔ)言中的命名規(guī)則:常數(shù)全大寫,MPI和后面的第一個(gè)字母大寫,其余小寫。
關(guān)鍵詞標(biāo)簽:linux
相關(guān)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號(hào)與MAC地址 dmidecode命令查看內(nèi)存型號(hào) linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載