Linux系统下的MPI并行计算的环境配置

绪论:MPI并行运算的实现原理是将多台虚拟机通过nfs共享文件联系在一起,通过在共享目录里创建编译mpi程序,来实现在所有虚拟机内都有mpi的可执行文件。(本人配置环境是在ubuntu系统下进行的)

1.创建ssh信任连接,实现免密钥互相连接

1.在每个虚拟机节点上都生成自己的ssh公钥,使用ssh-keygen命令实现。

2.检查公钥是否生成成功,使用ls ~/.ssh命令,查看到有id_rsa和id_rsa.pub就说明生成成功

3.复制公钥,在每个虚拟机节点中都复制其他所有节点的公钥,使用ssh-copy-id  user@ip命令,user就是登录虚拟机的用户名,ip就是其他需要被复制公钥的节点的ip。注意:在复制公钥之前要确保被复制的节点的公钥是生成成功的。(如果提前配置了hosts文件,可以将ip替换成@加主机名)

4.配置hosts文件,将每个节点的hosts文件都添加其他节点的信息(ip和主机名),hosts文件的绝对路径为/etc/hosts。

5.结果验证:对每个节点执行:(这里我只验证一个节点作为实例)

ssh node01命令(node01为要登陆的节点的主机名,必须配置好hosts文件,不然只能使用目标节点的ip)

2.安装MPICH 3.4

下载链接:https://www.mpich.org/static/downloads/3.4/mpich-3.4.tar.gz

1.解压缩文件包

1.1获取mpich压缩包,wget  https://www.mpich.org/static/downloads/3.4/mpich-3.4.tar.gz

1.2通过tar工具解压压缩包,使用sudo tar -zxvf mpich-3.4.tar.gz命令

2.创建安装目录mpich,使用sudo mkdir  /home/jsj17039/mpich命令(后面为创建的文件的位置,即绝对路经)

3.进入mpich的解压目录,cd mpich-3.4

4.设置安装目录

4.1.配置gcc环境,下载gcc,sudo apt-get install gcc。(如果下载失败就更新数据源,使用sudo apt-get update命令)

4.2.设置mpich的安装目录

sudo ./configure --prefix=/home/jsj17039/mpich --with-device=ch4:ofi --disable-fortran --disable-cxx 2>&1 | tee c.txt

在configure --prefix=后面的目录就是之前创建的mpich安装目录的绝对路径,配置成功出现completed单词。

5.make编译

5.1.在make编译之前没下载make就先通过sudo apt-get install make来下载make

5.1.进行make编译,sudo make(此处大概要等十几分钟),如果编译失败就再次设置一次mpich的安装目录。

6.安装,sudo make install

7.退回到root目录,cd ~

8.通过编译 .bashrc文件修改环境变量, sudo vim .bashrc进入.bashrc文件中

添加内容为:(最好在最后添加)

# User specific aliases and functions

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

PATH="$PATH:/home/jsj17039/mpich"(自己的mpich安装目录的绝对路径)

#Source global definitions

if [ -f /etc/bashrc ]; then

                    ./etc/bashrc

fi

9.测试环境变量设置是否配置成功

sudo source ~/.bashrc

sudo which mpicc

sudo which mpiexec

sudo which mpirun

10.修改/etc/mpd.conf文件,内容为secretword=myword

sudo vim /etc/mpd.conf

修改文件的读写权限sudo chmod 600 /etc/mpd.conf

11.创建主机名称集合文件/root/mpd.hosts

sudo vim /root/mpd.hosts

文件内容为:

node01

node02

node03

node04

3.配置nfs(nfs系统可以实现文件之间的共享)

1.选择一个节点作为主节点,在主节点和其他节点都下载安装NFS程序

sudo apt-get install nfs-kernel-server

2.配置nfs和fslock随系统启动而启动

sudo systemctl enable nfs-server

sudo systemctl enable rpcbind

3.重启nfs服务,sudo systemctl restart nfs-server

sudo systemctl restart rpcbind

4.创建共享文件home,并修改其文件权限,注意要区别这个文件和系统本身的home文件的区别

sudo mkdir home(创建文件)

sudo chmod 777 home(修改文件权限为所有人都有读写修改和执行的权限)

5.编辑文件/etc/exports,在其中加入:

/home/jsj17039/home    172.17.32.229/24(rw,async,no_root_squash,no_subtree_check)

/home/jsj17039/mpich   172.17.32.229/24(rw,async,no_root_squash,no_subtree_check)

注意:jsj17039为我的用户名,请修改为自己登录linux的用户的用户名,home文件为刚才创建的共享文件home。mipch就是安装的mpich-3.4的安装目录

修改完成之后执行sudo exportfs -r 命令使文件配置生效。

6.检查当前的挂载文件是否设置成功

sudo shoemount  -e(服务机的ip)

便完成了共享文件的输出。

7.配置其他几个节点,首先登录到其他客户机的节点,在/etc/fstab文件中加入:

node01:/home/jsj17039/home       /home/jsj17039/home        nfs defaults 0 0

node01: /home/jsj17039/mpich        /home/jsj17039/mpich     nfs defaults 0 0

注意:node01为主节点即服务机的主机名(可以使用主节点的IP代替),后面的目录为主节点的共享目录(之前配置好的主节点共享目录)

8.运行挂载命令实现挂载,sudo mount -a,完成之后可以通过在每个子节点上用 df 命令来验证挂载是否成功,返回结果如下:

出现你在主节点配置的共享文件挂载点就说明挂载成功。

4.环境测试

/*hello.c*/

#include <stdio.h>

#include "mpi.h"

int main( int argc, char *argv[] )

{

    int rank;

    int size;

    MPI_Init( 0, 0 );

    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    MPI_Comm_size(MPI_COMM_WORLD, &size);

    printf( "Hello world from process %d of %d\n", rank, size );

    MPI_Finalize();

    return 0;

}

1.进入共享文件夹home中创建一个 .c 文件,将代码粘贴进去。

cd /home/jsj17039/home(进入共享文件夹)

sudo touch hello.c(创建文件)

2.将创建好的文件进行编译

sudo mipcc  /home/jsj17039/home/hello.c  -o  /home/jsj17039/home/hello

生成可执行文件hello

使用sudo mpirun -n 4 -f  mpd.hosts /home/jsj17039/home/hello运行(-n 后面的是开启几个进程, -f是显示运行的节点,mpd.hoost文件就是之前创建的主机名集合文件)

成功运行之后环境就配置完成了。

                                        

(注:能力有限,有错误可以指出。)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄学编程hh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值