“Environment module”(环境模块)是一组环境变量设置的集合。 module可以被加载(load)、卸载(unload)、切换(switch),这些操作会改变相应的环境变量设置,从而让用户方便地在不同环境间切换。 相比与将环境变量设置写入/etc/profile或者~/.bashrc,Environment module操作只影响当前用户的当前登录环境,不会因错误配置造成全局持续的破坏。 普通用户也可以自己编写module,具有很好的定制性。
Contents [hide]

1 基本命令
        1.1 module命令列表
        1.2 查看可用模块avail
        1.3 查看已加载模块list
        1.4 加载模块load
        1.5 卸载模块unload
        1.6 切换模块switch
        1.7 卸载所有已加载的模块purge
        1.8 显示模块说明whatis
        1.9 显示该模块内容display
    2 Pi集群module功能说明
        2.1 编译器
        2.2 MPI环境
        2.3 工具库
    3 在编译和提交作业时使用module
        3.1 编译时使用module
        3.2 LSF提交作业时使用module
    4 编写自定义module
    5 参考资料

基本命令
module命令列表

$ module

或者,

$ module -h

查看可用模块avail

$ module avail

查看已加载模块list

$ module list

加载模块load

$ module load MODULE_NAME

卸载模块unload

$ module unload MODULE_NAME

切换模块switch

$ module switch OLD_MODULE NEW_MODULE

等价于:

$ module unload OLD_MODULE; module load NEW_MODULE

卸载所有已加载的模块purge

$ module purge

显示模块说明whatis

$ module whatis MODULE_NAME

显示该模块内容display

$ module display MODULE_NAME

Pi集群module功能说明

<math>\pi</math>集群预设了如下module:

$ module avail
----------------- /lustre/utility/modulefiles ----------------
compiler-default    mpi-default
fftw/impi/3.3.3        fftw/openmpi/gcc/3.3.3 icc/13.1.1             
cuda/5.0               fftw/mpich2/gcc/3.3.3  fftw/openmpi/icc/3.3.3 impi/4.1.1.036
cuda-default           fftw/mpich2/icc/3.3.3  gcc/4.8.1              mkl/11.0.3    
openmpi/gcc/1.6.4      mpich2/gcc/1.4.1p1     pgi/13.9
openmpi/icc/1.6.4      mpich2/icc/1.4.1p1

模块命名规则是:

软件名/MPI库/编译器/版本

其中“MPI库”和“编译器”是命名时的可选项。 譬如,fftw/mpich2/gcc/3.3.3模块表示版本号为3.3.3的FFTW库,这个库支持在MPICH2上并行执行,FFTW和MPICH2库都使用GCC生成。 又如,openmpi/gcc/1.6.4模块表示版本号为1.6.4的OpenMPI库,这个库使用GCC生成。

这些模块按功能大致可分为编译器、MPI环境、工具库等,下面分别予以说明。
编译器

<math>\pi</math>集群上可以使用的编译器包括:GNU编译器(GCC)、Intel编译器、PGI编译器。 GCC-4.4.6编译器安装在操作系统目录下,能直接使用,不需要加载模块。 GCC-4.8.1、Intel编译器和PGI编译器需要加载相应模块。 编译器模块信息如下:
<thead> </thead> <tbody> </tbody>
模块     编译器版本     C编译器     C++编译器     F77编译器     F90编译器
gcc/4.4.6(默认)     4.4.6     gcc     g++     g77     gfortran
gcc/4.8.1     4.8.1     gcc     g++     g77     gfortran
icc/13.1.1     13.1.1     icc     icpc     ifort     ifort
pgi/13.9     13.9     pgcc     pgc++     无     无

<math>\pi</math>集群上的Nvidia CUDA开发环境版本为5.0,使用前请加载模块cuda-default或者cuda/5.0。
MPI环境

<math>\pi</math>集群可用的MPI库比较丰富,包括Intel MPI(IMPI)、MPICH2和OpenMPI。 按照mpicc、mpicxx、mpif77和mpif90使用的后端编译器,MPICH2与OpenMPI还可以再细分为不同版本。
<thead> </thead> <tbody> </tbody>
模块     版本     mpicc     mpicxx     mpif77     mpif90
impi/4.1.1.036     4.1.1     gcc     g++     g77     gfortran
        (mpiicc uses icc)     (mpicpc uses icpc)         
mpich2/icc/1.4.1p1     1.4.1p1     icc     icpc     ifort     ifort
mpich2/gcc/1.4.1p1     1.4.1p1     gcc     g++     g77     gfortran
openmpi/icc/1.6.4     1.6.4     icc     g++     g77     gfortran
openmpi/gcc/1.6.4     1.6.4     gcc     g++     g77     gfortran
工具库

<math>\pi</math>集群上的工具库模块包括:mkl(Intel数学函数库)、fftw(FFTW快速傅里叶变换库)。 用户可根据需要,载入响应模块。
在编译和提交作业时使用module

在集群上使用编译器和特定软件库时,往往需要在启动脚本中设置复杂的环境变量。 让用户手工维护这些设置不仅容易出错,而且用户到另一个集群工作时,又需要针对新环境逐一修改变量。 使用Environment module后,将环境准备的工作交给管理员,用户按需加载模块,用同一组命令就能在不同集群上完成环境设定的工作。

下面以Intel MPI程序的编译和提交为例,说明module的作用。
编译时使用module

Intel 编译器/MPI环境的设定包括一系列复杂的环境变量设定,需要运行脚本完成配置。 典型过程如下:

$ source /lustre/utility/intel/composer_xe_2013.3.163/bin/compilervars.sh intel64
$ source /lustre/utility/intel/mkl/bin/intel64/mklvars_intel64.sh
$ source /lustre/utility/intel/impi/4.1.1.036/bin64/mpivars.sh
$ mpiicc -o mpihello mpihello.c

使用module可以使环境设定的过程更清晰:

$ module load icc/13.1.1
$ module load mkl/11.0.3
$ module load impi/4.1.1.036  
$ mpiicc -o mpihello mpihello.c

LSF提交作业时使用module

使用LSF提交作业时,作业控制脚本中通常也会包含一系列环境设定脚本,譬如:

source /lustre/utility/intel/composer_xe_2013.3.163/bin/compilervars.sh intel64
source /lustre/utility/intel/mkl/bin/intel64/mklvars_intel64.sh
source /lustre/utility/intel/impi/4.1.1.036/bin64/mpivars.sh

这部分也可以用module指令替代。 注意,LSF默认使用/bin/sh解析作业脚本指令(没有module功能),且不传递$HOME、$USER、$SHELL、$LONGNAME以外的环境变量。 若要在LSF作业脚本中使用module,我们需要指定一个带有module功能的Shell(如/bin/bash),并正确设定MODULEPATH变量。 下面这个LSF作业片段供参考:

#BSUB -L /bin/bash

MODULEPATH=/lustre/utility/modulefiles:$MODULEPATH

module load icc/13.1.1
module load mkl/11.0.3
module load impi/4.1.1.036

编写自定义module

用户可根据modulefile规则,自己编写所需的module。 用户自定义module的目录,加入MODULEPATH变量后方能生效。

参考资料

“Environment Module” http://modules.sourceforge.net/
    “Environment Module: Manual Page” http://modules.sourceforge.net/man/module.html
    “Modules Software Environment” https://www.nersc.gov/users/software/nersc-user-environment/modules/

使用Environment Module设置运行环境相关推荐

  1. java最广泛的运行环境_Java运行环境下载|Java SE Runtime Environment(Java运行环境)8.0.131 官方多语言正式版_ - 极光下载站...

    Java SE Runtime Environment(Java运行环境)官方版下载,Java SE Runtime Environment是运行JAVA程序不可缺少的环境,许多程序员都必须安装的运行 ...

  2. QProcess设置运行环境

    主要使用QProces执行java程序 使用到下面的代码操作 QString sPath, javaBin, jrePath, javaHome, jreClass, javaClass;do {sP ...

  3. 电脑版java运行条件,Java Runtime Environment电脑版-Java Runtime Environment(Java运行环境)8.0.221 x64正式版-蜻蜓手游网...

    很多时候我们运行一些软件都提示需要装Java环境,比如本站的<apk傻瓜式改包工具>,也是需要jdk环境才能正常使用的,但是现在官网需要注册账户才能下载,非常的麻烦,今天小编就为大家带来最 ...

  4. tomcat设置监听端口以及设置运行环境

    可以在startup.bat文件,或者快捷方式上右键以文本形式打开,然后在最开头上面添加上 set JPDA_ADDRESS=3999 catalina jpda run 然后在eclipse点击虫子 ...

  5. [致敬未来的攻城狮计划 1] 使用 “FSP Configuration”(FSP 配置)透视配置器设置运行环境

    开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(http://yyds.recan-li.cn)和 瑞萨MCU (瑞萨电子 (Renesas Electronics Corpora ...

  6. java虚拟机32位_jre1.6java虚拟机运行环境下载|jre1.6官方版32位/64位下载_v1.6.0_9号软件下载...

    jre1.6是Java Runtime Environment缩写,指Java运行环境,是Sun的产品.运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库. 软件介绍 不少软件采 ...

  7. java运行环境的英文缩写_java英文缩写

    DAO:Data Access Object 数据访问接口. EAO:Entity Access Object,实体访问接口,EAO是基于DAO的,EAO传递的对象是Entity . DTO:Data ...

  8. 设置PATH 环境变量、pyw格式、命令行运行python程序与多重剪贴板

    pyw格式简介: 与py类似,我认为他们俩卫衣的不同就是前者运行时候不显示终端窗口,后者显示 命令行运行python程序: 在我学习python的过程中我通常使用IDLE来运行程序,这一步骤太过繁琐( ...

  9. iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法

    第一次在windows7下配置IIS,虽然有丰富的xp下配置IIS的经验,但还是会遇到不少的问题.特别是对入门者来说,搞清一些东西还是挺费时间的.其实win7下的IIS7配置过程是非常简单的.下面让s ...

最新文章

  1. 转:Flutter Decoration背景设定(边框、圆角、阴影、形状、渐变、背景图像等)...
  2. 获取SQLServer数据库中所有表
  3. Magic Powder - 2
  4. 重学java基础第二十五课:数据类型
  5. Java笔记-基于Spring Boot的SOAP双向SSL认证及WS-Security
  6. java 序列化 缓存_由缓存导致的一个java序列化问题
  7. HDU1597 find the nth digit【模拟】
  8. 表面粗糙度的基本评定参数是_表面粗糙度100个常见问题
  9. Java SE 原生数据类型
  10. 回答一个关于产品经理的入门门槛高不高的问题
  11. API接口版本控制的实现方式
  12. iOS中WKWebView清除cookies
  13. 马哥教育N63期-第一周作业
  14. c++实现简易trpg角色生成器
  15. h5调起app的方法;app调起vue中的某个方法
  16. rancher2.6部署k8s集群示例
  17. C语言中的if选择语句
  18. ABB机器人随机物料抓取优化升级
  19. 超级计算机紫金,紫金山天文台将用“天河一号”模拟宇宙成长
  20. 基于JSP技术的学生网上选课系统的设计与实现

热门文章

  1. 你知道表也能进行加减运算吗?
  2. docker+nginx+node+jenkins从零开始部署你的前端服务
  3. latex数学公式总结
  4. JAVA课程设计——石头剪刀布
  5. 考研有理函数积分法/部分分式法/部分分式分解(有具体题目练习)
  6. 图像处理领域公认的重要英文期刊(SCI收录)(转载)
  7. java https 验证客户端证书_Java HTTPS客户端证书认证
  8. 步进电机的启动频率和空载启动频率
  9. 各种寄存器作用(汇总)
  10. 芯片测试术语,片内测试(BIST),ATE测试