moduleコマンドのインストール方法とmodulefileの書き方

Linux

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

シェルと同時に起動させずに手作業で実行する場合やシェルスクリプト内で使用する場合は、

. /home/apps/Modules/init/profile.sh
スポンサーリンク

modulefilesの追加方法

コマンド操作で追加する方法はこちらです。この設定方法ではシェルを閉じると設定が消えます。

module use --append /opt/nvidia/hpc_sdk/modulefiles

その場限りの設定ではなく、永続的な設定をしたい場合は3通りの方法があります。

方法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が通っているディレクトリにコピーする。インストール時に–modulefilesdir=/home/apps/Modules/modulefilesを指定している場合はそこも可。

スポンサーリンク

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が動く状態では以下の環境変数が定義されます。

$MODULEPATHmoduleファイルが検索される場所
$MODULESHOMEmoduleのインストール場所
スポンサーリンク

WSLにNvidiaのHPC SDKを入れた場合は、上記の方法1で以下の内容を記載します。

module use --append /opt/nvidia/hpc_sdk/modulefiles

WSLにIntel OneAPIを入れた場合は、以下のコマンドを実行します。

cd /opt/intel/oneapi
sudo ./modulefiles-setup.sh --output-dir=/opt/intel/oneapi/modulefiles

これによって/opt/intel/oneapi/modulefiles ディレクトリにmoduleファイルが生成されます。
それを方法1のやり方で追記します。

module use --append /opt/intel/oneapi/modulefiles

以上のようにHPC SDKとOneAPIが入っている状態では次のようにmoduleが読み込まれます。

$ module avail
----------------------------------- /usr/share/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

------------------------------------ /opt/intel/oneapi/modulefiles ------------------------------------
advisor/2024.0          dal/2024.0.0            ifort/2024.0.2              mkl/2024.0
advisor/latest          dal/latest              ifort/latest                mkl/latest
ccl/2021.11.2           debugger/2024.0.0       ifort32/2024.0.2            mkl32/2024.0
ccl/latest              debugger/latest         ifort32/latest              mkl32/latest
compiler-rt/2024.0.2    dev-utilities/2024.0.0  inspector/2024.0            mpi/2021.11
compiler-rt/latest      dev-utilities/latest    inspector/latest            mpi/latest
compiler-rt32/2024.0.2  dnnl/3.3.0              intel_ipp_intel64/2021.10   oclfpga/2024.0.0
compiler-rt32/latest    dnnl/latest             intel_ipp_intel64/latest    oclfpga/latest
compiler/2024.0.2       dpct/2024.0.0           intel_ippcp_intel64/2021.9  tbb/2021.11
compiler/latest         dpct/latest             intel_ippcp_intel64/latest  tbb/latest
compiler32/2024.0.2     dpl/2022.3              itac/2022.0                 vtune/2024.0
compiler32/latest       dpl/latest              itac/latest                 vtune/latest

Key:
modulepath
スポンサーリンク

modulefileの作り方

modulefileは簡単に作ることができます。例えばIntel OneAPIでコンパイルしたQEを実行するための環境は以下のように書くことができます。

#%Module1.0
##
## Quantum ESPRESSO 7.2 Intel OneAPI
##

module load mpi/latest
module load mkl/latest

prepend-path PATH            "/home/wsl/.local/qe/bin"
setenv       ESPRESSO_PSEUDO "/home/wsl/QE/pseudo"

このように書くことができます。module loadは別moduleから環境変数をロード、prepend-pathは指定した環境変数の先頭に書き加える、setenvは新たな環境変数を定義する、です。prepend-pathではなくappend-pathにすると末尾に追加されます。

これをファイル名qe7.2_cpuとしてmodulefilesのディレクトリに置くと、

$ module avail

中略

------------------------------------ /home/wsl/modulefiles ------------------------------------
qe7.2_cpu

$ module load qe7.2_cpu
$ mpiexec -n 8 pw.x -in sample.pwi

このような形で使用できます。

コメント

タイトルとURLをコピーしました