MPI集群搭建

实验二 MPI集群搭建

0实验目的

搭建mpi高性能集群

1 环境说明

1 virtualBox 6.1

2 ubuntu16 server版虚拟机两台

3 gcc 5 mpich 3.2

2 集群搭建

桥接模式

确保两台虚拟机连同一个局域网,最好是一个手机热点。

gcc

mpi基于gcc,先查看是否有gcc

gcc -v

如果没有

sudo apt install gcc

假设出现以下现象:安装过程卡住不动

0% [Connecting to us.archive.ubuntu.com (2001:67c:1562::14)] - Install not happening

这是虚拟机没有适配ipv6的地址,做如下修改:

sudo vim /etc/gai.conf

找到 这一行,然后取消注释。

#precedence ::ffff:0:0/96 100

:wq! --强制保存退出
:q!  --不保存退出

修改hosts文件

使用指令查看主机的ip地址

ip add

两台机器都要修改:

sudo vim /etc/hosts

两台机器的文件中像这样写上彼此的ip地址和用户名。

下面的指令很多都是基于用户名,记得看着修改。

创建mpiuser

两台主机分别使用

sudo useradd -m  mpiuser

修改mpiuserd权限:

sudo vim /etc/sudoers

设置ssh免密登录

下载shh(一般都带的)

sudo apt-get install openssh-server

进入新用户(两台都进)

su – mpiuser

进入之后注意查看当前目录下是不是当前用户文件夹

cd ~

创建密钥(两台都创建)

ssh-keygen -t rsa

一直按回车,执行命令后,主目录下会有该文件夹

拷贝密钥到其他主机:(改自己的用户名,自己对自己也要)(两台机器一共执行四遍)

ssh-copy-id -i /home/mpiuser/.ssh/id_rsa.pub slave1

执行完之后,可以打开查看对应的ssh文件夹,里面的这个文件保存了对应的密钥。

防止终端窗口关闭了ssh-agent也被关闭,设置无密码登录。

eval `ssh-agent`
ssh-add ~/.ssh/id_dsa

最后验证是否可以通过以下指令直接不用密码登录另一台机器:

ssh slave1

注意:看清自己目前电脑登录的用户,如果是其他主机,进行之后操作时记得logout退出,否则可能死机

设置NFS

(1)如果你的主机是manager:

sudo apt-get install nfs-kernel-server

在mpiuser的主文件夹下,(也就是/home/mpiuser/下)

mkdir cloud

修改配置文件

sudo vim /etc/exports

添加一行:

/home/mpiuser/cloud *(rw,sync,no_root_squash,no_subtree_check)

生效:

sudo exportfs -a 

(2)如果你的主机是worker:

sudo apt-get install nfs-common

在mpiuser下建立新文件夹:

mkdir cloud

挂载mpiuser的cloud文件夹(注意修改名字):

sudo mount -t nfs manager:/home/mpiuser/cloud ~/cloud

查看是否成功:

df –h

运行

在设置为manager的主机下的cloud的目录中,添加hello.c文件:

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    // Initialize the MPI environment
    MPI_Init(NULL, NULL);

    // Get the number of processes
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    // Get the rank of the process
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

    // Get the name of the processor
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    int name_len;
    MPI_Get_processor_name(processor_name, &name_len);

    // Print off a hello world message
    printf("Hello world from processor %s, rank %d out of %d processors\n",
           processor_name, world_rank, world_size);

    // Finalize the MPI environment.
    MPI_Finalize();
}

编译:

mpicc -o hello hello.c

执行:(修改用户名)

mpirun -np 6 -hosts manager,worker ./hello

结果:

3实验感想

问题一:

两台虚拟机不是同时间安装的,有一台不小心安装了ubuntu18.04的阿里源,另一台是16.04的阿里云,导致了mpich和gcc版本不相同,被坑惨了之后,才发现,更换回来就正确了。

而且16.04的ubuntu软件源好像默认不开启ipv6,导致下下载是会卡住,

修改以下配置:

sudo vim /etc/gai.conf

找到这一行,取消注释。

#precedence ::ffff:0:0/96 100

问题二:

ssh生成的dsa级别的密钥及时双方的authorized_keys文件中都存在了对方的密钥,而且免密登录已经打开,但是使用

ssh manager

时还是不能免密,还是需要登录密码。

之后改成rsa级别的密钥就可以了,具体也不知道什么原因。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值