📜  创建 MPI 集群

📅  最后修改于: 2022-05-13 01:57:28.867000             🧑  作者: Mango

创建 MPI 集群

在本文中,我们将讨论如何创建 MPI 集群。

要在本地环境中设置集群,应在每个系统中预安装相同版本的OpenMPI

先决条件

  • 操作系统:操作系统为 Ubuntu 18.04。
  • MPI:我们可以使用 OpenMPI 或 MPICH。本教程遵循 OpenMPI(版本 2.1.1)。列出 Open MPI 可用版本
apt list -a openmpi-bin
sudo apt-get install openmpi-bin //To install open-mpi

创建 MPI 集群的步骤

第 1 步:配置主机文件

我们将在计算机之间进行通信,我们不想经常输入 IP 地址。相反,我们可以为我们希望与之通信的网络中的各个节点命名。设备操作系统使用 hosts 文件将主机名映射到 IP 地址。

master中的主机文件示例。

sudo nano /etc/hosts

在该文件中添加这些主机 IP 和工作程序 IP:

#MPI CLUSTERS
172.20.36.120 manager
172.20.36.153 worker1
172.20.36.143 worker2
172.20.36.116 worker3

对于工人()节点

worker2 的主机文件示例

#MPI CLUSTER SETUP
172.20.36.120   manager
172.20.36.143   worker2

第 2 步:创建新用户

我们可以使用现有用户操作集群。最好创建一个新用户以使事情变得更简单。在所有机器上创建具有相同用户名的新用户帐户以保持简单。

添加新用户:

sudo adduser mpiuser

使 mpiuser 成为 sudoer :

sudo usermod -aG sudo mpiuser

第 3 步:设置 SSH

机器将通过 SSH 通过网络进行通信,并通过 NFS 共享数据。对管理器和工作程序节点执行以下过程。

在系统中安装 ssh。

sudo apt­-get install openssh-server

通过以下方式登录新创建的用户

su - mpiuser

导航到 ~/.ssh 文件夹和

ssh-keygen -t rsa
cd .ssh/
cat id_rsa.pub >> authorized_keys
ssh-copy-id worker1

例如:

现在您无需输入密码即可连接到工作节点

ssh worker2

在工作节点中使用

ssh-copy-id manager

第 4 步:设置 NFS

我们在管理器中通过 NFS 共享一个目录,worker 挂载该目录以交换数据。

主节点的 NFS 服务器:

通过以下方式安装所需的软件包

我们需要创建一个将在网络上共享的文件夹。在我们的例子中,我们使用了“云”。要导出云目录,我们需要在 /etc/exports 中创建一个条目

sudo nano /etc/exports

添加

代替 *,我们可以明确给出我们想要共享此文件夹的 IP 地址,或者我们可以使用 *.

例如:

输入后,运行以下命令。

$ exportfs -a

每次对 /etc/exports 进行任何更改时,运行上述命令。

如果上述语句不起作用,请使用 sudo exportfs -a。

如果需要,重新启动 NFS 服务器

> 客户端节点的 NFS-worker

安装所需的包

$ sudo apt-get install nfs-common

在worker的机器上创建一个同名目录——“cloud”

$ mkdir cloud

现在,像这样挂载共享目录

要检查已安装的目录,

$ df -h

这就是它的显示方式

要使挂载永久化,这样您就不必在每次重新启动系统时手动挂载共享目录,您可以在文件系统表中创建一个条目 - 即 /etc/fstab 文件,如下所示:

$ nano /etc/fstab

添加

#MPI CLUSTER SETUP
manager:/home/mpiuser/cloud /home/mpiuser/cloud nfs

第 5 步:运行 MPI 程序

导航到 NFS 共享目录(在我们的例子中是“云”)并在那里创建文件(或者我们可以只粘贴输出文件)。要编译代码,假设它的名称是 mpi_hello.c,我们必须按照下面给出的方式编译它,以生成可执行的 mpi_hello。

$ mpicc -o mpi_hello mpi_hello.c

为了只在主机上运行它,我们做

$ mpirun -np 2 ./mpi_helloBsend 

np – 进程数 = 2

在集群中运行代码

$ mpirun -hostfile my_host ./mpi_hello

在这里, my_host文件确定要运行的 IP 地址和进程数。

示例主机文件:

manager slots=4 max_slots=40
worker1 slots=4 max_slots=40
worker2  max_slots=40
worker3 slots=4 max_slots=40

或者,

$ mpirun -np 5 -hosts worker,localhost ./mpi_hello

注意:主机名也可以替换为 IP 地址。