Environment Modules とは

Environment Modules とは,各ユーザの実行パスやライブラリ・パスなどの環境変数をコマンドによって書き換えることで,利用者の環境を動的に変更するソフトウェアです.

例えば,roo にログインした直後は,gcc のバージョンは 4.8.2 です.

% ssh roo.cc.uec.ac.jp
Last login: Tue Feb 11 09:42:26 2014 from 172.xx.xx.xx
user@roo[~]% gcc --version
gcc (GCC) 4.8.2

moduleコマンドで gcc をアンロードすると,システムデフォルトのバージョン 4.4 が使われるようになります.

user@roo[~]% module unload gcc
user@roo[~]% gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)

さらに module コマンドでバージョン 4.9 をロードすると,以降は 4.9 が使われます.

user@roo[~]% module load gcc/4.9.0
user@roo[~]% gcc --version
gcc (GCC) 4.9.0 20140209 (experimental)

このように,module コマンドを使って,様々なソフトウェアやそのバージョンを切り替えながら使うことができます. Intel MPI や MPICH のように,特徴の異なる同種のソフトウェア(ライブラリ)を切り替えて使うこともできます.

利用可能ソフトウェア一覧を見る

利用できるソフトウェアの一覧を確認するためには,コマンドから module avail と入力します.

% module avail
------------- /etc/modulefiles -----------------------------
cuda/5.5               express/8.1.1          gcl/2.6.10    
emacs/24.3             gaussian/09D.01        gnuplot/4.6.4 

最初にcuda/5.5という項目がありますが,cudaソフトウェア名5.5バージョンです.

ソフトウェアの新しいバージョンがリリースされた場合は,随時 Modules に追加登録します.お使いのソフトウェアの最新版をお探しの場合は,一度 modules avail でお使いのソフトウェアの新しいバージョンが追加されていないかご確認ください.

ソフトウェアをロードする

ソフトウェアをロードする時は,コマンドラインから module load <ソフトウェア名>/<バージョン> と入力します.以下の例では,Maple をロードしています.

[user@roo ~]$ maple
maple: Command not found.
[user@roo ~]$ module load maple/17
[user@roo ~]$ maple
    |\^/|     Maple 17 (X86 64 LINUX)
._|\|   |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2013
 \  MAPLE  /  All rights reserved. Maple is a trademark of
 <____ ____>  Waterloo Maple Inc.
      |       Type ? for help.
> 

module maple/17 の実行後に maple コマンドが使えるようになりました.

ロードされているソフトウェアを確認する

ロードされているソフトウェアを確認する時は,module list コマンドを使います.以下の例では,Maple 17 がロードされていることがわかります.

% module list
Currently Loaded Modulefiles:
  1) maple/17

ソフトウェアをアンロードする

ソフトウェアをアンロードする時は,コマンドラインから module unload <ソフトウェア名>/<バージョン> と入力します.以下の例では,Maple 17 をアンロードしています.

% module unload maple/17
% maple
maple: コマンドが見つかりません.

ソフトウェアを切り替える

ソフトウェアを切り替えるとき,アンロードしてからロードする方法もありますが,コマンドラインから module switch <変更前ソフトウェア名>/<バージョン> <変更後ソフトウェア名>/<バージョン> と入力すると,この操作を一度にできます.以下の例では,gcc を 4.5.4 から 4.6.4 に切り替えています.

% gcc --version
gcc (GCC) 4.5.4
・・・(略)・・・
% module switch gcc/4.5.4 gcc/4.6.4
% gcc --version
gcc (GCC) 4.6.4
・・・(略)・・・

ログイン時にソフトウェアを自動ロード/アンロードする

ログイン時にソフトウェアを自動ロード/アンロードしたい場合は,.tcshrc.bashrcmodule コマンドを書いてください.以下の例は,tcsh を利用している場合に,ログイン時に Maple をロードし,MATLAB をアンロードする設定例です.

% vi ~/.tcshrc (エディタで .tcshrc を編集する.)
module load maple/17        (.tcshrc に左の内容を追記する)
module unload matlab/2013b

編集後,roo にログインをすると以下のように Maple がロードされ,MATLAB がアンロードされた状態から操作できます.

% ssh user@roo.cc.uec.ac.jp
user@roo.cc.uec.ac.jp's password: 
Last login: Sat Feb 01 18:12:xx 2014 from 172.21.xx.xx
[user@roo ~]$ module list
Currently Loaded Modulefiles:
  1) maple/17