溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Intel的并行計算MPI環(huán)境如何搭建

發(fā)布時間:2021-11-16 16:24:36 來源:億速云 閱讀:325 作者:小新 欄目:系統(tǒng)運維

這篇文章給大家分享的是有關基于Intel的并行計算MPI環(huán)境如何搭建的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

MPI是一個庫,而不是一門語言。許多人認為,MPI就是一種并行語言,這是不準確的。但是,按照并行語言的分類,可以把FORTRAN+MPI或C+MPI看作是一種在原來串行語言基礎之上擴展后得到的,并行語言MPI庫可以被FORTRAN77/C/Fortran90/C++調用,從語法上說,它遵守所有對庫函數(shù)/過程的調用規(guī)則,和一般的函數(shù)/過程沒有什么區(qū)別。

MPI已在IBM PC機上、MS Windows上、所有主要的Unix工作站上和所有主流的并行機上得到實現(xiàn)。使用MPI作消息傳遞的C或Fortran并行程序可不加改變地運行在IBM PC、MS Windows、Unix工作站、以及各種并行機上。

高性能并行計算計算機技術由于具有巨大的數(shù)值計算和數(shù)據(jù)處理能力,在國內外受到高度重視,他在科學研究、工程技術以及軍事等方面的應用,已經(jīng)取得巨大的成就。并行計算就是通過把一個大的計算問題分解成許多彼此獨立且有相關的子問題,然后把他們散列到各個節(jié)點機上并行執(zhí)行從而最終解決問題的一種方法。

一、安裝環(huán)境

CentOS 6.4 最小化圖形安裝,保證每個節(jié)點的sshd服務能正常啟動,確保防火墻與selinux已經(jīng)關閉,所需軟件: Intel_ Fortran,Intel_C++,Intel_ MPI

二、設置通過主機名無密碼登錄

1、通過主機名訪問

為每個節(jié)點分配IP地址,IP地址***連續(xù)分配,配置/etc/hosts文件,實現(xiàn)IP地址和機器的對應解析。可以在所有機器上使用同樣的/etc/hosts 文件,它包含如下形式的內容:

10.12.190.183 dell 10.12.190.187 lenovo ……

2、計算節(jié)點之間的無密碼訪問

假設 A(110.12.190.183)為客戶機器,B(10.12.190.187)為目標機,加密方式選 rsa|dsa均可以,默認rsa。

#ssh-keygen -t rsa   #使用rsa加密,默認就是rsa加密

顯示信息如下,遇到系統(tǒng)詢問直接回車即可。

Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: b3:8e:87:44:71:67:81:06:d2:51:01:a4:f8:74:78:fd root@kvm.local The key's randomart image is: +--[ RSA 2048]----+ |    .o==oo..     | |   . +o.+ o      | |  . + o+.o       | |   o o.  .       | |    ..  S E      | |      .  o       | |     . ..        | |      .o.        | |      ...        | +-----------------+

將會生成密鑰文件和私鑰文件 id_rsa,id_rsa.pub。

將A的~/.ssh/ id_rsa.pub 文件復制到B機器的 .ssh 目錄, 并 cat id_rsa.pub >> ~/.ssh/authorized_keys,同樣方法,把B的~/.ssh/ id_rsa.pub也復制到A機器上。

設置authorized_keys權限:

#chmod 600 authorized_keys

設置.ssh目錄權限:

#chmod 700 -R .ssh

如果使用ssh-copy-id命令,可以更方便把本地主機的公鑰復制到遠程主機的authorized_keys文件上,ssh-copy-id 也會給遠程主機的用戶主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設置合適的權限。

#ssh-copy-id –i ~/.ssh/id_rsa.pub 10.12.190.187

完成以上操作之后,用戶從本地機器到遠程機器就不需要用密碼了,文件和目錄的權限千萬別設置成chmod 777.這個權限太大了,不安全,數(shù)字簽名也不支持。

也可以用一臺機器生成ssh-keygen,將.ssh目錄連同id_rsa,authorized_keys一起復制到每個節(jié)點上去。檢查是否可以直接(不需要密碼,詢問時輸入yes回車)登錄其他節(jié)點:

ssh node1 ssh node2 ssh node3 ssh node4

如能任意兩節(jié)點之間不需要密碼登錄其他節(jié)點則表明配置成功。

三、NFS文件系統(tǒng)的配置

方法示例如下(假設NFS 服務器IP 為10.12.190.183,配置需在root用戶下完成):

服務器端配置方法(下面的配置只在主節(jié)點進行):

1. /etc/exports 文件配置

在文件/etc/exports 中增加以下幾行:

/home/cluster 10.12.190.183(rw,sync,no_root_squash) /home/cluster 10.12.190.185(rw,sync,no_root_squash) /home/cluster 10.12.190.187(rw,sync,no_root_squash)

這幾行文字表明NFS 服務器向IP 地址為10.12.190.183,10.12.190.185,10.12.190.185 的三個節(jié)點共享其/home/cluster目錄,并使這些節(jié)點具有可讀寫權限。如有更多的節(jié)點可按此方法填寫。

接著執(zhí)行如下命令,啟動端口映射:

# /etc/rc.d/init.d/rpcbind start   (注:在***內核中NFS守護進程改為rpcbind,如是舊內核啟動NFS守護進程的命令是 service portmapstart)

***執(zhí)行如下命令啟動NFS 服務,此時NFS 會激活守護進程,然后就開始監(jiān)聽 Client 端的請求:

# /etc/rc.d/init.d/nfs start # chkconfig nfs on

也可以重新啟動Linux 服務器,自動啟動NFS 服務。

2、客戶端配置方法(需要在所有子節(jié)點做同樣的配置)

建立與服務器相同的共享目錄用于共享服務器文件:

mkdir /usr/cluster

查看服務器已有的共享目錄(這步可省略)

showmount -e 10.12.190.183

通過這條命令我們可以查看IP地址為10.12.190.183的服務器可以共享的目錄情況。

掛載共享目錄:

mount -t nfs 10.12.190.183:/home/cluster /home/cluster

這一命令將 NFS 服務器10.12.190.183上的共享目錄掛載到本地/home/cluster 目錄下。我們也可在所有子節(jié)點的/etc/fstab 文件中輸入以下的代碼,使文件系統(tǒng)在啟動時實現(xiàn)自動掛載NFS:

10.12.190.183:/home/cluster /home/cluster nfs defaults 0 0

至此我們已可以實現(xiàn)對 NFS 共享目錄的本地訪問,所有子節(jié)點的/home/cluster 文件夾都共享了NFS 服務器的同名文件夾的內容,我們可以像訪問本地文件一樣訪問共享文件。用戶存放并行程序的文件夾都可以實現(xiàn)NFS 共享,從而避免了每次向各節(jié)點發(fā)送程序副本。

四、安裝Intel_C++

#tar xvzf l_ccompxe_2013.1.117.tgz # cd composer_xe_2013.1.117 #./install.sh

設置環(huán)境變量:

#vi /etc/profile

添加一行source /opt/intel/composer_xe_2013.1.117/bin/iccvars.sh intel64

測試環(huán)境變量設置:

#which icc

如果能看到/opt/intel/composer_xe_2013.1.117/bin/intel64/icc,那么就安裝設置成功了。

五、安裝Intel_Fortran編譯器

#tar fxvz l_fcompxe_2013.1.117.tgz # cd l_fcompxe_2013.1.117 #./install.sh

設置環(huán)境變量:

#vi /etc/profile

添加一行source /opt/intel/composer_xe_2013.1.117/bin/compilervars.sh intel64。

測試環(huán)境變量設置:

#which ifort

如果能看到/opt/intel/composer_xe_2013.1.117/bin/intel64/ifort ,那么就安裝設置成功了。

六、配置安裝Intel_MPI

1、安裝與設置

安裝前一定要將Fortran編譯器安裝好,c++放到***沒有影響,其它版本MPI就需要先將前2個軟件安裝好,設置好環(huán)境變量,***在安裝MPI程序,如開源的mpich。

#tar fxvz l_mpi_p_4.1.3.045.tgz #cd l_mpi_p_4.1.3.045 #./install.sh

設置環(huán)境變量:

#vi /etc/profile

添加一行source /opt/intel/impi/4.1.3.045/bin64/mpivars.sh。

測試環(huán)境變量設置:

#which mpd #which mpicc #which mpiexec #which mpirun

如果能看到所有命令的路徑說明,安裝設置成功了。

修改/etc/mpd.conf文件,內容為secretword=myword 或MPD_SECRETWORD=myword:

vi /etc/mpd.conf

設置文件讀取權限為只有自己能讀寫:

chmod 600 /etc/mpd.conf

非root用戶在家目錄創(chuàng)建內容相同的.mpd.conf,每個節(jié)點都要添加:

創(chuàng)建主機名稱集合文件/root/mpd.hosts:

#vi mpd.hosts

文件內容如下:

dell    #主機名1 ,(主機名:數(shù)字 可以指定節(jié)點開啟的進程數(shù) dell:2) lenovo  #主機名2

在協(xié)處理器上***運行MPI應用之前,請將MPI庫復制到該系統(tǒng)的所有節(jié)點以下目錄。

# scp /opt/intel/impi/4.1.3.045/mic/bin/* dell:/bin/ mpiexec                      100%  1061KB   1.0MB/s  00:00 pmi_proxy                    100%  871KB   871.4KB/s  00:00 …… #scp /opt/intel/impi/4.1.3.045/mic/lib/* dell:/lib64/ libmpi.so.4.1                  100%  4391KB   4.3MB/s   00:00 libmpigf.so.4.1                 100%  321KB   320.8KB/s  00:00 libmpigc4.so.4.1               100%  175KB    175.2KB/s  00:00 …… # scp /opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/mic/* dell:/lib64/ libimf.so                      100%  2516KB   2.5MB/s   00:01 libsvml.so                     100%  4985KB   4.9MB/s   00:01 libintlc.so.5                    100%  128KB   128.1KB/s   00:00 ……

以上是intel官方文檔的操作步驟,個人感覺比較麻煩,沒有采用這種方法。

http://software.intel.com/en-us/articles/using-the-intel-mpi-library-on-intel-xeon-phi-coprocessor-systems

我使用的是將/opt設置成nfs共享,然后掛載到每個節(jié)點下的相同目錄,設置一下環(huán)境變量就可以了。服務器端一定要將Intel_ Fortran,Intel_C++,Intel_ MPI全部安裝上,各個節(jié)點只需要MPI就可以了,服務器端將程序編譯好后,分發(fā)給各個節(jié)點,然后這個程序就可以通過MPI接口,進行并行運算了。

2、MPI使用方法

MPI采用mpd服務來對進程進行管理,使用mpiexec或mpirun運行mpi程序。

啟動單機上的mpd服務:

# mpd &

查看mpd服務:

# mpdtrace  查看主機名# mpdtrace -l  查看主機名和端口號

關閉mpd進程管理:

#mpdallexit

測試mpi程序,編譯mpi文件(-o Hello 指定輸出文件的名稱):

#mpicc -o Hello Hello.c   //生成可執(zhí)行文文件Hello #mpicc cpi.c           //默認輸出文件名a.out #mpdrun -np 4 ./a.out   //-n或-np啟動的進程數(shù) #mpiexec [-h or -help or --help]   //查看幫助文件

啟動集群上的mpd服務:

# mpdboot -n process-num -f mpd.hosts

啟動 process-num個進程,mpd.hosts是前面創(chuàng)建的文件。

mpi默認是使用ssh來登陸集群里的其他機器,也可以使用rsh來登陸集群里的其他機器來啟動mpd服務。

只要使用-rsh選項就可以指定用ssh或rsh:

#mpdboot --rsh=rsh -n process-num -f hostfile 或#mpdboot --rsh=ssh -n process-num -f hostfile

關閉mpd服務:

#mpdallexit

使用MPIEXEC|MPIRUN來執(zhí)行mpi任務:

#mpiexec -np 4 ./a.out    //a.out所有節(jié)點在相同的路徑下,需都有a.out文件 或mpiexec -machinefile filename -np 4 ./a.out

http://blog.sina.com.cn/s/blog_605f5b4f0100sw3j.html

運行結果如下:

[root@kvm ~]# mpiexec -np 4 ./a.out Process 0 of 4 is on dell Process 2 of 4 is on dell Process 3 of 4 is on kvm.local Process 1 of 4 is on kvm.local pi is approximately 3.1415926544231274, Error is 0.0000000008333343 wall clock time = 0.037788

注意:以上的環(huán)境變量設置好后都需要重啟,或者使用source命令重新執(zhí)行一下文件。

感謝各位的閱讀!關于“基于Intel的并行計算MPI環(huán)境如何搭建”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI