Ubuntu下MPI集群環境的搭建

2021-08-28 11:10:43 字數 2506 閱讀 3819

我們要並行地跑mpi程式,需要將幾台計算機連在一塊,搭建成乙個集群,使得相互之間的訊息傳遞沒有阻礙,下面以ubuntu系統為例,談mpi集群環境的搭建過程。

ubuntu和mpich的安裝

安裝ssh,設定ssh免密登入

設定ssh免密登入的基本原理就是在我們系統的~/.ssh/資料夾下生成乙個公鑰檔案id_rsa.pub,以及利用公鑰檔案(自己的和別人的),做成乙個私鑰檔案authorized_keys,散發給每個使用者。所謂的公鑰,相當於自家系統的乙個身份標識,是公開的。所謂的私鑰,相當於乙個認證檔案,本質上書寫了允許哪些機器對你進行免密訪問。簡單一點理解,當別人訪問你時,你得拿出你的私鑰,看看別人的公鑰是不是寫在你的私鑰中,如果是,那麼它就可以免密登入。反之,當你訪問別人時,你得拿出你的公鑰,看看是不是獲得了別人的認可。事實上,這個過程還比較曲折,如下圖所示(以a登入b為例):

具體操作如下:

192.168.36.145 node1 

192.168.36.146 node2

cat file1 >> file2,這個命令,是說,把 file1 的內容拿出來,放到 file2裡面,如果file2存在,就加到其末尾;如果不存在,就建立。

cat ~/.ssh/id_rsa.pub.node2 >> ~/.ssh/authorized_keys//公鑰加入到認證檔案 

scp authorized_keys 節點2賬戶名@node2:~/.ssh/authorized_keys//將認證檔案傳回每個子節點

這步如果發現搞錯了,比如別人傳過來的公鑰檔案忘記重新命名,把自己的覆蓋了,而自己的還沒來得及備份,可以刪光了.ssh下的檔案重新做這一步。不需要重新安裝ssh,注意使用ssh-add命令。

設定ssh免密登入可以免去操作中密碼的輸入,避免在命令執行時,因密碼問題造成的通訊障礙。上面是用rsa演算法的公鑰/私鑰對,當然也可以用dsa(對應的檔案是id_dsa,id_dsa.pub)。

設定nfs共享目錄

在執行mpi程式的過程中,我們需要在每個節點上將.c檔案進行編譯鏈結成可執行.o檔案,在這之後,才能在主節點上開啟執行mpi並行程式。這個過程中,首先需要保證每個節點在相同目錄中都生成可執行檔案,我們可以在每個節點上單獨編譯,該操作方式比較繁瑣,為解決該問題,我們可以採用建立共享目錄的方案。所謂的共享目錄,就是設定乙個相同路徑的目錄,任意節點在該目錄下新增檔案、刪除檔案等,都會同步到其他節點上。具體操作如下:

sudo apt-get install nfs-kernel-server

sudo apt-get install portmap或者rpcbind

/home/mpi_share 192.168.36.145(rw,sync,no_root_squash,no_subtree_check) 

/home/mpi_share 192.168.36.146(rw,sync,no_root_squash,no_subtree_check)

注意,這裡的ip位址後是沒有空格的。其中/home/mpi_share是共享目錄,ip位址是所有的客戶端(其它節點)的位址,包括本機的,後面括號中的是許可權,具體含義可上網查閱(rw即讀寫許可權)

每次節點啟動時都需重新執行掛載命令,如果想開機自動掛載:把上述指令sudo mount -t nfs 192.168.36.145:/home/mpi_share /home/mpi_share寫到/etc/rc.local檔案中。

設定nfs共享目錄是為了能在一台機器上作業,如果不執行這一步的話,需要將執行檔案和需要的資料複製到每個節點的相同位置,或者想辦法在每個節點上產生相同的檔案。

mpi程式的執行

node1:4 

node2:4

如果mpiexec使用本機跑mpi**可以執行,而使用上其他節點不行,那麼大概是其他節點出問題了,比如說mpi出問題了,比如說版本問題。可以上其他節點check一下,例如,可以使用mpirun -version檢視mpi版本,盡量保持差距不是太大。言而總之,就是聯機跑程式出問題了,先用mpiexec在單擊上跑,看看行不行,不行說明單台機器上mpi出問題啦,得修。

配置過程中出錯,很有可能是前面的步驟做錯了,多乙個空格少乙個空格,甚至逗號寫成英文句點等等,都會引發不可知的錯誤。這時候,應該靜下心,回到前面去,細細的檢查一番。

MPI集群環境搭建

我在前面兩篇部落格中簡要介紹了為什麼要平行計算以及mpi的一些學習心得,接下來我們正式開始mpi的學習之路。我們知道mpi是分布式記憶體程式設計,所以這篇部落格會詳細講解mpi集群環境的搭建過程。選擇linux版本 這裡我選擇的是ubuntu14.04,其他linux版本如centos fedora...

(二)ubuntu下安裝MPI庫

tar xzvf mpich 3.3.tar.gz,解壓安裝包。cd mpich 3.3 進入到解壓的目錄中。configure prefix usr local mpich 3.3 disable fortran,配置編譯環境,為它選擇乙個安裝路徑,由於不使用fortran語言,故加上disabl...

linux下MPI開發環境搭建

這次搭建開發環境是學習程式設計以來最順利的一次,簡單記錄下來搭建的過程 解壓縮tar zxvf mpich 3.0.4.tar.gz進入到mpich 3.0.4目錄cd mpich 3.0.4.configure prefix usr local mpich disable f77 disable ...