environment modules(moduleコマンド)の利用は必須ではありません。
これまで通り、手動でPATHやLD_LIBRARY_PATHを設定したり、アプリケーション側で提供している
設定ファイル(*.sh,*.csh)を読み込んだりして使うことができます。
moduleコマンドで操作します。フロントエンドノード、演算ノードで共通に利用できます。
ただし、cshスクリプトでは特殊な注意が必要です。ページ下部をご覧ください。
ログイン時に自動でいくつかのパッケージが読み込まれていることにご注意ください。
% module load (モジュール名)
% module unload (モジュール名)
% module purge
% module avail (パス; オプション)
% module list
% module whatis (モジュール名; オプション)
% module help (モジュール名)
大抵のモジュールではデフォルトのバージョンが設定されています。バージョンを指定しないでloadすると、このデフォルトのバージョンが使われます。
インテルMPIの場合を例にしてみます。
% module purge
% module avail mpi/intelmpi------------------------- /local/apl/lx/modules/apl --------------------------
mpi/intelmpi/2017.3.196 mpi/intelmpi/2019
mpi/intelmpi/2018.2.199 mpi/intelmpi/5.0.2.044
% module load mpi/intelmpi
% module list
Currently Loaded Modulefiles:
1) mpi/intelmpi/2018.2.199
デフォルトバージョンはmodule availした時に表示される場合もありますが、されない場合もあります。
表示されない場合でも、moduleの定義されているディレクトリにある.versionというファイルを見れば確認できます。
今回の場合、mpi/intelmpiに対するデフォルトの定義は、/local/apl/lx/modules/apl/mpi/intelmpi/.versionにあります。
ファイルの中身を見ると次のようになっています。
% cat /local/apl/lx/modules/apl/mpi/intelmpi/.version
#%Module 1.0
set ModulesVersion "2018.2.199"
この設定によって、mpi/intelmpiを指定した時には2018.2.199のバージョンが使われます。
なお、moduleをunloadする際にも簡略化した表記が有効です。
% module list
Currently Loaded Modulefiles:
1) mpi/intelmpi/2018.2.199
% module unload mpi
% module list
No Modulefiles Currently Loaded.
amber18-bf1(インテル系ライブラリと非デフォルト環境のCUDA9.1を利用する場合)を利用する場合の比較を以下に示します。
このようなサンプルは各アプリケーションのsamples/ディレクトリにも置いてあります(*-module.*sh という名前です)。
#!/bin/sh
#PBS select=ncpus=1:mpiprocs=1:ompthreads=1:jobtype=gpu:ngpus=1
#PBS -l walltime=72:00:00if [ ! -z $PBS_O_WORKDIR ]; then
cd $PBS_O_WORKDIR
fiexport PATH=/local/apl/lx/cuda-9.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/local/apl/lx/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
. /local/apl/lx/amber18-bf1/amber.shpmemd.cuda -O -i mdin ......
#!/bin/sh
#PBS select=ncpus=1:mpiprocs=1:ompthreads=1:jobtype=gpu:ngpus=1
#PBS -l walltime=72:00:00if [ ! -z $PBS_O_WORKDIR ]; then
cd $PBS_O_WORKDIR
fimodule load amber/18/bugfix1
pmemd.cuda -O -i mdin ......
ログインシェルが csh で、スクリプトだけsh, bashの場合は、module コマンド実行前に source /etc/profile.d/modules.sh が必要です
cshの場合、moduleコマンドは/etc/profile.d/modules.cshでaliasとして定義されています。
ログインして対話型シェルで使う場合には特に設定は要りませんが、
ジョブスクリプトで利用する場合には明示的に/etc/profile.d/modules.cshを読み込む必要があります。
#!/bin/csh -f
#PBS select=ncpus=1:mpiprocs=1:ompthreads=1:jobtype=gpu:ngpus=1
#PBS -l walltime=72:00:00if ( $?PBS_O_WORKDIR ) then
cd $PBS_O_WORKDIR
endifsource /etc/profile.d/modules.csh # required!
module load amber/18/bugfix1pmemd.cuda -O -i mdin .......
利用可能なモジュールリストは module avail コマンドで参照できます。
(2018/6/30現在)
初期状態で自動的に読み込まれるモジュールは以下のようになっています。
これまでデフォルトで設定されていたPATH等の設定に対応しています。
厳密な規則はありませんが、原則的には
パッケージ名/バージョン(-リビジョン)/(リビジョン or コンパイラ種類)
と言った順序で並べるようにしています。
例:
amber/18/bugfix1
gaussian/g16/b01
gromacs/2016.5/intel
vmd/1.9.3
統合的なモジュールです。
ソフトウェアコレクション(scl)や、インテルの Parallel Studio を一括で読み込むための module 等があります。
ここにある intel_parallelstudio は apl や comp、lib に含まれるコンパイラ等の個別パッケージと conflict する可能性があります。
CUDAも含めた各種コンパイラ、プログラム言語の環境です。
雑多なアプリケーションです。
MPI 環境(Intel MPI, Open MPI)もここにあります。
ユーティリティ系のアプリケーションです
実際に計算に使うアプリケーションはここに配置しています。
ここに含まれるmodule群は、loadが失敗しないよう、ほぼ強制的に依存関係を解決します。
各種ライブラリです
その他の雑多な module です。明示的に load/unload する必要はほとんどないはずです。
parallelstudio全体を読み込まずに advisor、vtune 等を使いたい場合があれば、inteldev モジュールを load してください。