現在地

module による環境設定

最終更新: 2021/3/1

はじめに

このページでは Environment Modules (module コマンド)でコンパイラ等の環境整備を行う方法を説明します。
なお、module コマンドを用いずに環境変数を直接操作するなどして設定を行うことも可能です。
各アプリケーションでも、多くの場合には module コマンドを使わないサンプルも用意しています。

こちらのページにも簡単な解説があります。
 

デフォルト環境の確認

独自設定をしていない場合、ログイン直後でもいくつかの module が読み込まれた状態になっています。
現在読み込まれている module のリストは module list コマンドで確認できます。

Last login: Mon Mar  1 12:27:12 2021 from ********.**.**
[user@ccfep3 ~]$ module list
Currently Loaded Modulefiles:
  1) intel_parallelstudio/2018update4   4) allinea/7.1
  2) pgilic                             5) cuda/9.1
  3) pgi/18.1

[user@ccfep3 ~]$

PATH 等も合わせて設定されています。

[user@ccfep3 ~]$ icc -v
icc version 18.0.5 (gcc version 4.8.5 compatibility)
[user@ccfep3 ~]$

 

利用可能な module

利用可能な module のリストは module avail コマンドで取得できます。

[user@ccfep2 ~]$ module avail

-------------------------------- /local/apl/lx/modules/suite --------------------------------
intel_parallelstudio/2015update1          intel_parallelstudio/2020update2
intel_parallelstudio/2017update4          scl/devtoolset-3
intel_parallelstudio/2017update8          scl/devtoolset-4
intel_parallelstudio/2018update2          scl/devtoolset-6
intel_parallelstudio/2018update4(default) scl/devtoolset-7
intel_parallelstudio/2019update1          scl/devtoolset-8
intel_parallelstudio/2019update5          scl/devtoolset-9

-------------------------------- /local/apl/lx/modules/comp ---------------------------------
cuda/10.1             intel/15.0.1          intel/19.0.1          pgi/16.5
cuda/11.1             intel/17.0.4          intel/19.0.5          pgi/17.5
cuda/7.5              intel/17.0.8          intel/19.1.2          pgi/18.1(default)
cuda/8.0              intel/18.0.2          julia/1.3.1           pgi/20.4
cuda/9.1(default)     intel/18.0.5(default) julia/1.5.3

--------------------------------- /local/apl/lx/modules/apl ---------------------------------
mpi/intelmpi/2017.3.196   mpi/openmpi/2.1.3/intel19 mpi/openmpi/4.0.0/gnu8.3
mpi/intelmpi/2017.4.262   mpi/openmpi/3.1.0/gnu4.8  mpi/openmpi/4.0.0/intel15
(以下省略)

導入されているアプリケーションのリストはこちらのページでも確認できます。
また、OS 非標準のものについては /local/apl/lx 以下に導入されておりますので、こちらのディレクトリを直接確認することもできます。

  • scl/devtoolset-* で提供される非標準バージョンの GCC については /opt/rh/devtoolset-* 以下に導入されています。
  • cmake や boost のようにデフォルトバージョンが /usr 以下にある OS 標準を指すものもあります
  • バージョン名を省略して読み込んだ場合は(default)となっているバージョンが読み込まれます

 

環境の読み込み、切り替え(load, switch, unload, purge)

module load で module を読み込むことができます。
1 つのソフト、アプリについて複数のバージョンを読み込むことは原則できません。module switch でバージョンを切り替えることができます。

[user@ccfep2 ~]$ module list
  1) intel_parallelstudio/2018update4   4) allinea/7.1
  2) pgilic                             5) cuda/9.1
  3) pgi/18.1

既に cuda/9.1 が読み込まれていますが、ここで cuda/10.1 を読み込もうとするとエラーになります。

[user@ccfep2 ~]$ module load cuda/10.1

ERROR: You cannot load multiple versions of "cuda".

Currently Loaded Modulefiles:
  1) intel_parallelstudio/2018update4   4) allinea/7.1
  2) pgilic                             5) cuda/9.1(default)
  3) pgi/18.1

この場合は switch (swap でも同義です)でバージョンを切り替えることが可能です。
一旦 unload (rm や remove でも同義です)してから load (add でも同義です)することも可能です。

[user@ccfep2 ~]$ module switch cuda/10.1
[user@ccfep2 ~]$ module list
Currently Loaded Modulefiles:
  1) intel_parallelstudio/2018update4   4) allinea/7.1
  2) pgilic                             5) cuda/10.1
  3) pgi/18.1

[user@ccfep2 ~]$ module unload cuda
[user@ccfep2 ~]$ module load cuda/10.1
[user@ccfep2 ~]$ module list
Currently Loaded Modulefiles:
  1) intel_parallelstudio/2018update4   4) allinea/7.1
  2) pgilic                             5) cuda/10.1
  3) pgi/18.1

unload の際、上のようにバージョンを省略することも可能です。また、module purge で全モジュールを unload することもできます。

[user@ccfep2 ~]$ module list
Currently Loaded Modulefiles:
  1) intel_parallelstudio/2018update4   4) allinea/7.1
  2) pgilic                             5) cuda/10.1
  3) pgi/18.1
[user@ccfep2 ~]$ module purge
[user@ccfep2 ~]$ module list
No Modulefiles Currently Loaded.

 

アプリ環境の読み込み

コンパイラやライブラリだけでなく、Gaussian や Amber のようなソフトについても module を用意しています。
formchk や ambpdb のようなコマンドをフロントエンドで呼び出す際などに便利かもしれません。

[user@ccfep2 ~]$ formchk
bash: formchk: コマンドが見つかりませんでした...
[user@ccfep2 ~]$ ambpdb
bash: ambpdb: コマンドが見つかりませんでした...
[user@ccfep2 ~]$ module load gaussian/g16/c01
[user@ccfep2 ~]$ module load amber/20/update9
info: switching version of cuda to 11.1
[user@ccfep2 ~]$ ambpdb
Error: 'prmtop': No such file or directory

Usage: ambpdb -p 'Top' -c 'Coords' [Additional Options]
       ambpdb -p 'Top' < 'AmberRestart' [Additional Options]
    -p 'Top'       Topology file (default: prmtop).
    -c 'Coords'    Coordinate file.
    'AmberRestart' Amber restart file from STDIN.
  PDB is written to STDOUT.
  Use '-h' or '--help' to see additional options.

[user@ccfep2 ~]$ formchk
 Checkpoint file?

 

注意点

  • ログインシェルが /bin/csh の場合、ジョブスクリプト中で module コマンドを使う前に source /etc/profile.d/modules.csh のように設定を読み込む必要があります。
    • フロントエンドで操作する際は不要です。
  • Intel Parallel Studio (例: intel_parallelstudio/2018update4) とインテルコンパイラ(例: intel/18.0.5)を同時に読み込むことはできません。
    • Parallel Studio の個別コンポーネントを使う場合には、まず parallel studio のモジュールを unload する必要があります。
    • インテルコンパイラだけでなく、mkl や Intel MPI についても同様です。
  • 一つのアプリ/ライブラリについて複数のバージョンを読み込むことは原則できません。
  • あるモジュールを読み込んだ時、自動的に他のパッケージが読み込まれる場合があります。
    • 例えば、一個上で amber/20/update9 を読み込んだ際に cuda のバージョンが自動的に 11.1 に切り替えられています。
  • シェルの関数定義を必要とするソフトについては現状 module での設定ができません。
    • (environment modules 自体のバージョン更新が必要なため)