UTM+Ubuntu配置MPICH并行环境

UTM+Ubuntu配置MPICH并行环境

以下是我的个人信息,由于我不怎么登陆论坛,有什么问题可以给我写邮件:

编辑人:侯明辉

邮件:13204091197@163.com

期待能帮你解决问题

1. 安装UTM for Mac

直接打开UTM.dmg安装即可

2. 下载Ubuntu20.04 (5.15内核)

  1. 下载我发送的:ubuntu-20.04.5-live-server-arm64.iso
  2. 注意:只能下载live-server,不能用desktop
  3. 后续桌面要在虚拟机内完成安装
  4. 把这个镜像放在一个固定的文件夹内,给即将需要创建的虚拟机也设置一个固定的环境

3. 在UTM内安装虚拟机

所有操作按照这篇文档中的完成:https://blog.csdn.net/luzhengyang2077/article/details/129910484

只需要看第四步开始:Ubuntu安装就行,下面就是一大堆图片,看图片操作就行

注意:启动映像类型选择:从iso映像启动

这个一定要下载,默认install OpenSSH server是不开启的

MPICH---每个电脑都需要配置部分:除主机名设置区别

通用设置

我的便携式WiFi名称:E8372-826_5AEF,Gateway4: 192.168.x.x,具体设置和所用路由器有关

需要确保,网络没有AP隔离机制和MAC过滤机制

检查多个宿主机之间是否可以ping通,ip地址都为192.168.0.xxx

Step 1: 更改虚拟机网络设置为桥接,接口为WiFi

Step 2: 更改netplan网络配置文件

由于Mac虚拟机默认生成的netplan配置文件,配置网卡enp0si开启dhcp4: true。无法通过dhclient enp0s1获取到准确的ip,设置静态ip是可行的:

sudo vim /etc/netplan/xxx xxx:是yaml后缀的文件名称

将内容更改:

yaml 复制代码
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s1:
      dhcp4: false
      addresses: [192.168.0.105/24]  
      gateway4: 192.168.0.1          
      nameservers:
        addresses: [8.8.8.8]

应用:sudo netplan apply

检查多个虚拟机之间是否可以ping通,node1目前设置为192.168.0.110

Step 3: 更换镜像源为阿里云镜像

  1. 备份:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

  2. 删除原本内容:sudo rm /etc/apt/sources.list

  3. 编辑:sudo vim /etc/apt/sources.list

    1. i 进行编辑模式

    2. 粘贴内容

      cmd 复制代码
      deb http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu-ports/ focal-proposed main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-proposed main restricted universe multiverse
      
      deb http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse
      deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse
    3. Esc后输入:wq保存并退出

  4. 更新:sudo apt update

Step 4: 切换管理员身份

sudo su

Step 5: 更改虚拟机主机名

更改虚拟机主机名为node1, node2, node3。方便在后续操作中进行编码

  1. vim /etc/hostname:更改命名------最好客户端是node1,服务端为node2-3
  2. 生效:systemctl restart systemd-hostnamed
  3. 重新打开terminal就能看见主机名更改(运行hostname也可以确认)

Step 6: 在hosts文件确认主机名和IP对应关系

  1. vim /etc/hosts

  2. 插入:

    cmd 复制代码
    192.168.0.110 node1
    192.168.0.xxx node2
    192.168.0.xxx node3
  3. 测试:ping node2可以看到成功

Step 7: 配置虚拟机SSH服务

  1. /etc/ssh/sshd-config文件下设置

    cmd 复制代码
    PermintRootLogin yes
    PasswordAuthentication yes
  2. 生效:systemctl restart ssh

  3. 进入根目录下的ssh目录:

    1. 在root目录下执行:cd ~/.ssh (因为ssh目录隐藏,无法通过GUI界面进入)

    2. 在ssh目录下:创建公、私密钥:ssh-keygen -t rsa;会生成三个文件 id_rsa, id_rsa.pub, authorized_keys注意:SSH需要免密登陆,不设置密码,所以所有Enter处全部留空->直接回车

    3. 拷贝至其他虚拟机:以node1为例

      cmd 复制代码
      ssh-copy-id root@node2
      ssh-copy-id root@node3
      1. 其中需要输入密码:由于Ubuntu默认密码为空,需要passwd root
    4. 输入密码时,由于Linux特性,不显示密码

  4. 由于ssh服务是单向的,所以所有电脑之间都需要设置:

    cmd 复制代码
    node1 -> node2
    node1 -> node3
    node2 -> node1
    node2 -> node3
    node3 -> node1
    node3 -> node2
  5. 在所有服务设置完成后再次编辑/etc/ssh/sshd-config文件,设置:

    cmd 复制代码
    PasswordAuthentication no
    PubkeyAuthentication yes
  6. 使用ssh命令测试虚拟机之间能否采用密钥无障碍登陆:

    1. 登陆:ssh node2
    2. 退出:exit

服务端和客户端分别配置部分

服务端:

Step 1: 下载rpcbind和nfs服务

每行分开运行

cmd 复制代码
apt update && apt install -y rpcbind
apt update && apt install nfs-kernel-server

Step 2: 配置nfs服务的共享硬盘

  1. 创建共享文件夹:mkdir /usr/cluster

  2. /etc/exports文件中增加如下几行

    cmd 复制代码
    /usr/cluster 192.168.0.xxx(rw)   # xxx代表node2的ip
    /usr/cluster 192.168.0.xxx(rw)   # xxx代表node3的ip

客户端:

Step 1: 下载rpcbind和nfs服务

每行分开运行

cmd 复制代码
apt update && apt install -y rpcbind
apt update && apt install nfs-common

Step 2: 启动rpcbind服务

cmd 复制代码
systemctl start rpcbind

客户端无需启动nfs服务

Step 3: 建立共享目录

root权限下:建立与服务器相同的共享目录: mkdir /usr/cluster


服务端:请确保上述客户端服务完成启动

Step 1: 启动rpcbind和nfs服务

每行分开运行

cmd 复制代码
systemctl start rpcbind
systemctl start nfs-server

如果nfs-server启动失败,查看日志错误:journalctl -xeu nfs-server.service

到此为止:已向其他两个节点提供/usr/cluster目录的文件共享

Step 2: 检查共享文件

查看: cd /usr/cluster


客户端:所有子节点都需完成

Step 1: 查看服务器已有的共享目录

showmount -e 192.168.0.105

Step 2: 挂载共享目录

mount -t nfs 192.168.0.105:/usr/cluster /usr/cluster

每个电脑都需要配置部分

Step 1: 将宿主机上的mpich-3.4.3.tar.gz上传至虚拟机

将文件上传至root目录下即可

  1. 在宿主机打开terminal

  2. 输入scp [主机文件路径] root@[虚拟机IP]:[虚拟机目标路径]

    1. 示例:scp /Users/houminghui/Downloads/mpich-3.4.3.tar.gz root@192.169.0.105:/root

    2. 由于在同一个网络下,所以一个宿主机可以给三个node进行scp文件传输,即:

      cmd 复制代码
      主机 -> node1
      主机 -> node2
      主机 -> node3

Step 2: 解压文件包

在root目录下(~):

  1. tar xzf ./mpich-3.4.3.tar.gz

  2. ls:新增目录~/mpich-3.4.3

Step 3: 安装C语言编译工具链

sudo apt install -y build-essential

Step 4:安装MPICH

  1. 在新增目录mpich-3.4.3下运行:(每行分开运行)

    cmd 复制代码
    ./configure -with-device=ch4:ofi -disable-fortran
    make # 需要等很长时间
    make install  
  2. 检查安装:mpicc -v 显示:

Step 5: 测试MPI程序

在新增目录mpich-3.4.3下运行:mpirun -np 2 -host node1, node2 ./examples/cpi 显示:

成功!

相关推荐
荟K1 小时前
Trae连接终端ubuntu电脑
ubuntu·trae
i***58671 小时前
【MySQL数据库】Ubuntu下的mysql
数据库·mysql·ubuntu
r***86981 小时前
Nginx解决前端跨域问题
运维·前端·nginx
落日漫游1 小时前
ansible中角色概念
运维·云原生·自动化
_kank_1 小时前
Linux 文件权限深度解析与实战指南
linux
LCG米1 小时前
工业自动化嵌入式开发实战:基于ARM7与μC/OS-II的焊接机控制系统设计与实现
运维·c语言·自动化
Zeku2 小时前
20251125 - 为什么Linux是非实时操作系统?
linux·服务器
sz66cm2 小时前
Linux基础 -- 进程运行状态 之 fatal_signal_pending函数
linux
k***85842 小时前
Nginx中$http_host、$host、$proxy_host的区别
运维·nginx·http