提供ソフトウェアの利用方法
遺伝研スーパーコンピュータでは、Environment moduleをアプリケーション・ツールの 利用環境の動的な切り替えの為に導入しました。従来のように環境設定ファイルを編集することなく 各アプリケーションの動作環境の切り替えを行うことができます。 Environment Moduleの詳細については、開発プロジェクトサイトを参照願います。
以下に本システムでの基本的なmoduleコマンドの利用方法について記載します。 moduleコマンドの基本操作としては以下があります。
- module list ロード済みの環境(モジュールファイル)の一覧
- module avail 使用できる環境(モジュールファイル)の一覧取得
- module show 環境名 環境(モジュールファイル)での設定内容の表示
- module load 環境名 環境(モジュールファイル)のロード
- module unload 環境名 環境のアンロード
- module switch 環境名1 環境名2 環境の切り替え
以下に各コマンドの使用例を示します。
module list
ユーザ環境に読み込み(ロード)済みの環境(モジュールファイル)の一覧を取得します。
$ module list Currently Loaded Modulefiles: 1) gcc/7.2.0
module avail
本システム内に定義されており、ロードすることで使用可能な環境の一覧を取得します。
$ module avail ---------------------------- /cm/local/modulefiles ----------------------------- cluster-tools/8.1 java/1.8.0_45 python/3.7.2 cmd java/1.8.0_202 r/3.5.2 cuda-dcgm/1.3.3.1 lua/5.3.4 ruby/1.9.3 dot module-git ruby/2.6.0 freeipmi/1.5.7 module-info shared gcc/7.2.0 null singularity/2.6.1 ipmitool/1.8.18 openldap java/1.6.0_45 openmpi/mlnx/gcc/64/3.1.1rc1
module show
環境(モジュールファイル)内での環境設定内容の詳細を表示します。
(例)Tensorflowのmodulefile内での環境設定内容の表示
$ module show [lect01@at028 ~]$ module show tensorflow ------------------------------------------------------------------- /cm/shared/modulefiles/tensorflow/1.7.0: module-whatis adds TensorFlow to your environment variables module load cm-ml-pythondeps module load cudnn/7.0 module load openblas module load cuda91/toolkit module load hdf5_18 prepend-path PYTHONPATH /cm/shared/apps/tensorflow/1.7.0/lib/python2.7/site-packages/ prepend-path PYTHONPATH /cm/shared/apps/tensorflow/1.7.0/lib64/python2.7/site-packages/ prepend-path PATH /cm/shared/apps/tensorflow/1.7.0/bin -------------------------------------------------------------------
module load
環境(モジュールファイル)をロードすることで、環境設定をユーザ環境に反映し利用可能にします。
注意事項:本システムでは、環境名sharedを追加で読み込むと以下のような本システムで定義済みの 環境群がさらに追加される設定になっています(2019/3/5時点)。もし、ユーザの環境によって有効に なっていない場合は、以下のloadコマンドを実行することで環境設定を読み込んでください。
$ module load shared $ module avail ---------------------------- /cm/shared/modulefiles ---------------------------- acml/gcc-int64/64/5.3.1 intel/compiler/32/2017/17.0.8 acml/gcc-int64/fma4/5.3.1 intel/compiler/32/2018/18.0.5 acml/gcc-int64/mp/64/5.3.1 intel/compiler/64(default) acml/gcc-int64/mp/fma4/5.3.1 intel/compiler/64/2017/17.0.8 acml/gcc/64/5.3.1 intel/compiler/64/2018/18.0.5 acml/gcc/fma4/5.3.1 intel/daal/64/2017/8.262 acml/gcc/mp/64/5.3.1 intel/daal/64/2018/4.274 acml/gcc/mp/fma4/5.3.1 intel/gdb/64/2017/8.262 bazel/0.11.1 intel/gdb/64/2018/5.274 blacs/openmpi/gcc/64/1.1patch03 intel/ipp/64/2017/8.262 blas/gcc/64/3.8.0 intel/ipp/64/2018/4.274 bonnie++/1.97.3 intel/itac/2017/8.034 caffe/0.17 intel/itac/2018/4.025 caffe2/0.8.1 intel/mkl/64(default) chainer/3.5.0 intel/mkl/64/2017/8.262 cm-ml-python3deps/2.0.0 intel/mkl/64/2018/4.274 cm-ml-pythondeps/2.0.0 intel/mkl/mic/2017/8.262 cntk/5 intel/mpi/32/2017/8.262 cub/1.8.0 intel/mpi/32/2018/4.274 cuda10.0/blas/10.0.130 intel/mpi/64(default) cuda10.0/fft/10.0.130 intel/mpi/64/2017/8.262 cuda10.0/nsight/10.0.130 intel/mpi/64/2018/4.274 cuda10.0/profiler/10.0.130 intel/mpi/mic/2017/8.262 cuda10.0/toolkit/10.0.130 intel/tbb/32/2017/8.262 cuda80/blas/8.0.61 intel/tbb/32/2018/4.274 cuda80/fft/8.0.61 intel/tbb/64(default) cuda80/nsight/8.0.61 intel/tbb/64/2017/8.262 cuda80/profiler/8.0.61 intel/tbb/64/2018/4.274 cuda80/toolkit/8.0.61 intel/tbb/mic/2017/8.262 cuda90/blas/9.0.176 iozone/3_471 cuda90/fft/9.0.176 keras/2.1.5 cuda90/nsight/9.0.176 lapack/gcc/64/3.8.0 cuda90/profiler/9.0.176 ml-python3/keras/2.1.5 cuda90/toolkit/9.0.176 ml-python3/mxnet/1.1.0 cuda91/blas/9.1.85 ml-python3/pytorch/0.4.0a0 cuda91/fft/9.1.85 ml-python3/tensorflow/1.7.0 cuda91/nsight/9.1.85 mlpython/0.1 cuda91/profiler/9.1.85 mpich/ge/gcc/64/3.2.1 cuda91/toolkit/9.1.85 mpiexec/0.84_432 cuda92/blas/9.2.88 mvapich2/gcc/64/2.3b cuda92/fft/9.2.88 mxnet/1.1.0 cuda92/nsight/9.2.88 nccl/1.3.4 cuda92/profiler/9.2.88 nccl2/2.1.15 cuda92/toolkit/9.2.88 netcdf/gcc/64/4.5.0 cudnn/7.0 netperf/2.7.0 default-environment openblas/dynamic(default) digits/6.1.1 openblas/dynamic/0.2.20 fftw2/openmpi/gcc/64/double/2.1.5 opencv3 fftw2/openmpi/gcc/64/float/2.1.5 openmpi/cuda/64/3.1.1 fftw3/openmpi/gcc/64/3.3.7 openmpi/gcc/64/1.10.7 gcc5/5.5.0 pgi/64/18.4 gdb/8.0.1 protobuf/3.2.1 globalarrays/openmpi/gcc/64/5.6.1 pytorch/0.4.0a0 hdf5/1.10.1 scalapack/openmpi/gcc/64/2.0.2 hdf5_18/1.8.20 sge/2011.11p1 horovod/0.12.1 slurm/17.11.8 hpcx/2.0.0 tensorflow/1.7.0 hpl/2.2 theano/1.0.1 hwloc/1.11.8 torch7/7.0 intel-tbb-oss/ia32/2018_20180618oss torque/6.1.1 intel-tbb-oss/intel64/2018_20180618oss
また、上記にリストされるソフトウェア環境の中には、システム管理者向け(権限がないと設定・利用できない) のものがあります。その点ご了承ください(例、slurm、torque等)) ここで、例えばIntelコンパイラが利用したい場合は、上記の出力結果内にある、intel/compiler/32/2017/17.0.8 をmodule load コマンドで指定してください。以下のようです。
[lect01@at032 compilers_and_libraries]$ which icc /usr/bin/which: no icc in (/cm/shared/apps/intel/compilers_and_libraries/2018.4.274/linux/mpi/intel64/bin:/cm/local/apps/gcc/7.2.0/bin:/home/geadmin/UGER/bin/lx-amd64:/cm/local/apps/environment-modules/4.0.0//bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/ibutils/bin:/sbin:/usr/sbin:/cm/local/apps/environment-modules/4.0.0/bin:/home/lect01/.local/bin:/home/lect01/bin) [lect01@at032 compilers_and_libraries]$ module load intel/compiler/32/2017/17.0.8 [lect01@at032 compilers_and_libraries]$ which icc /cm/shared/apps/intel/compilers_and_libraries/2017.8.262/linux/bin/ia32/icc [lect01@at032 compilers_and_libraries]$
module unload
ロードした環境を削除するにはunloadを使用します。
[lect01@at032 compilers_and_libraries]$ module unload intel/compiler/32/2017/17.0.8 [lect01@at032 compilers_and_libraries]$ which icc /usr/bin/which: no icc in (/cm/shared/apps/intel/compilers_and_libraries/2018.4.274/linux/mpi/intel64/bin:/cm/local/apps/gcc/7.2.0/bin:/home/geadmin/UGER/bin/lx-amd64:/cm/local/apps/environment-modules/4.0.0//bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/ibutils/bin:/sbin:/usr/sbin:/cm/local/apps/environment-modules/4.0.0/bin:/home/lect01/.local/bin:/home/lect01/bin)
iccが参照できなくなっているのがわかります。
module switch
環境の切り替えを1コマンドで行います(unload/load)。 例としてOpenMPIからIntel MPIへの環境の切り替えは以下のように行います。
[lect01@at028 local]$ module load openmpi [lect01@at028 local]$ which mpicc /usr/mpi/gcc/openmpi-3.1.1rc1/bin/mpicc [lect01@at028 local]$ module switch openmpi intel/mpi [lect01@at028 local]$ which mpicc /cm/shared/apps/intel/compilers_and_libraries/2018.4.274/linux/mpi/intel64/bin/mpicc
参照されるmpiccが切り替わっているのがわかります。