zhangjiannan
项目案例 核心能力 交付流程 文档库
ON THIS PAGE
    # openmpi-5.0.6 安装指导书 **文档控制** |**序号**|**修改人/验证人**|**修改内容**|**日期**| |---|---|---|---| |1|zhangjiannan|创建文档|2025\.2\.15| ||||| ||||| ||||| # 一、关于本指导书 ## 1\.1 指导书目的 针对OPENMPI的安装配置,为实施人员提供简明规范性指导。 ## 1\.2 指导书适用对象 本指导书适用于涉及服务器交付的实施人员。 ## 1\.3 指导书中的格式定义 本指导书代码块中内容为执行的shell命令及输出,例如: ```Bash [bjuci@server01 ~]$ ls Intel ``` ## 1\.4 本指导书测试平台 |**处理器平台**|Intel\(R\) Xeon\(R\) Platinum 8468V| |---|---| |**操作系统版本**|Ubuntu 22\.04\.4 LTS Server版| |**编译环境**|gcc、g\+\+、 \(Ubuntu 11\.4\.0\)、[Intel® oneAPI HPC Toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit.html)| ## 1\.5 所需软件官方下载地址 |openmpi5\.0\.6|https://www.open-mpi.org/software/ompi/| |---|---| |Intel oneAPI Base Toolkit|[https://software\.intel\.com/content/www/us/en/develop/tools/oneapi/base\-toolkit/download\.html](https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit/download.html)| |Intel oneAPI HPC Toolkit|[https://software\.intel\.com/content/www/us/en/develop/tools/oneapi/hpc\-toolkit/download\.html](https://software.intel.com/content/www/us/en/develop/tools/oneapi/hpc-toolkit/download.html)| # 二、**OPENMPI介绍** ## 2\.1 **概念原理** Open MPI 是一个开源的 MPI(Message Passing Interface)实现,广泛用于高性能计算(HPC)中的并行编程。它由多个组织和开发者共同维护,旨在提供一个高效、灵活且可扩展的 MPI 库。 ## **2\.2 功能描述** OpenMPI借助TCP/IP网络连接的多台计算机,以此分发数据从而提升高性能间的消息传递。该软件常和支持mpi应用的软件结合使用,实现应用软件的多客户端、多进程、多线程。 ## 2\.3 主要特点 - **高性能**:Open MPI 针对多种网络和硬件进行了优化,支持 InfiniBand、TCP/IP 等多种通信协议。 - **跨平台**:支持 Linux、macOS、Windows 等多种操作系统。 - **灵活性**:允许用户根据需要选择不同的通信模块和运行时配置。 - **可扩展性**:适用于从小型集群到超大规模计算环境。 - **社区支持**:拥有活跃的开发者社区和丰富的文档资源。 ## **2\.4 应用领域** 软件使用集中在高性能计算、集群、并行计算中,如超算、气象、智能制造、并行运算等场景。 协同软件:Python\+mpi、R\+mpi、GROMACS\+mpi、namd\+mpi等。 *注意:目前安装 *OPENMPI\-5\.0\.6 无须授权 # 三、GNU编译安装步骤OPENMPI\-5\.0\.6 ## **3\.1 下载源码** 1、从官网上下载对应的安装包 ![image\.png](图片和附件/image.png) 上传安装包到指定目录(以/opt/bjuci为例),将软件包openmpi\-5\.0\.6\.tar\.gz上传到此目录。 ```SQL [root@uci01 /opt/bjuci]# tar -zxvf openmpi-5.0.6.tar.gz [root@uci01 /opt/bjuci]# ls -trl [root@uci01 /opt/bjuci]# cd openmpi-5.0.6 [root@uci01 /opt/bjuci]# ls -trl ``` ![image\.png](图片和附件/image%201.png) ## 3\.2 编译 ```Plain Text [root@uci01 /opt/bjuci/openmpi-5.0.6]# ./configure --prefix=/opt/inspur/openmpi-5.0.6-gnu CC=gcc CXX=g++ FC=gfortran F77=gfortran [root@uci01 /opt/bjuci/openmpi-5.0.6]# make -j 8 [root@uci01 /opt/bjuci/openmpi-5.0.6]# make install ``` ## **3\.3 环境变量配置** 安装完成后,配置环境变量。对于环境环境变量的配置可以有以下几种配置: 1)、将环境变量放在/etc/profile中,设置一个全局环境变量,系统下的任何用户都能使用 2)、可以放在当前用户的\.bashrc中,这样那个用户使用就自己设置 3)、放在一个公共的目录下,自己新建一个XXX\.sh文件,将环境变量内容加入到里面,调用的时候执行XXX\.sh即可。这个属于临时调用。 具体的环境变量内容如下: 注意:MPI\_HOME=/opt/bjuci/openmpi\-5\.0\.6\-gun,是执行\./configure \-\-prefix时配置的路径 ```Bash export MPI_HOME=/opt/bjuci/openmpi-5.0.6-gun export PATH=${MPI_HOME}/bin:$PATH export LD_LIBRARY_PATH=${MPI_HOME}/lib:$LD_LIBRARY_PATH export MANPATH=${MPI_HOME}/share/man:$MANPATH ``` \#设置完成后用以下命令验证是否生效 |$which mpirun<br>/opt/bjuci/openmpi\-5\.0\.6\-gun/bin/mpirun| |---| # 四、OneApi编译安装步骤OPENMPI\-5\.0\.6 **oneAPI 是英特尔(Intel)推出的一个统一的编程模型和开发工具集,旨在简化跨多种硬件架构(如 CPU、GPU、FPGA 和其他加速器)的应用程序开发。oneAPI 的目标是打破传统编程中针对特定硬件的限制,提供一种开放的、统一的编程方式,使开发者能够更高效地利用异构计算资源。 ## 4\.1 下载 同3\.1部分。 ## 4\.2 安装部署 ```Plain Text [root@uci01 /opt/bjuci/openmpi-5.0.6]# ./configure --prefix=/opt/inspur/openmpi-5.0.6-intel CC=icc CXX=icpc F77=ifort FC=ifort F90=ifort --disable-shared --enable-static --with-openib [root@uci01 /opt/bjuci/openmpi-5.0.6]# make -j 8 [root@uci01 /opt/bjuci/openmpi-5.0.6]# make install ``` ## **4\.3 环境变量配置** 安装完成后,配置环境变量。对于环境环境变量的配置可以有以下几种配置: 1)将环境变量放在/etc/profile中,设置一个全局环境变量,系统下的任何用户都能使用 2)可以放在当前用户的\.bashrc中,这样那个用户使用就自己设置 3)放在一个公共的目录下,自己新建一个XXX\.sh文件,将环境变量内容加入到里面,调用的时候执行XXX\.sh即可。这个属于临时调用。 具体的环境变量内容如下: ```Bash export MPI_HOME=/opt/bjuci/openmpi-5.0.6-intel export PATH=${MPI_HOME}/bin:$PATH export LD_LIBRARY_PATH=${MPI_HOME}/lib:$LD_LIBRARY_PATH export MANPATH=${MPI_HOME}/share/man:$MANPATH ``` \#设置完成后用以下命令验证是否生效 ```Bash $which mpirun ``` # 五、**openmpi运行测试** **5\.1 程序运行测试** 测试程序运行结果 ```Bash [root@uci01]$ mpirun -np 4 -hostfile hostfile hello ``` • \-np X:运行X个进程 •\-hostfile:指定计算节点 程序源码如下: ```C++ [root@mu01 test] #cat hello.c [root@mu01 test] #mpicc -o hello hello.c #得到可执行程序hello #include <mpi.h> #include <stdio.h> int main(int argc, char* argv[]) { MPI_Init(NULL, NULL); int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); char processor_name[MPI_MAX_PROCESSOR_NAME]; int name_len; MPI_Get_processor_name(processor_name,&name_len); printf("Hello World from processor %s, rank %d" " out of %d processor\n", processor_name,world_rank,world_size); MPI_Finalize(); } ```
    DOCUMENT FEEDBACK
    暂无留言,欢迎提交反馈。