在Ubuntu上安装和配置MPI环境的详细步骤

 更新时间:2025年05月29日 10:13:13   作者:一步步走  
在 Ubuntu 上配置 MPI(消息传递接口)环境,常用的是 OpenMPI,它是一个高效、常用的开源 MPI 实现,以下是如何在 Ubuntu 上安装和配置 MPI 环境的详细步骤,需要的朋友可以参考下

1. 安装 OpenMPI

首先,确保系统是最新的,并安装 OpenMPI。

  • 更新软件包索引
sudo apt update
  • 安装 OpenMPI: 使用 Ubuntu 的包管理器安装 OpenMPI:
sudo apt install openmpi-bin openmpi-common libopenmpi-dev
  • 这个命令会安装 OpenMPI 的二进制文件、公共文件和开发库(libopenmpi-dev 提供了编译 MPI 程序所需的头文件和库文件)。

  • 检查安装是否成功: 安装完成后,检查 OpenMPI 是否安装成功:

mpirun --version
  • 你应该会看到类似下面的输出,显示 OpenMPI 的版本信息:
mpirun (Open MPI) 4.1.1 Report bugs to http://www.open-mpi.org/community/help/

2. 配置 OpenMPI 环境

  • 环境变量设置(可选): 通常,MPI 二进制文件会自动添加到 PATH 中,如果你安装了多个 MPI 版本或者想确保正确的路径配置,可以手动设置环境变量。

    编辑你的 ~/.bashrc 文件,添加以下几行:

export PATH=/usr/lib/openmpi/bin:$PATH 
export LD_LIBRARY_PATH=/usr/lib/openmpi/lib:$LD_LIBRARY_PATH
  • 使更改生效: 保存并关闭文件,然后执行以下命令使其生效:
source ~/.bashrc

3. 编写 MPI 程序

接下来,我们来编写一个简单的 MPI 程序,以确保安装和配置正确。

  • 创建一个名为 hello_mpi.c 的文件:

// hello_mpi.c 
#include <mpi.h> 
#include <stdio.h> 
int main(int argc, char** argv) 
{
    MPI_Init(&argc, &argv); // 初始化MPI环境 
    int world_rank; 
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); // 获取当前进程的Rank 
    int world_size; 
    MPI_Comm_size(MPI_COMM_WORLD, &world_size); // 获取总进程数 
    printf("Hello world from processor %d out of %d processors\n", world_rank, world_size);
    MPI_Finalize(); // 结束MPI环境 
    return 0; 
}
  • 编译 MPI 程序: 使用 mpicc(OpenMPI 的 C 编译器封装器)来编译 MPI 程序:
mpicc hello_mpi.c -o hello_mpi
  • 运行 MPI 程序: 使用 mpirun 或 mpiexec 来运行 MPI 程序。指定使用的进程数量,例如:
mpirun -np 4 ./hello_mpi

该命令使用 4 个进程运行程序。你应该会看到类似以下的输出:

Hello world from processor 0 out of 4 processors 
Hello world from processor 1 out of 4 processors 
Hello world from processor 2 out of 4 processors 
Hello world from processor 3 out of 4 processors

4. 运行多节点的 MPI 程序(可选)

如果你有多台机器并希望在集群上运行 MPI 程序,步骤会稍微复杂一些。

4.1 配置免密 SSH 登录

  • 生成 SSH 密钥(如果没有):

ssh-keygen -t rsa -b 2048
  • 按 Enter 以默认设置生成密钥。

  • 复制 SSH 密钥到远程节点: 使用 ssh-copy-id 将密钥复制到其他机器上:

ssh-copy-id user@remote_host
  • 现在你可以从主机通过 SSH 无需密码登录远程主机了。

4.2 运行多节点 MPI 程序

  • 创建主机文件: 创建一个包含节点 IP 地址或主机名的主机文件,例如 hosts 文件:

192.168.1.1 slots=2 192.168.1.2 slots=2
  • 其中 slots=2 表示每个节点上运行 2 个进程。

  • 运行 MPI 程序: 使用 mpirun,指定主机文件和进程数:

mpirun --hostfile hosts -np 4 ./hello_mpi
  • 这会在多个节点上启动 4 个 MPI 进程。

5. MPI 编译器封装器

MPI 提供了编译器封装器,使编译 MPI 程序更简单:

  • C 编译器封装器mpicc
  • C++ 编译器封装器mpicxx
  • Fortran 编译器封装器mpifort

这些封装器自动处理 MPI 头文件和库的链接,可以直接用它们来编译 MPI 程序。

6. 常用 MPI 命令

  • mpicc:用于编译 MPI C 程序。
  • mpirun:用于运行 MPI 程序,支持多节点、多进程执行。
  • mpiexec:与 mpirun 类似,是 MPI 标准中指定的命令。
  • ompi_info:查看 OpenMPI 的配置信息。

7. 验证 MPI 环境

你可以使用 OpenMPI 自带的测试工具来确认 MPI 环境是否配置正确:

mpirun --host localhost -np 4 hostname

该命令将在本地机器上运行 4 个 MPI 进程,并输出机器名称。如果环境配置正确,应该会输出本地主机名 4 次。

总结

  • 安装 OpenMPI:使用 Ubuntu 的包管理器安装 OpenMPI 工具和库。
  • 配置环境:确保 MPI 的二进制文件在 PATH 中,并设置相关环境变量。
  • 编写和编译 MPI 程序:通过 mpicc 编译,并使用 mpirun 运行 MPI 程序。
  • 多节点运行(可选):配置免密 SSH 登录,使用主机文件在多台机器上运行 MPI 程序。

以上就是在Ubuntu上安装和配置MPI环境的详细步骤的详细内容,更多关于Ubuntu安装和配置MPI的资料请关注脚本之家其它相关文章!

相关文章

  • CentOS7 安装 zabbix 4.0 教程(图文详解)

    CentOS7 安装 zabbix 4.0 教程(图文详解)

    这篇文章主要介绍了CentOS7 安装 zabbix 4.0 教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Linux关机时执行指定脚本功能实现

    Linux关机时执行指定脚本功能实现

    本篇文章给大家分享了Linux关机时执行指定脚本功能的实现详解,对此有需要的朋友跟着小编一起学习下。
    2018-03-03
  • Linux磁盘空间异常爆满的排查和处理方式

    Linux磁盘空间异常爆满的排查和处理方式

    在服务器运维过程中,磁盘空间不足会导致业务异常,定位问题时,可以使用df-Hl、du-hs、du-d参数或find命令查看空间,删除备份文件和日志信息后,空间未释放的原因是文件被打开,进程仍在使用
    2024-12-12
  • 在 Linux 上使用 Multitail命令的教程

    在 Linux 上使用 Multitail命令的教程

    MultiTail是一个开源的ncurses的实用工具,可用于在一个窗口或单一外壳,显示实时一样的尾巴命令,该命令拆分控制台为更多子窗口的日志文件的最后几行。这篇文章主要介绍了在 Linux 上使用 Multitail命令的教程,需要的朋友可以参考下
    2019-12-12
  • Linux如何使用ntp自动联网校准时间

    Linux如何使用ntp自动联网校准时间

    电脑用户经常需要查看当前时间、安装网络时间协议(NTP)服务和校准时间,确保系统时间的准确性,首先,用户可通过系统自带功能查看当前时间,其次,通过安装NTP服务可以自动同步网络时间,用户需要选择合适的NTP服务器,这些服务器地址可以在互联网上查到
    2024-10-10
  • Ubuntu18.04更改apt源为阿里云源的详细过程

    Ubuntu18.04更改apt源为阿里云源的详细过程

    安装Ubuntu 18.04后,使用国外源太慢了,修改为国内源会快很多,下面这篇文章主要给大家介绍了关于Ubuntu18.04更改apt源为阿里云源的相关资料,需要的朋友可以参考下
    2021-12-12
  • Linux使用粘滞位 (t-bit)共享文件的方法教程

    Linux使用粘滞位 (t-bit)共享文件的方法教程

    在 Linux 系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(Sticky Bit 或 t-bit)是实现共享目录安全性的重要工具之一,本文将带您详细了解如何在 Linux 中共享文件并配置粘滞位来保护共享资源的安全,需要的朋友可以参考下
    2024-12-12
  • Linux环境部署DNF仓库以及配置NFS共享服务

    Linux环境部署DNF仓库以及配置NFS共享服务

    本文详细介绍了如何在Linux环境下部署DNF仓库和配置NFS共享服务,DNF仓库主要用于集中管理软件包,而NFS共享服务则用于多系统间的文件共享,文章涵盖了从仓库部署、软件包同步到NFS配置和客户端访问的全过程,为系统管理员提供了全面的指导
    2025-04-04
  • Mac本地文件上传到CentOS云服务器方法

    Mac本地文件上传到CentOS云服务器方法

    Mac本地文件上传到CentOS中,可以使用scp指令可以完成。这篇文章给大家介绍了Mac本地文件上传到CentOS云服务器方法,需要的朋友跟随脚本之家小编一起看看吧
    2018-06-06
  • PHP程序员玩转Linux系列 lnmp环境搭建

    PHP程序员玩转Linux系列 lnmp环境搭建

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,lnmp环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04

最新评论