文章目录

  • 前言
  • 一、OpenMPI是什么?
  • 二、OpenMPI与OpenMP的区别
  • 三、 OpenMPI的编译安装
  • 四、OpenMPI的使用示例
  • 总结


前言

OpenMPI是一个开源的消息传递接口(Message Passing Interface,MPI)的实现,用于并行计算。它允许多个计算节点之间进行通信和数据交换,从而实现分布式计算。这里介绍OpenMPI的安装和基本使用。安装是后续的分子对接虚拟筛选以及分子动力学研究的准备工作。


一、OpenMPI是什么?

在这里插入图片描述
OpenMPI(Open Message Passing Interface)是一个开源的并行计算库,用于在集群计算环境中进行并行计算。它采用消息传递编程模型,可以在多个计算节点之间进行高效的数据通信和同步操作。

OpenMPI支持多种并行计算的应用场景,包括科学计算、机器学习、数据分析等。它提供了一组丰富的函数接口,可以实现进程间的消息传递和同步操作。用户可以通过调用这些函数来编写并行程序,利用集群中的多个计算节点进行并行计算。

OpenMPI的设计目标是提供一个高性能、可扩展、可移植的并行计算库。它可以在各种操作系统和硬件平台上运行,并具有良好的可移植性。OpenMPI支持多种传输协议,包括TCP/IP、InfiniBand、Myrinet等,可以适应不同的网络环境。

OpenMPI还提供了一些高级功能,如动态进程管理、进程互操作等。动态进程管理允许用户在运行时动态添加或删除计算节点,从而实现动态扩展计算资源。进程互操作允许不同的并行计算库之间进行互操作,实现资源共享和任务协同。

总之,OpenMPI是一个功能强大的并行计算库,可以帮助用户更好地利用集群计算资源进行并行计算。它是科学计算和大规模数据处理领域的重要工具,被广泛应用于各种科学研究和工程实践中。

二、OpenMPI与OpenMP的区别

OpenMPI和OpenMP是两个不同的并行计算框架。

OpenMPI是一种消息传递接口(Message Passing Interface),它能够在分布式内存系统中实现进程间的通信。OpenMPI可以用于在多台计算机上进行并行计算,每个计算节点都有自己的内存和处理器。OpenMPI通过消息传递的方式将数据交换在不同的计算节点之间,从而实现并行计算。

OpenMP则是一种共享内存接口,它能够在共享内存系统中实现线程间的并行计算。OpenMP适用于单个计算节点上的并行计算,多个线程可以共享同一个内存空间。OpenMP通过将计算任务分解成多个线程来实现并行计算,每个线程可以独立执行一部分计算任务,然后将结果合并在一起。

总之,OpenMPI适用于分布式内存系统的并行计算,而OpenMP适用于共享内存系统的并行计算。两者的主要区别在于数据通信的方式,OpenMPI使用消息传递,OpenMP使用共享内存。

三、 OpenMPI的编译安装

以下是安装OpenMPI的步骤:

  1. 下载OpenMPI的源码包,可以从官方网站(https://www.open-mpi.org/)上获取。
  2. 解压源码包到任意目录中。
  3. 打开终端,进入解压后的目录。
  4. 运行以下命令来配置安装选项
  5. 设置环境变量
wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.2.tar.gz
tar -zxvf openmpi-5.0.2.tar.gz
cd openmpi-5.0.2
./configure --prefix=/path/to/openmpi
make
make install

这里的--prefix选项指定了OpenMPI的安装路径,可以根据需要进行调整。
打开~/.bashrc, 添加如下:

export PATH=$PATH:/path/to/openmpi/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/openmpi/lib

环境变量生效:

source ~/.bashrc

执行以下命令,查看MPI环境变量是否正常。

which mpicc
which mpirun

四、OpenMPI的使用示例

安装完成后,可以使用以下步骤来编写和运行一个简单的MPI程序:

  1. 创建一个MPI程序的源文件,例如hello_mpi.c

  2. 使用任意文本编辑器打开这个文件,在文件中编写MPI程序的代码。例如,以下是一个简单的程序,用于在所有计算节点上打印“Hello, world!”:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char **argv) {
    MPI_Init(&argc, &argv);
    int rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    printf("Hello, world! I am process %d.\n", rank);
    MPI_Finalize();
    return 0;
}
  1. 使用以下命令来编译这个MPI程序:
mpicc hello_mpi.c -o hello_mpi

这里使用了mpicc命令,它是OpenMPI提供的用于编译MPI程序的编译器。

  1. 使用以下命令来运行这个MPI程序:
mpirun -np 4 ./hello_mpi

这里使用了mpirun命令,它用于启动MPI程序。-np选项指定了要使用的计算节点数,这里是4个。

当程序运行时,每个计算节点都会打印出自己的进程编号和相应的输出消息。


总结

这只是OpenMPI的安装和基本使用介绍,OpenMPI还提供了丰富的功能和选项,可以根据需要进行进一步学习和使用。
OpenMPI是Linux MPI library开源实现方式之一。一些程序比如Amber, UCSF FOCK本身支持在安装有MPI的单机或者集群上安装并行版本及实现并行计算。对于本身没有集成并行的程序,可以使用mpirun实现多线程并行,充分发挥多核CPU的计算性能。
本安装是后续的分子对接虚拟筛选以及分子动力学研究介绍必要的准备工作。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐