mpilinux
① 如何在vmware配置linux下的mpi
虛擬機CentOS中配置MPI多節點並行計算完整版,這是一個新手教程,從一個空白的CentOS到能正常運行的基礎環境,盡量詳細寫了每個步驟
我的環境如下:
宿主機:Windows 10 Pro
虛擬機:VMware 12 + CentOS 6.6
一、 虛擬機網路配置實現多節點互訪
硬體資源有限,所以我只開了兩台虛擬機均為 Centos 6.6。
1.修改網卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 將其中內容修改如下:
DEVICE=eth0
HWADDR=00:0C:29:A0:3A:CA
TYPE=Ethernet
UUID=bf583745-f834-451c-890c-39821a590543
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.207.128
NETMASK=255.255.255.0
DNS1=192.168.207.2
將每一台虛擬機都如此配置,IPADDR是ip地址,不要重復
2.修改網關及主機名
/etc/sysconfig/network
ETWORKING=yes
HOSTNAME=node1
NTPSERVERARGS=iburst
GATEWAY=192.168.207.2
一些文章中提到還需要修改VMware的設置(關閉本地DHCP服務),實際上,Centos 中設置好後就不需要動VMware的設置了
二、 在虛擬機中添加同名用戶
在不同節點中需要有同名的用戶以方便免密碼SSH連接
node1和node2中以root用戶執行下列命令
# useradd mpiuser
三、 實現免密碼SSH登陸
當前節點為node1,用戶為mpiuser,工作目錄為 ~ 家目錄
1.生成 SSH 私鑰對
$ ssh-keygen -t rsa 一路回車就好
2.進入 .ssh 目錄
$ cd ./.ssh
3.生成authorized_keys文件
$ cp id_rsa.pub authorized_keys
4.回到mpiuser的家目錄
$ cd ~
5.建立本身的信任連接
$ ssh node1
6.設置 node2
$ ssh-keygen -t rsa 生成.ssh文件夾
$ scp node1:~/.ssh/* ./ 拷貝node1上的.ssh文件夾到node2
# scp node1:/etc/hosts /etc/hosts 拷貝node1上的hosts文件到node2,可能需要root許可權
$ ssh node2
$ ssh node1
7.如果還有其他節點,設置方法同node2
設置成功後,在任意節點執行SSH連接其他節點都不需要密碼,注意必需每個節點都有mpiuser這個用戶,之所以使用一個普通用戶,是為了避免root執行mpi程序時遇到風險。在一些mpi實現中,也不允許以root用戶執行。
四、 配置MPI運行環境
1. 下載 mpich
官方網站 http://www.mpich.org 下載其中的mpich-3.2.tar.gz
2. 解壓並進入目錄
# tar xvf mpich-3.2.tar.gz
# cd mpich-3.2
# ./configure –prefix=/usr/local/mpich
# make
# make install
3. 設置環境變數,修改 /etc/profile ,加入下面幾行代碼
PATH=$PATH:/usr/local/mpich/bin
MANPATH=$MANPATH:/usr/local/mpich/man
export PATH MANPATH
4. 使剛剛的修改生效
# source /etc/profile
5. mpi多節點配置
新建一個配置文件
# touch /usr/local/mpich/servers
修改其中內容為:
node1:2 #在node1上運行兩個進程
node2:2
如果有多個節點繼續往下寫
五、 單節點測試
將源碼包中的 examples 拷貝到 mpich 的安裝目錄
# cp -r ./examples /usr/local/mpich/
用示常式序進行測試
$ mpirun -np 4 /usr/local/mpich/examples/cpi
Process 1 of 4 is on node1
Process 0 of 4 is on node1
Process 3 of 4 is on node1
Process 2 of 4 is on node1
pi is approximately 3.1415926544231239, Error is 0.0000000008333307
wall clock time = 0.081049
得到如圖的回顯結果證明mpich的運行環境正常
六、 多節點測試
$ mpiexec -np 4 -f /usr/local/mpich/servers /usr/local/mpich/examples/cpi
Process 1 of 4 is on node1
Process 0 of 4 is on node1
Process 3 of 4 is on node2
Process 2 of 4 is on node2
pi is approximately 3.1415926544231239, Error is 0.0000000008333307
wall clock time = 0.139722
如上,在兩個節點上分別運行了兩個進程,配置過程到此結束
② 怎麼在linux上找到mpi
1.4.1p1.tar.gz
2.然後解壓,假設解壓後的目錄是/home/nh/Downloads/mpich2-1.4.1p1
3.nh@55ubuntu :~$ gcc --version
4.nh@55ubuntu:~$ g++ --version
5.nh@55ubuntu:~$ python --version
確認以上都已經安裝了.
6.nh@55ubuntu:~$cd /home/nh/Downloads/mpich2-1.4.1p1
7.nh@55ubuntu:~/Downloads/mpich2-1.4.1p1$ ./configure --prefix /home/nh/Downloads/mpich2
8.nh@55ubuntu:~/Downloads/mpich2-1.4.1p1$ make
9.nh@55ubuntu:~/Downloads/mpich2-1.4.1p1$ make install
10.設置環境變數
添加下面這行到/etc/profile文件的最後,然後重新起動系統使環境變數永久生效。
export PATH=/home/nh/Downloads/mpich2/bin:$PATH
11. 添加mpd配置文件
在當前用戶的home目錄下面新建立一個名為".mpd.conf"的配置文件,文件的內容如下應該包括下面這行:
secretword=<secretword>
比如:
nh@55ubuntu:~$ more .mpd.conf
secretword=nh
<secretword>是你的密鑰,是每台機器進行連接並用建立並行環境互相信任的基礎。
接下來,需要設置該文件的存取許可權,這步是必須的,否則在後面的運行中會報錯。
nh@55ubuntu:$ sudo chmod 600 .mpd.conf
nh@55ubuntu:$ ls -ll .mpd.conf
-rw------- 1 zzm 1003 22 2010-01-07 13:54 .mpd.conf
12.在/home/nh/下新建一個文件名為hello.c,源代碼如下:
#include <mpi.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
int npes, myrank;
MPI_Init(argc, argv);
MPI_Comm_size(MPI_COMM_WORLD, npes);
MPI_Comm_rank(MPI_COMM_WORLD, myrank);
printf("From process %d out of %d, Hello World!\n", myrank, npes);
MPI_Finalize();
}
13.nh@55ubuntu:~/Downloads/mpich2/bin$ ./mpicc -o /home/nh/hello /home/nh/hello.c
14.nh@55ubuntu:~/Downloads/mpich2/bin$ ./mpirun -np 2 /home/nh/hello
From process 0 out of 2, Hello World!
From process 1 out of 2, Hello World!
③ LINUX系統下,MPI 環境變數配置,實驗室用的集群系統,我按網頁上說的配置了環境變數,
Linux系統命令及其使用詳解 :
http://wenku..com/view/d21cf78a6529647d27285212.html
Linux菜鳥專用資料:
http://wenku..com/view/a7d9bf4cf7ec4afe04a1df18.html
④ linux(Ubuntu)中如何查看MPI、GNU的路徑和庫
which命令的作用是在PATH變數指定的路徑中搜索某個系統命令的位置並且返回第一個搜索結果。也就是說使用which命令就可以看到某個系統命令是否存在以及執行的到底是哪一個位置的命令
⑤ 在linux下搭建intel-mpi,可以在個人筆記本上實驗么
一.配置安裝MPI
1.先在官網下載openmpi安裝包(Linux版):下載MPI
2.然後通過一下命令安裝:
解壓:
tar -zxvf openmpi-1.6.4.tar.gz
進入到解壓文件目錄下:
cd openmpi-1.6.4
執行:(在這一步之前,要確保已經安裝g++,沒有安裝可以輸入命令:sudo apt-get install g++進行安裝)
./configure
安裝所有文件:(這一步會花幾分鍾的時間,慢慢等待)
make all install
為/etc/profile文件添加庫共享路徑,(默認情況下,MPI的庫文件在/usr/local/lib目錄下),執行sudo geidt /etc/profile,然後在其中加入一行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
執行下面命令,使配置的文件有效:
source /etc/profile
到這里MPI就已經配置完成了!
接下來測試一下:
測試成功!!!(如果出現:「cannont open shared object file…」的情況,需要重新編譯source /etc/profile)
二、安裝eclipse,下載eclipse。下載完畢,直接解壓運行即可。
三、給eclipse裝PTP插件
打開eclipse>help>install new software>>addhttp://download.eclipse.org/releases/juno,然後輸入需要安裝的PTP……
安裝完成!
⑥ linux下如何配置MPI,如何在MPI環境下編譯fortran並行程序
先安裝
MPICH
然後可以用
mpif77,這個其實是調用
gfortran
等編譯器的腳本而已
⑦ Linux下mpi多線程編程的編譯問題
看設置了,我的反正可以運行。\r\n不過 X 裡面運行字元界面的程序有個問題就是 X 一般不會顯示終端窗口,所以除非你的程序是窗口程序,不然什麼顯示都沒有就運行完成退出了。 \r\n--------------\r\n有的 linux 有一個\\「在終端中運行」的項目,...
⑧ linux mpi.h一般在哪
linux mpi.h一般在哪?MPI(Message Passing Interface),是一種必須和其它程序語言一起使用的一個介面。mpi.h就是這個介面庫的頭文件,需要下載並安裝這個第三方庫,目前主要使用的就是Mpich。1.首先進行解壓文件openmpi-1.6.2.tar.gz。 2.然後執行cd openmpi-1.6.2 3.接著執行./configure,一段時間之後發現缺少g++編譯器,所以執行sudo apt-get install g++ 4.執行完之後再執行一次./configure就可以配置成功, 5.執行sudo make all in。Linux下MPI環境的安裝配置及MPI程序的編譯運行,step by step。
下載MPI安裝包
去這里下載一個適合的安裝包。
安裝包的解壓
安裝包所在的目錄下,運行tar xzvf mpich-x.x.x.tgz。
切換到解壓出來的包目錄下
cd mpich-x.x.x
configure配置編譯環境,我這里為它選擇了一個安裝路徑。
⑨ 在Linux下進行mpi程序的編譯時,出現錯誤提示關於鏈接的
缺少了庫文件。
在鏈接選項中增加mpi相對應的庫文件,或者在代碼中增加
#pragma comment (lib, "yourmpi.lib")
就可以了。
⑩ 在Linux進行C語言編程的時候,程序里使用了mpi或者openmp或者都使用了該怎麼進行編譯執行謝謝
mpi或者openmp
這個,你指的是庫?
如果是的話,編譯時,加上鏈接庫的編譯選項就可以。
比如 gcc -hello.c -o hello -lm -lxml -L/usr/local/lib -lts
-lm 鏈接了math庫
-lxml鏈接了xml庫
-L/usr/local/lib -lts 鏈接了ts庫,ts庫存在目錄/usr/local/lib中