環境設定ツール (modules)

Modulesソフトウェアパッケージは、コンパイラ・ライブラリ・アプリケーションの利用に必要な環境設定をmoduleコマンドを実行することで、動的に切り替えて設定することができます。 異なるバージョンのコンパイラ・ライブラリ・アプリケーションを切り替えて利用する際に、簡単に環境設定を変更することができます。

コマンド 説明
module list ロード済みmoduleファイルの一覧表示
module avail 使用できる全moduleファイルの一覧表示
module show [module_file_name] moduleファイルの設定内容の表示
module load [module_file_name] moduleファイルのロード
module unload [module_file_name] moduleファイルのアンロード
module switch [module_file_name1] [module_file_name2] moduleファイルの切り替え(module_file_name1→module_file_name2)

モジュールファイル間の依存関係により module load / unload / switch のエラーが発生する場合があります。 依存関係に異常が生じる可能性をご理解の上であれば、-f オプションを使うことで、強制的にモジュールファイルのロードやスイッチをすることができます。

## ログイン直後の状態
$ module list
Currently Loaded Modulefiles:
 1) slurm/2022   2) SysB/2022   3) intel/2022.3(default)   4) intelmpi/2022.3(default)   5) PrgEnvIntel/2022(default)

## intelコンパイラを 2018.4 に切り替えようとしてもエラーになる
$ module switch intel/2018.4
Unloading intel/2022.3
  ERROR: intel/2022.3 cannot be unloaded due to a prereq.
    HINT: Might try "module unload PrgEnvIntel/2022" first.

Switching from intel/2022.3 to intel/2018.4
  ERROR: Unload of switched-off intel/2022.3 failed

## -f オプションを使用した強制的な切り替え
$ module switch intel/2018.4 -f
Unloading intel/2022.3
  WARNING: Dependent 'PrgEnvIntel/2022' is loaded

## 変更後の状況
$ module list
Currently Loaded Modulefiles:
 1) slurm/2022   2) SysB/2022   3) intelmpi/2022.3(default)   4) PrgEnvIntel/2022(default)   5) intel/2018.4

各プログラミング環境利用のための包括的なModulesファイルセットとして、以下の3種を用意しています。 これらのモジュールファイルにより、コンパイラの環境とMPIの環境の初期設定が行われます。

  • Intelプログラミング環境 (システムA/B/C/D/Eの標準環境) : PrgEnvIntel
  • NVIDIA HPC SDKプログラミング環境 (システムGの標準環境) : PrgEnvNvidia
  • GNUプログラミング環境 : PrgEnvGCC

現在のモジュール環境を確認するには module list コマンドを使用してください。

$ module list
Currently Loaded Modulefiles:
  1) XXX 

ログイン時はシステムのメインコンパイラ環境になっています。 以下にプログラミング環境を切り替える例を記載しています。

例 Intel環境からNVIDIA環境に切り替える場合

$ module switch PrgEnvIntel PrgEnvNvidia

複数バージョンが利用可能な場合、利用するコンパイラバージョンを切り替えることができます。 以下にintelコンパイラの場合の操作方法を例示しています。

例 用意されているプログラミング環境を切り替える場合

$ module switch PrgEnvIntel/2022 PrgEnvIntel/2018

例 Intelコンパイラの別バージョンを追加でロードする場合(後からロードしたほうが優先されます)

$ module load intel/Y.Y 

例 Intelコンパイラのバージョンを個別に切り替える場合(-fが必要)

$ module switch intel/X.X intel/Y.Y -f 

現在ロードしているバージョンの記述(上記例のintel/X.X)は省略することもできます。

$ module switch intel/Y.Y -f

MATLABを利用する場合の例

moduleコマンドを実行し、環境設定を行います。(利用したいバージョンのmoduleファイルをロードします)

$ module load matlab/R2020b

MATLABの起動コマンドを実行することができるようになります。

$ matlab

MALABのバージョンを切り替える場合(R2020b→R2021a)

moduleコマンドを実行し、環境設定の変更を行います。

$ module unload matlab/R2020b
$ module load matlab/R2021a
または
$ module switch matlab/R2021a

他のアプリケーションでの使い方は、利用可能なソフトウェアのページをご確認ください。

moduleファイルをユーザ自身で作成し、利用することができます。 作成方法については、 man page をご覧ください。 作成したmoduleファイルを利用するためには、module use コマンドにmoduleファイルを格納したディレクトリを指定し、パスを追加してください。 一度追加したパスを削除したい場合は、module unuseコマンドを実行してください。 moduleファイルのパスは環境変数MODULEPATHで確認できます。

例 moduleファイルパスの確認

## 作成したmoduleファイルを利用できるようにする(x12345ユーザの場合)
$ module use /home/x/x12345/mymodule

## moduleファイルのパスを確認する
$ echo $MODULEPATH
/home/x/x12345/mymodule:/opt/app/modulefiles/common:
/opt/system/app/env/intel/isv:
/opt/system/app/env/intel/oss:

## 追加したパスを削除する
$ module unuse /home/x/x12345/mymodule

## 作成したmoduleファイルを、元のパスより優先度を低くして利用できるようにする
$ module use -a /home/x/x12345/mymodule

## moduleファイルのパスを確認する
$ echo $MODULEPATH
/opt/app/modulefiles/common:/opt/system/app/env/intel/isv:
/opt/system/app/env/intel/oss:
/home/x/x12345/mymodule:

例 moduleファイルの追加と利用

## 作成したmoduleファイルを確認する
$ ls -F /home/x/x12345/mymodule
ruby/
$ ls -F /home/x/x12345/mymodule/ruby
1.8.7  1.9.3  2.1.2

## 作成したmoduleファイルを利用できるようにする
$ module use /home/x/x12345/mymodule

## 作成したmoduleファイルが表示されることを確認する
$ module avail
--------------------------- /home/x/x12345/mymodule/ ---------------------------
ruby/1.8.7 ruby/1.9.3 ruby/2.1.2
------------------------- /opt/system/app/intel/ --------------------------
PrgEnvIntel/2022          intel/2022.3
(略)

## 作成したmoduleファイルをロードする
$ module load ruby/2.1.2e

Welcome to the Environment Modules Project
Man page of Modulefile