MPI集群环境搭建

本文详细介绍了在Ubuntu14.04环境下搭建MPI集群的过程,包括选择Linux版本、安装MPICH、实现SSH免密登录、建立和挂载NFS共享目录,以及在集群环境中执行MPI程序的步骤。通过这些步骤,确保了多个节点之间的并行计算能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在前面两篇博客中简要介绍了为什么要并行计算以及MPI的一些学习心得,接下来我们正式开始MPI的学习之路。我们知道MPI是分布式内存编程,所以这篇博客会详细讲解MPI集群环境的搭建过程。

一、准备工作

  1. 选择Linux版本:这里我选择的是Ubuntu14.04,其他Linux版本如CentOS、Fedora等操作类似,一些命令和配置文件路径会有一些差别。
  2. 物理服务器集群和虚拟节点选择:我是用VMware创建多个虚拟机来进行集群模拟,后期我会把环境部署到实验室的服务器集群上,基本操作应该是一样的,如果有需要注意的地方,我会在后续的博客中进行说明。
  3. 在VMware中安装Ubuntu14.04,实验模拟安装两个节点即可。建议初始设置时用户名取一样的,因为后面每个虚拟机节点之间免密登录时需要保证用户名一致,这样可以避免出现未知的问题。

二、安装MPICH

到MPICH官网下载源码包,解压、配置、编译、安装即可。
我的安装文件
上图是我VMware的一些文件夹的命名,受电脑配置限制,我创建了两个节点,如图左边所示,节点名称是node1和node2。我将mpich-3.2.tar.gz压缩包放在了mpi_install路径下,mpi_share是节点之间的共享目录,后面会说明。
首先,解压mpich-3.2.tar.gz:tar -zxvf ./mpich-3.2.tar.gz。
解压后的文件夹中有个README文件,打开后有详细的安装步骤,这里我简要说明:

  • 为避免错误,在安装MPICH之前,分别执行以下命令:sudo apt-get update(保证安装的源最新)、sudo apt-get install gcc(安装gcc编译器,用于编译C语言)、sudo apt-get install g++(安装g++编译器,用于编译C++)、sudo apt-get install gfortran(安装gfortran编译器,用于编译fortran语言)。
  • 进入源码包解压后的路径,执行如下命令:cat /etc/shells
    (1)如果显示为:/bin/sh 和 /bin/ba
### 如何在 Ubuntu 上搭建 MPI 集群 #### 准备工作 对于集群中的每台机器,建议通过虚拟机复制方式快速部署相同配置的操作环境,这能节省大量时间并减少错误发生概率[^1]。 #### 安装必要的软件包 确保所有节点上的操作系统是最新的,并且安装了所需的开发工具和库。可以通过以下命令完成基本的更新与安装操作: ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential libopenmpi-dev openmpi-bin openssh-server nfs-kernel-server nfs-common -y ``` #### 设置无密码 SSH 登录 为了让各个节点之间能够顺利通信,在主节点上生成SSH密钥对并向其他节点分发公钥,从而实现免交互登录功能。 #### 编译安装 PMIx 库 (针对 Slurm 使用场景) 当计划利用 Slurm 调度器管理作业时,则需事先编译好 PMIx 库以便后续支持 srun 启动 MPI 程序[^2]。 #### 测试 MPI 运行状况 编写简单的测试程序验证集群是否正常运作。下面是一个典型的 C++ 版本 Hello World 实例: ```cpp #include <mpi.h> #include <iostream> int main(int argc, char *argv[]) { int rank; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); std::cout << "Hello world from process " << rank << "\n"; MPI_Finalize(); } ``` 保存上述代码至文件 `hello_mpi.cpp` 并执行如下指令进行编译运行: ```bash mpicxx hello_mpi.cpp -o hello_mpi.out mpirun --hostfile hosts.txt ./hello_mpi.out ``` 其中 `hosts.txt` 文件应包含参与计算的所有主机名列表。 #### 自动化挂载远程存储空间(可选) 为了方便数据交换以及资源共享,可以在 `/etc/fstab` 中加入相应条目使得每次开机都能自动连接到指定位置下的网络磁盘资源[^3]。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值