本文介绍如何使用Environment Modules编译成软件中模块对应的环境配置,使其可以在E-HPC环境中直接加载使用。
背景信息
在使用E-HPC集群过程中,经常要安装不同的编译器和库文件,如常用的编译器有GCC和ifort,常用的 MPI并行库有OpenMPI、MPICH2等。在使用某个软件时,通常采用不同的编译设置得到不同版本的可执行程序和链接库,或者需要修改、切换不同版本的环境变量。由于程序在编译时会调用不同类型编译器或第三方库,程序之间还存在着依赖关系。导致当执行某个特定版本的程序时,修改环境变量变得十分复杂。
Environment Modules是一个简化Shell初始化的软件包,您可以在使用modulefiles模块与E-HPC进行会话期间修改模块对应的运行环境。每个模块文件都包含应用程序配置所需的信息。集群用户可共享系统上的模块文件,并且用户可以拥有自己的集合来补充或替换共享模块文件。
Environment Modules相关命令
E-HPC集群中已默认安装Environment Modules软件来管理不同运行环境。
当使用module命令时,可用的模块在modulepath=/opt/ehpcmodulefiles目录下,modulefile文件通常被命名为某个软件版本号,如openmpi/3.0.0。
常用的module命令如下:
module avail:显示可以使用的模块
module load:加载模块
module unload:卸载模块
module list:显示已经加载的模块
操作步骤
以下通过Environment Modules软件卸载openmpi/3.0.0,然后加载openmpi/3.0.1版本示例来介绍如何设置modulefile:
登录弹性高性能计算控制台。
在顶部菜单栏左上角处,选择地域。
在左侧导航栏,单击集群。
在集群页面,找到要登录的集群,单击远程连接。
在远程连接页面,输入root用户、登录密码和端口,单击ssh连接。
执行
cd /opt/ehpcmodulefiles
命令,切换到ehpcmodulefiles目录下。执行
module list
命令,显示已经加载的模块。如图所示,表示已加载openmpi/3.0.0模块。
执行
module unload openmpi/3.0.0
命令,卸载openmpi/3.0.0模块。执行
module load openmpi/3.0.1
命令,加载openmpi/3.0.1模块。您可以根据业务需求修改openmpi/3.0.1中的配置信息。具体配置项说明如下:
PATH:可执行文件路径。
LIBRARY_PATH:程序编译期间,查找动态链接库时指定查找共享库的路径。
LD_LIBRARY_PATH:程序加载运行期间,查找动态链接库时指定除了系统默认路径之外的其他路径。
installpath:软件安装目录。
#%Module1.0##################################################################### ## ## modulefiles/openmpi-3.0.1 Generated by EHS 1.0.0 ## proc ModulesHelp { } { puts stderr "\tmodules - loads the modules software & application environment" puts stderr "\n\tThis loads environment of openmpi-3.0.1" } module-whatis "loads the openmpi-3.0.1 environment" prepend-path PATH ${installpath}/bin prepend-path LD_LIBRARY_PATH ${installpath}/lib prepend-path LIBRARY_PATH ${installpath}/lib