MPI集群搭建


高性能計算     ubantu下集群搭建

參考博客:https://blog.csdn.net/u012304016/article/details/52423738(尊重別人的知識產權),一些細節地方我做了標注

廢話不多說,直接開始講解

==============================================================

 

1.安裝MPICH

在安裝mpich之前,為了避免在安裝中出錯,需要安裝gcc、g++以及gfortran三個編譯器。

 

首先更新apt-get的安裝版本,從而保證安裝的資源最新:

 

sudo apt-get update

 

分別安裝gcc、g++以及gfortran:

 

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install gfortran

==============================================================

下面開始mpich的安裝,mpich源碼的包,我上傳到了百度雲里面了,有需要自取。

 

鏈接:https://pan.baidu.com/s/1Fd7vvs3LBpDtCKw4x6IpkQ
提取碼:a3ad

 

壓縮包解壓后,將解壓出來的文件夾,在主目錄下創建一個新的文件夾,(可命名為“MPICH”)注意兩台電腦上面這一文件夾的名字必須一樣,路徑也必須一樣

 

進入解壓后的文件夾里面,

 

接下來的安裝過程根據shell的版本而異,首先檢查shell版本:

 

cat /etc/shells

 

(1)

如果顯示為:/bin/sh 和 /bin/bash,則配置、編譯和安裝命令分別為:(大部分都是這個)

配置:


./configure 2>&1 | tee c.txt


編譯:


make 2>&1 | tee m.txt (如果報錯,需要加一個sudo)

 

安裝:

 

make install |& tee mi.txt ((如果報錯,需要加一個sudo))

 

(2)

如果顯示為:/bin/csh 和 /bin/tcsh,則配置、編譯和安裝命令分別為:

配置:


./configure |& tee c.txt

 

編譯:


make |& tee m.txt

 

安裝:

 

make install |& tee mi.txt

 

(安裝結束后,用which mpicc和which mpiexec檢查安裝是否成功,如果有這兩個可執行程序的路徑顯示,則表示安裝成功。)

 

2. 安裝ssh並且配置多機運行環境

安裝ssh:

 

sudo apt-get install ssh

 

!!!接下來需要兩台機器在同一個局域網下面

 

(1)接下來正式配置多機運行環境,首先修改兩台開發板各自的主機名稱:

 

sudo gedit /etc/hostname

 

在打開的文件中分別輸入主機名保存即可,我設置的兩台主機名稱分別為:hang-pc1 和hang-pc2。設置完成后重啟機器。

 

(2)分別配置兩台機器的hosts文件,在此之前先通過ip addr show命令查看兩台機器eth0的IP地址,我的IP地址為:

 

然后分別將兩台機器的ip地址放在對應的位置(下面統一標注IP1和IP2)

 

hang-pc1 : IP1

hang-pc2 : IP2

 

然后修改hosts文件:

 

sudo gedit /etc/hosts

 

根據以上查得的IP地址,在兩台機器的hosts文件中均輸入以下內容並保存:(IP1 和主機名中間的間隔是用"Tab"鍵按出來的)

 

IP1 hang-pc1 

 

IP2 hang-pc2

 

(3)

接下來通過配置ssh使兩台機器可以無需密碼互相訪問。

 

在hang-pc1上(hang-pc2同理)通過ssh-keygen指令生產公鑰和私鑰:

 

ssh-keygen -t rsa 

 

注:再輸入過程中需要輸入參數,一直按回車即可。

 

結束后,cd到 ~/.ssh目錄,ls一下即可看到產生的公鑰(id_rsa.pub)和私鑰(id_rsa):

 

cd ~/.ssh

 

ls

 

接下來通過兩台機器的公鑰(id_rsa.pub)來制作授權文件(authorized_keys)。


(4)接下來將hang-pc2的公鑰傳送到hang-pc1中(並重命名為rsa_from_pc2.pub),來制作授權文件。在hang-pc2的終端輸入:

 

scp ~/.ssh/id_rsa.pub hang-pc1:~/.ssh/rsa_from_pc2.pub (這個命令中hang-pc1前面需要加上你的用戶名和@,比如我的就要加上lays@)

 

注:在傳輸期間需要輸入hang-pc1的密碼,輸入之前設置好的密碼即可。

 

傳輸完成后,在hang-pc1的~/.ssh/id_rsa.pub目錄下ls一下即可看到傳入的文件rsa_from_pc2.pub。

 

將hang-pc1的公鑰另復制一份並且重命名為authorized_keys,在hang-pc1的~/.ssh/目錄下輸入:

 

cp ~/.ssh/id_rsa.pub authorized_keys

 

將rsa_from_pc2.pub添加到authorized_keys從而完成authorized_keys的制作:

 

cat ~/.ssh/rsa_from_pc2.pub >> authorized_keys

 

然后將在hang-pc1上制作好的authorized_keys發送一份給hang-pc2:

 

scp ~/.ssh/authorized_keys hang-pc2:~/.ssh/ (這個命令中hang-pc2前面需要加上你的用戶名和@)

 

用ssh_add命令將私鑰也添加進來(hang-pc1和hang-pc2均要添加):

 

ssh-add ~/.ssh/id_rsa

 

最后,為了要讓兩台機器之間無密碼訪問,需要設置公鑰、私鑰和授權文件的權限(兩台機器都要設置):

 

chmod 755 ~

chmod 755 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

chmod 600 ~/.ssh/id_rsa

chmod 644 ~/.ssh/id_rsa.pub

 

權限設置完畢后,兩台機器就可以不需密碼互相訪問了,在hang-pc1上輸入指令:

 

ssh hang-pc2

 

可以看到,hang-pc1不需輸入密碼就能訪問到hang-pc2。通過exit指令返回到hang-pc1。

3.多機之間運行MPI程序

首先,在home根目錄(也可以是其他目錄)下新建一個文件:mpi_config_file。

 

mpi_config_file是在運行MPI程序時參考的配置文件,它顯式注明每台機器各有幾個CPU核。

 

cd /home


touch mpi_config_file

 

接下來在每台機器上查看各自的CPU核數:

 

lscpu

 

編輯mpi_config_file:

 

sudo gedit mpi_config_file

 

因為我和隊友的CPU核數分別為2和4,所以在mpi_config_file中輸入一下內容並保存:

 

hang-pc1:2
hang-pc2:4

接下來就可以找一個MPI程序在多機之間運行了 


在我們之前解壓的文件夾下的examples目錄下就有現成的可執行程序:cpi,我們運行它:

(在這之前,為了保證兩台機器上面的文件夾的名字和路徑都是一樣,就將這個文件夾都移動到/home目錄下

比如我就是 sudo cp -r /home/lays/MPICH /home   就將這個復制一下到了/home目錄下

然后進入到文件夾examples目錄下打開終端,運行
mpiexec -n 8 -f /home/mpi_config_file ./cpi


注: 參數-n 8表示改程序分將拆分為8個並行過程執行
參數-f /home/mpi_config_file 表示運行過程參考配置文件mpi_config_file

屏幕上顯示運行結果:

Process 4 of 8 is on hang-pc1
Process 5 of 8 is on hang-pc1
Process 2 of 8 is on hang-pc2
Process 0 of 8 is on hang-pc1
Process 3 of 8 is on hang-pc2
Process 6 of 8 is on hang-pc2
Process 7 of 8 is on hang-pc1
Process 1 of 8 is on hang-pc2


表示運行成功。(顯示進程在不同的主機上運行)

 

 

====================================================================================================================================

再次說明一下  

參考博客:https://blog.csdn.net/u012304016/article/details/52423738(尊重別人的知識產權)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM