利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程

写在前面:
使用VMware新建了两个Ubuntn(20.04LTS),现在要安装MPI,并使用MPD作为进程管理器。

参考文章:

  • Ubuntu虚拟机实现两结点SSH免密码通信 https://blog.csdn.net/u012842255/article/details/72677144

文章目录

  • 1. 安装准备
    • 1.1 基础编译环境的构建
    • 1.2 安装SSH,实现两结点免密通信
      • 准备工作
      • 设置主机名hostname
      • 设置IP主机映射
      • SSH配置
  • 3. 安装MPICH2
  • 4. MPD的安装
  • 5. 最后一步,运行一个MPI程序

1. 安装准备

利用VMwa新建两台Ubuntu虚拟机后(注意,1.新建时选择桥接模式 2.两台Ubuntu的用户名要一致),进入虚拟机

1.1 基础编译环境的构建

为了正常编译MPI代码,需要安装C, C++与Fortran的编译环境。

Ubuntu缺省情况下,并没有提供这些语言的编译环境,因此需要手动安装。如果单独安装这些编译环境非常麻烦。幸运的是,build-essential工具提供了许多与编译相关的软件包,包括gcc/g++/gfortran等编译器、libc6-dev等必要的库与其他工具。于是,我们只需要通过包管理器安装build-essential即可。

apt-get命令的 -y 选项默认安装过程中同意所有的默认选择。
sudo apt-get install -y build-essential

下载与安装完成后,可键入下面的命令观察gcc版本信息。
gcc -v

1.2 安装SSH,实现两结点免密通信

实现功能:

  1. 创建两台Ubuntu VM 20.04 虚拟机,并更改hostname
  2. 做结点的hostname到IP的映射
  3. 并实现SSH通信
  4. 在虚拟机上部署服务,查看应用效果

准备工作

这里创建了两台ubuntu VM 20.04 虚拟机进行操作。

  1. 可以安装两次ubuntu
  2. 也可以VMware通过现有虚拟机克隆新的虚拟机 (图文)https://blog.csdn.net/qq_42774325/article/details/81189033

node1-ubuntu: 192.168.3.126 (注:这个将来作为server端)
node2-ubuntu: 192.168.3.131

利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程_第1张图片
利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程_第2张图片

设置主机名hostname

编辑hostname文件,设置主机名。这里为了识别方便,给两个服务器结点分别设为node1-ubuntu, node2-ubuntu。

$ sudo gedit /etc/hostname

重启虚拟机(或者当前用户logout再login),便可以看到服务器的主机名为node1-ubuntu和node2-ubuntu。
在这里插入图片描述
在这里插入图片描述

设置IP主机映射

编辑hosts文件并设置hosts与IP的映射关系:

udo gedit /etc/hosts

利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程_第3张图片
利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程_第4张图片

ping一下对方看能不能成功
在这里插入图片描述
在这里插入图片描述
能成功说明到目前为止没有问题

SSH配置

这里主要是要各个机器之间能无密码访问,主要用到的就是SSH,因此需要一些设置。

首先,我们需要导出各个节点的公钥和私钥:

$ ssh-keygen -t rsa
在运行过程中,会提示你输入这个输入那个,不用管那么多,直接回车就完了。等运行结束后,进入.ssh目录,你会看到公钥和私钥文件;

$ cd ~/.ssh
$ ls
id_rsa id_rsa.pub
在这里插入图片描述

其中id_rsa就是私钥,id_rsa.pub就是公钥,现在我们需要把各个节点上的公钥都集中发送到一个节点上,来制作授权文件(authorized_keys).

注意:在两台机器必须安装ssh(sudo apt-get install ssh openssh-server)而且必须设置root密码(sudo passwd root),才能远程登录

$ scp ~/.ssh/id_rsa.pub node1-ubuntu:~/.ssh/1.pub
在这里插入图片描述
在这里插入图片描述

在将node2-ubuntu拷贝到node1-ubuntu后,在node1-ubuntu进行如下处理:

$ cp ~/.ssh/id_rsa.pub authorized_keys
$ cat ~/.ssh/1.pub >> authorized_keys
在node1-ubuntu上制作好的authorized_keys拷贝到node2-ubuntu上:(node1-ubuntu使用scp)

$ scp ~/.ssh/authorized_keys node2-ubuntu:~/.ssh/
利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程_第5张图片
在这里插入图片描述

要想让这两台机器无密码登录,所以我们需要更改一下必要的文件的权限(所有节点都要更改):其实只要保证authorized_keys的文件权限为600或者644

$ chmod 755 ~  
$ chmod 755 ~/.ssh  
$ chmod 600 ~/.ssh/authorized_keys  
$ chmod 600 ~/.ssh/id_rsa  
$ chmod 644 ~/.ssh/id_rsa.pub  

至此,SSH配置就完成了。下面检验一下:

在一个主机上面SSH另一个主机:

$ ssh node1-ubuntu利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程_第6张图片

3. 安装MPICH2

软件包中包含了mpich,可以直接通过apt-get下载安装。

sudo apt-get install -y mpich

观察mpicc版本信息
mpicc -v

至此,MPICH3安装完成。
利用两台Ubuntu模拟集群,安装MPICH3手把手图文教程_第7张图片

4. MPD的安装

MPI进程的创建、启动和管理需借助进程管理器(PM)来完成,直观说,PM是MPI环境和操作系统的接口

最新版的mpich简化了运行方式,不再提供mpd开头的命令,只需要一个mpiexec即可启动mpi运行环境,方便了mpi编程 - 来自https://www.cnblogs.com/snake-hand/p/3148152.html

5. 最后一步,运行一个MPI程序

切换到用户家目录
cd ~

利用vim新建一份代码文件
vim mpi.c

vim进入后默认为控制模式。需要按字母i进入编辑模式,写入MPI程序代码。

#include 
#include 
int main(int argc, char **argv)
{ 
    MPI_Init(&argc, &argv);
    printf("Hello World!\n");
    MPI_Finalize();
    return 0;
}

esc键进入控制模式,输入:wq保存并退出文件。

利用 mpicc 命令编译MPI代码文件。mpicc 是编译并链接用C编写的MPI程序的命令。
mpicc mpi.c -o mpi.o

利用 mpirun 命令运行程序。其中 -np 选项指定处理器数目。mpirun 是MPI程序的启动脚本,它可以简化作业的启动程序,并且尽可能把不同特征屏蔽掉,提供给用户一个通用的MPI并行机的概念。
mpirun -np 8 ./mpi.o

你可能感兴趣的:(研究生毕业设计,linux,hpc,ubuntu,MPICH)