Open MPI 安装及使用 
Open MPI 是一个开源的消息传递接口标准的实现,主要广泛运用于高性能计算、并行计算领域应用。
下面将介绍如何在 SonmiHPC 集群上编译安装 Open MPI,并提供给集群内用户使用。
源码下载 
使用 wget 从官网下载最新 5.0.3 版本的源码压缩包,并解压:
shell
wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.3.tar.gz
tar xzvf openmpi-5.0.3.tar.gz && cd openmpi-5.0.3/wget https://download.open-mpi.org/release/open-mpi/v5.0/openmpi-5.0.3.tar.gz
tar xzvf openmpi-5.0.3.tar.gz && cd openmpi-5.0.3/编译安装 
执行下面的命令进行编译:
shell
./configure --prefix=/share/apps/openmpi/5.0.3
make -j all
make install./configure --prefix=/share/apps/openmpi/5.0.3
make -j all
make install为方便集群内其他用户使用,修改安装路径权限:
shell
chmod -R 755 /share/apps/openmpichmod -R 755 /share/apps/openmpiModulefile 编写 
编译好的 Open MPI 可以通过 Module 模块的方式提供给集群上其他用户使用,可以编写如下的 Modulefile 文件。先创建一个文件夹:
shell
mkdir -p /share/apps/modulefiles/openmpimkdir -p /share/apps/modulefiles/openmpi在该路径下创建一个文件:
shell
cd /share/apps/modulefiles/openmpi && vim 5.0.3cd /share/apps/modulefiles/openmpi && vim 5.0.3新建文件内容如下:
shell
#%Module###########################################
set modulefilename "Open MPI"
set modulefilever  "5.0.3"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}
if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}
set app openmpi
set version 5.0.3
set root /share/apps/${app}/${version}
conflict        mpi
prepend-path    PATH $root/bin
prepend-path    LD_LIBRARY_PATH $root/lib
prepend-path    PKG_CONFIG_PATH $root/lib/pkgconfig
prepend-path    MANPATH $/root/share/man
setenv          MPI_BIN $root/bin
setenv          MPI_SYSCONFIG $root/etc
setenv          MPI_INCLUDE $root/include
setenv          MPI_LIB $root/lib
setenv          MPI_MAN $root/share/man
setenv          MPI_HOME $root#%Module###########################################
set modulefilename "Open MPI"
set modulefilever  "5.0.3"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}
if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}
set app openmpi
set version 5.0.3
set root /share/apps/${app}/${version}
conflict        mpi
prepend-path    PATH $root/bin
prepend-path    LD_LIBRARY_PATH $root/lib
prepend-path    PKG_CONFIG_PATH $root/lib/pkgconfig
prepend-path    MANPATH $/root/share/man
setenv          MPI_BIN $root/bin
setenv          MPI_SYSCONFIG $root/etc
setenv          MPI_INCLUDE $root/include
setenv          MPI_LIB $root/lib
setenv          MPI_MAN $root/share/man
setenv          MPI_HOME $root保存文件后,设置一下权限:
shell
chmod -R 755 /share/apps/modulefileschmod -R 755 /share/apps/modulefiles用户使用 
集群上面用户可以通过下面的命令来查看该模块:
[sonmi@sonmi ~]$ module avail 
------------------ /share/apps/modulefiles ------------------
openmpi/5.0.3[sonmi@sonmi ~]$ module avail 
------------------ /share/apps/modulefiles ------------------
openmpi/5.0.3用户可以通过下面的命令来加载该模块:
shell
module load openmpi/5.0.3module load openmpi/5.0.3