ソフトウェアの利用方法(moduleコマンドの利用)

moduleコマンドによる利用環境の切り替え

玄界には様々なソフトウェアがインストールされていますが、全てのソフトウェアがすぐに起動できる状態にはなっていません。Environment Modules(moduleコマンド)によって利用環境を切り替えて利用する必要があります。

慣れるまでは手間に感じるかもしれませんが、同一ソフトウェアの異なるバーションを区別して利用するなどが容易に行えます。

本ページではmoduleコマンドの基本的な利用方法を紹介します。moduleコマンドのより詳しい説明はman moduleまたは公式サイトを確認してください。玄界にインストールされた各ソフトウェアを利用するために必要なmoduleコマンドについてはそれぞれのソフトウェアのページを確認してください。


利用可能なmodule環境の一覧表示

module avail を実行することで、現在利用(load)可能なmodule環境の一覧を表示することができます。特定のmoduleをloadしていることが条件となっているmoduleは表示されない点に注意してください。(特定のmoduleをloadした状態でmodule avialを実行した場合にのみ表示されるmoduleがあります。)

moduleの依存関係を把握するためのサポートとして show_module コマンドも用意されています。表示の意味(関係性)は以下の通りです。NodeGroupではApplicationNameが利用可能です。これを利用するにはModuleNameのloadが必要です。対象moduleが正しくloadおよび実行されるためには、BaseCompiler/MPIのloadも必要です。

$ show_module
ApplicationName                     ModuleName                      NodeGroup   BaseCompiler/MPI
------------------------------------------------------------------------------------------------
Amber & AmberTools                  amber/24                        LoginNode   gcc/8 impi/2021.12
Amber & AmberTools                  amber/24                        NodeGroupA  gcc/8 impi/2021.12
Amber & AmberTools                  amber/24                        NodeGroupB  gcc/8 impi/2021.12
Amber & AmberTools                  amber/24                        NodeGroupC  gcc/8 impi/2021.12
Amber & AmberTools (CUDA support)   amber-cuda/24-12.2.2            LoginNode   gcc/8 impi/2021.12 cuda/12.2.2
Amber & AmberTools (CUDA support)   amber-cuda/24-12.2.2            NodeGroupA  gcc/8 impi/2021.12 cuda/12.2.2
Amber & AmberTools (CUDA support)   amber-cuda/24-12.2.2            NodeGroupB  gcc/8 impi/2021.12 cuda/12.2.2
Amber & AmberTools (CUDA support)   amber-cuda/24-12.2.2            NodeGroupC  gcc/8 impi/2021.12 cuda/12.2.2
(省略)

また、-kオプションを使うことで表示内容の絞り込みも可能です。

$ show_module -k Intel
ApplicationName                     ModuleName                      NodeGroup   BaseCompiler/MPI
------------------------------------------------------------------------------------------------
Intel MPI                           impi/2021.10.0                  LoginNode   intel/2023.2
Intel MPI                           impi/2021.10.0                  NodeGroupA  intel/2023.2
Intel MPI                           impi/2021.10.0                  NodeGroupB  intel/2023.2
Intel MPI                           impi/2021.10.0                  NodeGroupC  intel/2023.2
(省略)

module環境のロード(利用)

module load 対象module名 を実行することで対象のmodule環境がロードされ、ソフトウェアなどが利用可能になります。(多くの場合は環境変数 PATH などが更新されます。)

module avail により出力されたmodule一覧では、/ によってmodule名とバージョン名などが区切られています。module名だけ指定してloadすることも可能であり、その場合(バージョン名などを指定しなかった場合)は (default) が付記されているものがloadされます。

コンパイラやライブラリによっては、プログラム作成時(ログインノード作業時)とプログラム実行時(ジョブスクリプト内)に同じmoduleをloadしていなければ実行できない(起動できない、正しく実行できない)ことに注意してください。また、互いに排他(同時に利用できない)なmoduleもあります。必要に応じてunloadやswitchなどを行ってください。


ロードされているmodule環境の一覧表示

module list を実行することで現在loadされているmodule環境の一覧を表示することができます。


ロードしているmodule環境のアンロード(利用終了)

module unload 対象module名 を実行することでload済みのmodule環境をアンロードすることができます。


module環境の切り替え(入れ替え)

module switch 切り替え元module名 切り替え先module名 を実行することでmoduleの入れかえを行うことができます。


module環境の情報を得る

module help 対象module名module whatis 対象module名 を実行することで、対象module環境についてのヒントを得ることができます。対象moduleに対応する情報が設定されている場合に限りますが、簡単な利用方法や、関連するmoduleについての役に立つ情報が表示されることがあります。


module環境の初期化

module purge を実行することで、load済みのmoduleを全てunloadし初期状態に戻すことができます。


利用例 1

moduleコマンドの実行例として、CUDAコンパイラ(nvcc)を利用する例を紹介します。
$ で始まっている行はコマンド実行、# で始まっている行は説明用のコメントです。

# 利用可能なmodule一覧の確認
$ module avail
---------------------------------- /home/modules/modulefiles/LN/core ----------------------------------
cuda/11.8.0           gcc-toolset/12  intel/2023.2           nvidia/23.9(default)
cuda/12.2.2(default)  gcc/8(default)  intel/2024.1(default)

---------------------------------- /home/modules/modulefiles/LN/util ----------------------------------
avs/express85(default)     jupyter_notebook/7.2.1(default)  molpro/2024.1.0_mpipr
fieldview/2023(default)    marc/2024.1(default)             molpro/2024.1.0_sockets
gaussian/16.C.01(default)  mathematica/14.0(default)        nastran/2024.1(default)
julia/1.10.3(default)      matlab/R2024a(default)           singularity-ce/4.1.3(default)

# load済みmoduleの確認(初期状態ではloadされていない)
$ module list
No Modulefiles Currently Loaded.

# 初期状態ではCUDAコンパイラnvccが利用できない
$ nvcc --version
-bash: nvcc: command not found
# cuda moduleをloadするとnvccが利用可能になる
$ module load cuda
$ module list
Currently Loaded Modulefiles:
 1) cuda/12.2.2(default)
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:02:13_PDT_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0

# loadするバージョンの変更
$ module switch cuda/12.2.2 cuda/11.8.0
$ module list
Currently Loaded Modulefiles:
 1) cuda/11.8.0
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

# module情報の確認
$ module help cuda
-------------------------------------------------------------------
Module Specific Help for /home/modules/modulefiles/LN/core/cuda/12.2.2:

1. How to use NVIDIA CUDA Toolkit

(1) Set environment
    [username@genkai0001 work]$ module load cuda/12.2.2

(2) Compile/link
    [username@genkai0001 work]$ nvcc [option] file

-------------------------------------------------------------------
$ module whatis cuda
---------------------------------- /home/modules/modulefiles/LN/core ----------------------------------
         cuda/11.8.0: CUDA Toolkit installed on 2024/06/13
         cuda/12.2.2: CUDA Toolkit installed on 2023/09/20

# moduleの初期化(全てunload)
$ module purge
$ module list
No Modulefiles Currently Loaded.

利用例2

moduleコマンドの実行例として、NVIDIA HPC SDKを利用する例を紹介します。nvidia moduleをloadしないと関連するMPIライブラリのmoduleの情報が表示されない構成になっています。moduleに依存関係がある場合の参考にしてください。

$ で始まっている行はコマンド実行、# で始まっている行は説明用のコメントです。

# 初期状態で利用できるmodule一覧
$ module avail
----------------------------------------------------------------- /home/modules/modulefiles/LN/core -----------------------------------------------------------------
cuda/11.8.0  cuda/12.2.2(default)  gcc-toolset/12  gcc/8(default)  intel/2023.2  intel/2024.1(default)  nvidia/23.9(default)

----------------------------------------------------------------- /home/modules/modulefiles/LN/util -----------------------------------------------------------------
avs/express85(default)     julia/1.10.3(default)            mathematica/14.0(default)  molpro/2024.1.0_sockets
fieldview/2023(default)    jupyter_notebook/7.2.1(default)  matlab/R2024a(default)     nastran/2024.1(default)
gaussian/16.C.01(default)  marc/2024.1(default)             molpro/2024.1.0_mpipr      singularity-ce/4.1.3(default)

# nvidia moduleをloadするとavailで確認できるmoduleが増える
$ module load nvidia
$ module list
Currently Loaded Modulefiles:
 1) nvidia/23.9(default)
$ module avail
--------------------------------------------------------- /home/modules/modulefiles/LN/compiler/nvidia/23.9 ---------------------------------------------------------
nvhpcx/23.9  nvhpcx/23.9-cuda12  nvompi/23.9

----------------------------------------------------------------- /home/modules/modulefiles/LN/core -----------------------------------------------------------------
cuda/11.8.0  cuda/12.2.2(default)  gcc-toolset/12  gcc/8(default)  intel/2023.2  intel/2024.1(default)  nvidia/23.9(default)

----------------------------------------------------------------- /home/modules/modulefiles/LN/util -----------------------------------------------------------------
avs/express85(default)     julia/1.10.3(default)            mathematica/14.0(default)  molpro/2024.1.0_sockets
fieldview/2023(default)    jupyter_notebook/7.2.1(default)  matlab/R2024a(default)     nastran/2024.1(default)
gaussian/16.C.01(default)  marc/2024.1(default)             molpro/2024.1.0_mpipr      singularity-ce/4.1.3(default)

# nvhpcx(またはnvompi)をloadすることで、HPC SDKに含まれる「GPUに対応したMPI」も利用可能になる
$ module load nvhpcx
$ module list
Currently Loaded Modulefiles:
 1) nvidia/23.9(default)   2) nvhpcx/23.9