zoukankan      html  css  js  c++  java
  • Environment Modules简单使用

    Environment Modules简单使用

    Environment Modules简介

    Typically users initialize their environment when they log in by setting environment information for every application they will reference during the session. The Environment Modules package is a tool that simplify shell initialization and lets users easily modify their environment during the session with modulefiles.
    

    下载安装

    下载网址

    安装步骤

    $ INSTALL.txt
    
    $ ./configure
    $ make
    $ make install
    

    默认安装目录

    /usr/local/Modules
    ├── bin
    │   ├── add.modules
    │   ├── envml
    │   ├── mkroot
    │   └── modulecmd
    ├── etc
    │   └── siteconfig.tcl
    ├── init
    │   ├── bash
    │   ├── bash_completion
    │   ├── cmake
    │   ├── csh
    │   ├── fish
    │   ├── fish_completion
    │   ├── ksh
    │   ├── ksh-functions
    │   ├── lisp
    │   ├── modulerc
    │   ├── perl.pm
    │   ├── profile-compat.csh
    │   ├── profile-compat.sh
    │   ├── profile.csh
    │   ├── profile.sh
    │   ├── python.py
    │   ├── r.R
    │   ├── ruby.rb
    │   ├── sh
    │   ├── tcl
    │   ├── tcsh
    │   ├── tcsh_completion
    │   ├── zsh
    │   └── zsh-functions
    ├── lib
    │   └── libtclenvmodules.so
    ├── libexec
    │   ├── modulecmd-compat
    │   └── modulecmd.tcl
    ├── modulefiles
    │   ├── dot
    │   ├── module-git
    │   ├── module-info
    │   ├── modules
    │   └── gcc
    └── share
        ├── doc
        └── vim
    

    初始化

    刚刚安装好的Environment Modules是没有module这条shell命令的
    需要进行简单的配置source一下环境

    • profile.d下建立软连接,执行下列语句
    # 全局初始化(root执行)
    $ cd /etc/profile.d
    $ ln -s /usr/local/Modules/init/profile.sh  module-profile.sh
    $ ln -s /usr/local/Modules/init/profile.csh module-profile.csh
    
    # 本地shell初始化
    # bash
    $ echo "source /usr/local/Modules/init/profile.sh" >> ~/.bashrc
    $ source ~/.bashrc
    
    # csh/tcsh
    % echo "source /usr/local/Modules/init/tcsh" >> ~/.cshrc
    % source ~/.cshrc
    
    $ which module
    module is a function
    module () 
    { 
        _module_raw "$@" 2>&1
    }
    

    bash下支持自动补全

    # 确认已经安装bash-completion
    $ cd /etc/bash_completion.d
    $ ln -s /usr/local/Modules/init/bash_completion modules-compliction.bash
    

    csh/tcsh下支持自动补全

    % echo "source /usr/local/Modules/init/tcsh_completion" >> ~/.cshrc
    

    管理工具的不同版本

    一个简单的例子

    $ cd /usr/local/Modules/modulefiles
    $ mkdir riscv_toolchain
    $ cd riscv_toolchain
    $ touch compile-version
    $ touch freedomstudio-version
    
    • compile-verison
    #%Module1.0######################################################################
    
    conflict        riscv_toolchain/freedomstudio-version
    
    set             tool_home       /opt/riscv/toolchain
    setenv          RISCV           $tool_home
    
    append-path     PATH            $tool_home/bin
    append-path     LIBRARY_PATH    $tool_home/lib
    append-path     LD_LIBRARY_PATH $tool_home/lib
    append-path     LD_INCLUDE_PATH $tool_home/include
    append-path     MANPATH         $tool_home/share/man
    
    • freedomstudio-verison
    #%Module1.0######################################################################
    
    conflict        riscv_toolchain/compile-version
    
    set             tool_home       /opt/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0
    setenv          RISCV           $tool_home
    
    append-path     PATH            $tool_home/bin
    append-path     LIBRARY_PATH    $tool_home/lib
    append-path     LD_LIBRARY_PATH $tool_home/lib
    append-path     LD_INCLUDE_PATH $tool_home/include
    append-path     MANPATH         $tool_home/share/man
    

    依赖其他module的例子

    #%Module1.0######################################################################
    
    # conflict        sbt/
    
    # 依赖于java环境,先加载此module
    module load java/jdk-14.0.1
    
    set              tool_home         /opt/scala/sbt-1.3.4
    
    prepend-path     PATH              $tool_home/bin
    prepend-path     LIBRARY_PATH      $tool_home/lib
    prepend-path     LD_LIBRARY_PATH   $tool_home/lib
    

    简单使用

    $ module load riscv_toolchain/compile-version
    $ which riscv64-unknown-elf-gcc
    riscv64-unknown-elf-gcc is /opt/riscv/toolchain/bin/riscv64-unknown-elf-gcc
    
    $ module load riscv_toolchain/freedomstudio-version 
    Loading riscv_toolchain/freedomstudio-version
      ERROR: riscv_toolchain/freedomstudio-version cannot be loaded due to a conflict.
        HINT: Might try "module unload riscv_toolchain/compile-version" first.
    
    $ module unload riscv_toolchain/compile-version 
    
    $ module load riscv_toolchain/freedomstudio-version 
    $ which riscv64-unknown-elf-gcc
    riscv64-unknown-elf-gcc is /opt/FreedomStudio/SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0/bin/riscv64-unknown-elf-gcc
    

    个人环境管理

    ~/privatemodules//usr/local/Modules/modulefiles一样可以包含local的环境设置

    $ cd ~/
    $ mkdir privatemodules/
    

    自定义路径

    增加module搜索的路径

    # bash
    $ export MODULEPATH=your_modulefiles_path_directory:$MODULEPATH
    
    # csh
    $ setenv MODULEPATH your_modulefiles_path_directory:$MODULEPATH
    

    常用命令

    命令 作用
    module avail 或 module av 查看系统中可用的资源
    module add 或 module load 加载模块
    module rm 或 unload 卸载模块
    module list 或 module li 显示已加载模块
    module purge 卸载所有模块
    module show 显示模块配置文件
    module swap 或 module switch 将模块1 替换为 模块2
    module help 查看具体软件的信息

    参考资料


    [1].超算入门课程4 module命令使用教学
    [2].Environment Modules
    [3].Linux使用Moduler切换各种MPI环境
    [4].Environment Modules

  • 相关阅读:
    柱状图 highcharts 柱状图默认是显示的 Heighcharts.com 的版权。设置去掉不显示(非商业)
    eclipse下使用maven配置库托管jar包
    Java的云打印Lodop
    文本框限制输入类型<input>的输入框
    初次使用JFinal
    【原创】java实现两单链表相加求和
    【原创】Springboot的Filter拦截器中使用@value获取值为null
    【原创】Oracle主从同步---创建物理备份数据库[Creating a Physical Standby Database]
    【原创】基于Telnet协议的Jenkins远程部署
    【原创】FastDFS简单安装配置-----同一台机器测试
  • 原文地址:https://www.cnblogs.com/OneFri/p/11723628.html
Copyright © 2011-2022 走看看