Linuxで環境変数の切り替えを簡単に行うことができるmoduleコマンド(Environment Modules)のインストール方法を解説します。
インストール方法
以下のコマンドでインストールできます。
インストール先(–prefix)とmoduleファイルディレクトリ(–modulefilesdir)は任意の場所を設定してください。
wget https://github.com/cea-hpc/modules/releases/download/v5.4.0/modules-5.4.0.tar.gz
tar -zxvf modules-5.4.0.tar.gz
cd modules-5.4.0/
./configure --prefix=/home/apps/Modules --modulefilesdir=/home/apps/Modules/modulefiles
make
sudo make install
そしてシェルの起動と同時にmoduleを動くようにするには、インストール先にある以下のファイルのシンボリックリンクを/etc/profile.d/に置きます。
sudo ln -s /home/apps/Modules/init/profile.sh /etc/profile.d/modules.sh
sudo ln -s /home/apps/Modules/init/profile.csh /etc/profile.d/modules.csh
modulefilesの追加方法
コマンド操作で追加する方法はこちらです。この設定方法ではシェルを閉じると設定が消えます。
module use --append /opt/nvidia/hpc_sdk/modulefiles
その場限りの設定ではなく、永続的な設定をしたい場合は2通りの方法があります。
方法1
スクリプトにmodulefilesのパスを記載する。
vi /home/apps/Modules/init/profile.sh
#このファイルに上記の module use --append を追記する
方法2
Modulepathを追加する。
vi /home/apps/Modules/etc/.modulespath
#このファイルにmodulefilesのパスを追記する
方法3
Moduleのファイルを方法2のModulepathが通っているディレクトリにコピーする。
moduleコマンドの使用方法
moduleコマンドを使用するには予めinitのスクリプトが動いている必要があります。上記のインストール手順で/etc/profile.d/modules.shを設定していれば勝手に動くようになります。
なお、シェルスクリプト等でコマンドを実行したい場合は、スクリプトファイル内で以下のコマンドを書いておく必要があります。
. /etc/profile.d/modules.sh
これをやらないと module: not found と表示されてしまいます。
ではmoduleコマンドを打ってみましょう。
$ module
Modules Release 5.0.1 (2021-10-16)
Usage: module [options] [command] [args ...]
Loading / Unloading commands:
add | load modulefile [...] Load modulefile(s)
:
:
ヘルプ的なものが表示されます。キーボードのqを押すと脱出できます。
よく使うコマンドは
module avail | 使用できるmoduleの一覧を表示 |
module show compiler/latest | 指定したmoduleの内容を表示(例 compiler/latest) |
module load compiler/latest | 指定したmoduleを読み込む(例 compiler/latest) |
module list | 現在読み込まれているmoduleを表示 |
module purge | 何も読み込まれていない状態に戻す |
なお、moduleが動く状態では以下の環境変数が定義されます。
$MODULEPATH | moduleファイルが検索される場所 |
$MODULESHOME | moduleのインストール場所 |
例
WSLにNvidiaのHPC SDKを入れた場合は、上記の方法1で以下の内容を記載します。
module use --append /opt/nvidia/hpc_sdk/modulefiles
WSLにIntel OneAPIを入れた場合は、以下のコマンドを実行します。
cd /opt/intel/oneapi
./modulefiles-setup.sh
これによって /home/wsl/modulefiles ディレクトリにmoduleファイルが生成されます。(ユーザ名がwslの場合)
それを方法1のやり方で追記します。
module use --append /home/wsl/modulefiles
以上のようにHPC SDKとOneAPIが入っている状態では次のようにmoduleが読み込まれます。
$ module avail
----------------------- /home/apps/Modules/modulefiles -----------------------
dot module-git module-info modules null use.own
---------------------- /opt/nvidia/hpc_sdk/modulefiles -----------------------
nvhpc-byo-compiler/23.11 nvhpc-hpcx/23.11 nvhpc-openmpi3/23.11
nvhpc-hpcx-cuda12/23.11 nvhpc-nompi/23.11 nvhpc/23.11
--------------------------- /home/wsl/modulefiles ----------------------------
advisor/2024.0 dev-utilities/latest itac/2022.0
advisor/latest dnnl/3.3.0 itac/latest
ccl/2021.11.2 dnnl/latest mkl/2024.0
ccl/latest dpct/2024.0.0 mkl/latest
compiler-rt/2024.0.2 dpct/latest mkl32/2024.0
compiler-rt/latest dpl/2022.3 mkl32/latest
compiler-rt32/2024.0.2 dpl/latest mpi/2021.11
compiler-rt32/latest ifort/2024.0.2 mpi/latest
compiler/2024.0.2 ifort/latest oclfpga/2024.0.0
compiler/latest ifort32/2024.0.2 oclfpga/latest
compiler32/2024.0.2 ifort32/latest tbb/2021.11
compiler32/latest inspector/2024.0 tbb/latest
dal/2024.0.0 inspector/latest vtune/2024.0
dal/latest intel_ipp_intel64/2021.10 vtune/latest
debugger/2024.0.0 intel_ipp_intel64/latest
debugger/latest intel_ippcp_intel64/2021.9
dev-utilities/2024.0.0 intel_ippcp_intel64/latest
Key:
modulepath
以上!
コメント