Linux下搭建mpi集群(ubuntu下用虚拟机测试)
一 建立SSH連接(無(wú)密碼登陸)
1 SSH連接的簡(jiǎn)單介紹
SSH 為 Secure Shell 的縮寫,中文翻譯為安全外殼協(xié)議,建立在應(yīng)用層,是一種遠(yuǎn)程連接安全協(xié)議。傳統(tǒng)的telnet,pop,ftp都能夠?qū)崿F(xiàn)類似的功能,但是安全性上來(lái)說(shuō)不足,因?yàn)樗麄兌际敲魑膫鬏?#xff0c;而SSH是密文傳輸,能夠有效防止DNS欺騙,網(wǎng)絡(luò)信息的攔截等等。
2 為什么要建立SSH連接
????? 因?yàn)槲医⒓旱哪康木褪菫榱烁咝阅艿挠?jì)算,這里我用了MPI,采用的是計(jì)算機(jī)之間的相互通信,所以必然涉及到計(jì)算機(jī)的訪問登陸問題,所以我們建立集群計(jì)算機(jī)之間的SSH連接讓他們能夠無(wú)密碼登陸,保證通信的快速性。
3具體的建立SSH連接步驟(都在虛擬機(jī)中操作)
1配置網(wǎng)卡
在ubuntu上可以通過圖形界面進(jìn)行設(shè)置,也可以通過指令來(lái)修改,大致模式如下:
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
sudo /etc/init.d/networking restart//重啟服務(wù)
就是簡(jiǎn)單的修改配置文件來(lái)修改參數(shù),最后一定要重啟網(wǎng)絡(luò)服務(wù)。按照此方式多配置幾臺(tái)虛擬機(jī),然后測(cè)試通信。你可以通過自動(dòng)獲取的方式獲取物理機(jī)在虛擬區(qū)域的IP,然后用作其他虛擬機(jī)的默認(rèn)網(wǎng)關(guān)。接下來(lái)就是修改主機(jī)名
sudo vi /etc/hostname //修改本機(jī)的主機(jī)名
sudo?vi?/etc/hosts //地址解析,其實(shí)就是集群中所有主機(jī)的主機(jī)名與IP地址的對(duì)應(yīng)
例如? node0 192.168.1.100
????? ? node1 192.168.1.101
host中的內(nèi)容模式(主機(jī)名:端口 IP)SSH的默認(rèn)端口是22
?
?
2創(chuàng)建互信的SSH連接
1)安裝SSH,指令如下
sudo apt-get install ssh
2)首先理解下SSH的無(wú)密碼連接機(jī)制,其實(shí)就是利用公鑰和密鑰來(lái)實(shí)現(xiàn)互相的無(wú)密碼訪問,所以接下來(lái)就是對(duì)公鑰密鑰的配置。
第一步 ssh-keygen -t rsa -P ' '//首先生成公鑰和密鑰對(duì),這里的' '表示密碼為空,這樣就在你的個(gè)人用戶目錄下生成了.SSH文件夾,里面有id_rsa和id_rsa.pub,分別是公鑰和密鑰。
第二步 接下來(lái)就是關(guān)鍵的一步,就是公鑰的傳送。公鑰需要給另一個(gè)能讓你訪問的機(jī)器下,因?yàn)楣€能夠識(shí)別用戶是誰(shuí)。復(fù)制方法采用的是scp復(fù)制,這是一種遠(yuǎn)程復(fù)制方法需要密碼的輔助。
??? scp .ssh/id_rsa.pub? 目標(biāo)主機(jī)名:/home/chenlb/id_rsa.pub解釋下為什么是機(jī)器名,因?yàn)槟阍趆osts文件中已經(jīng)定義了目標(biāo)主機(jī)名與ip的對(duì)應(yīng)關(guān)系,所以可以運(yùn)用主機(jī)名,這是遠(yuǎn)程傳輸,自然開始需要密碼。
??????? 第三步 目標(biāo)主機(jī)把從本機(jī)復(fù)制的id_rsa.pub(公鑰)添加到.ssh/authorzied_keys文件里(所有的目標(biāo)機(jī)器都必須裝SSH協(xié)議),指令如下所示:cat id_rsa.pub >> .ssh/authorized_keys(這是目標(biāo)機(jī)上的)。然后需要設(shè)置authorized_keys的權(quán)限,因?yàn)檫@個(gè)驗(yàn)證文件也需要給訪問的機(jī)器權(quán)限才能完成之后的驗(yàn)證:chmod 600 .ssh/authorized_keys。
??? 這樣就完成對(duì)目標(biāo)主機(jī)的無(wú)密碼訪問,但是互相訪問就需要在調(diào)換一下位置再設(shè)置一下,步驟重復(fù)。
?
再次我說(shuō)下對(duì)稱加密解密的使用原理以及機(jī)制(RSA),我們就簡(jiǎn)單的用A主機(jī)和B主機(jī)來(lái)描述。A主機(jī)將公鑰給了B主機(jī),這就意味著A主機(jī)用自己的密鑰訪問B主機(jī)時(shí),B主機(jī)可以用A主機(jī)的公鑰來(lái)解密,從而知道是A訪問自己,所以允許A訪問。
二 創(chuàng)建NFS(網(wǎng)絡(luò)文件系統(tǒng))
由于mpi需要在每個(gè)機(jī)器中都安裝,如果每個(gè)機(jī)器都裝一次那樣就太麻煩了,所以我們創(chuàng)建一個(gè)共享的網(wǎng)絡(luò)文件系統(tǒng),這樣就可以修改一次全局修改,非常方便的使用。
1 安裝NFS sudo apt-get install nfs-kernel-server nfs-common
2 在用戶主目錄下創(chuàng)建共享文件夾 mkdir sharedarea
3 修改sharedarea的所屬權(quán)限,剛開始屬于root,所以需要改為用戶的
? sudo chown 用戶名:用戶名 / home/用戶名/sharedarea
4 設(shè)置下能訪問的網(wǎng)段,即編輯/etc/exports文件。
? sudo vi /etc/exports
? 添加/home/abc/cluster *(rw,sync,no_root_squash)
5 重啟服務(wù)
? sudo /etc/init.d/rpcbind restart
? sudo /etc/init.d/nfs-kernel-server restart
6 其他機(jī)器掛載
? 首先其他機(jī)器得先安裝NFS,和第一步一樣,然后創(chuàng)建相同的文件夾,掛載命令如下:sudo?mount?-t?nfs?第一個(gè)的主機(jī)名:/home/用戶名/sharedarea sharedarea
?
切記,如果系統(tǒng)重啟后則需要重新掛載否則產(chǎn)生變化就無(wú)法同步了,切記切記
三 安裝MPI
1 首先來(lái)一個(gè) sudo apt-get install mpich,不管啥都有了。然后去http://www.mpich.org/download下載一個(gè)穩(wěn)定的linux版本的mpich,解壓到共享文件夾。(tar?xfz?mpich-3.2.tar.gz 生成mpich-3.2文件夾)
2 由于默認(rèn)安裝在/usr/local/bin,所以需要改變一下安裝目錄
1)./configure ?--prefix=/home/love/cluster/mpich3.1 --disable-f77 --disable-fc
2)make
3)make install
3修改環(huán)境變量
這里肯定修改的是用戶的環(huán)境變量
sudo vi .bashrc
?在.bashrc
文件的末尾添加:
PATH=/home/用戶名/sharedarea/mpich3.2/bin:$PATH
export PATH?
然后source?.bashrc?重新刷新環(huán)境變量
這樣MPI就在集群上完美安裝。
四 編譯運(yùn)行
到了最后一步了,其實(shí)也是檢驗(yàn)?zāi)闶欠癯晒Φ囊徊搅?#xff0c;這里我們用到兩個(gè)命令,mpicc和mpiexec,其實(shí)很簡(jiǎn)單
mpicc -g xx.c -o xx
mpiexec -np x(這是線程數(shù)) -f y(這是和hosts類似的文件,里面放著集群的文件名,注意所有的文件地址)? ./目標(biāo)文件名
接下來(lái)就大功告成了,享受一下集群的樂趣吧!
?
轉(zhuǎn)載于:https://www.cnblogs.com/sunliwang/p/6544495.html
總結(jié)
以上是生活随笔為你收集整理的Linux下搭建mpi集群(ubuntu下用虚拟机测试)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js实现图片轮播效果
- 下一篇: weblogic10.3.6配置node