--- title: 環境設定ツール (modules) taxonomy: category: - docs external_links: process: true title: false no_follow: true target: _blank mode: active --- [toc] ## 概要{#overview} Modulesソフトウェアパッケージは、コンパイラ・ライブラリ・アプリケーションの利用に必要な環境設定をmoduleコマンドを実行することで、動的に切り替えて設定することができます。 異なるバージョンのコンパイラ・ライブラリ・アプリケーションを切り替えて利用する際に、簡単に環境設定を変更することができます。 ## 利用方法{#usage} ### moduleコマンドの基本操作{#basic} | コマンド | 説明 | |--- |--- | | module list | ロード済みmoduleファイルの一覧表示 | | module avail | 使用できる全moduleファイルの一覧表示 | | module show [module_file_name] | moduleファイルの設定内容の表示 | | module load [module_file_name] | moduleファイルのロード | | module unload [module_file_name] | moduleファイルのアンロード | | module switch [module_file_name1] [module_file_name2] |moduleファイルの切り替え(module_file_name1→module_file_name2) | ### モジュールファイルの依存関係を無視した強制変更 モジュールファイル間の依存関係により module load / unload / switch のエラーが発生する場合があります。 依存関係に異常が生じる可能性をご理解の上であれば、-f オプションを使うことで、強制的にモジュールファイルのロードやスイッチをすることができます。 ```bash ## ログイン直後の状態 $ module list Currently Loaded Modulefiles: 1) slurm/2022 2) SysB/2022 3) intel/2022.3(default) 4) intelmpi/2022.3(default) 5) PrgEnvIntel/2022(default) ## intelコンパイラを 2018.4 に切り替えようとしてもエラーになる $ module switch intel/2018.4 Unloading intel/2022.3 ERROR: intel/2022.3 cannot be unloaded due to a prereq. HINT: Might try "module unload PrgEnvIntel/2022" first. Switching from intel/2022.3 to intel/2018.4 ERROR: Unload of switched-off intel/2022.3 failed ## -f オプションを使用した強制的な切り替え $ module switch intel/2018.4 -f Unloading intel/2022.3 WARNING: Dependent 'PrgEnvIntel/2022' is loaded ## 変更後の状況 $ module list Currently Loaded Modulefiles: 1) slurm/2022 2) SysB/2022 3) intelmpi/2022.3(default) 4) PrgEnvIntel/2022(default) 5) intel/2018.4 ``` ### コンパイラ・ライブラリの利用方法{#compiler} #### ロードされているmoduleファイルの確認 各プログラミング環境利用のための包括的なModulesファイルセットとして、以下の3種を用意しています。 これらのモジュールファイルにより、コンパイラの環境とMPIの環境の初期設定が行われます。 - Intelプログラミング環境 (システムA/B/C/D/Eの標準環境) : PrgEnvIntel - NVIDIA HPC SDKプログラミング環境 (システムGの標準環境) : PrgEnvNvidia - GNUプログラミング環境 : PrgEnvGCC 現在のモジュール環境を確認するには `module list` コマンドを使用してください。 ```bash $ module list Currently Loaded Modulefiles: 1) XXX ``` #### プログラミング環境の切り替え ログイン時はシステムのメインコンパイラ環境になっています。 以下にプログラミング環境を切り替える例を記載しています。 **例 Intel環境からNVIDIA環境に切り替える場合** ```nohighlight $ module switch PrgEnvIntel PrgEnvNvidia ``` #### コンパイラバージョンの切り替え方法 複数バージョンが利用可能な場合、利用するコンパイラバージョンを切り替えることができます。 以下にintelコンパイラの場合の操作方法を例示しています。 **例 用意されているプログラミング環境を切り替える場合** ```nohighlight $ module switch PrgEnvIntel/2022 PrgEnvIntel/2018 ``` **例 Intelコンパイラの別バージョンを追加でロードする場合(後からロードしたほうが優先されます)** ```nohighlight $ module load intel/Y.Y ``` **例 Intelコンパイラのバージョンを個別に切り替える場合(-fが必要)** ```nohighlight $ module switch intel/X.X intel/Y.Y -f ``` 現在ロードしているバージョンの記述(上記例のintel/X.X)は省略することもできます。 ```nohighlight $ module switch intel/Y.Y -f ``` ### アプリケーションの利用方法{#application} **MATLABを利用する場合の例** moduleコマンドを実行し、環境設定を行います。(利用したいバージョンのmoduleファイルをロードします) ```nohighlight $ module load matlab/R2020b ``` MATLABの起動コマンドを実行することができるようになります。 ```nohighlight $ matlab ``` **MALABのバージョンを切り替える場合(R2020b→R2021a)** moduleコマンドを実行し、環境設定の変更を行います。 ```nohighlight $ module unload matlab/R2020b $ module load matlab/R2021a または $ module switch matlab/R2021a ``` 他のアプリケーションでの使い方は、[利用可能なソフトウェア](/software)のページをご確認ください。 ## moduleファイルの作成と追加{#add_module} moduleファイルをユーザ自身で作成し、利用することができます。 作成方法については、 [man page](http://modules.sourceforge.net/man/modulefile.html) をご覧ください。 作成したmoduleファイルを利用するためには、module use コマンドにmoduleファイルを格納したディレクトリを指定し、パスを追加してください。 一度追加したパスを削除したい場合は、module unuseコマンドを実行してください。 moduleファイルのパスは環境変数MODULEPATHで確認できます。 **例 moduleファイルパスの確認** ```nohighlight ## 作成したmoduleファイルを利用できるようにする(x12345ユーザの場合) $ module use /home/x/x12345/mymodule ## moduleファイルのパスを確認する $ echo $MODULEPATH /home/x/x12345/mymodule:/opt/app/modulefiles/common: /opt/system/app/env/intel/isv: /opt/system/app/env/intel/oss: ## 追加したパスを削除する $ module unuse /home/x/x12345/mymodule ## 作成したmoduleファイルを、元のパスより優先度を低くして利用できるようにする $ module use -a /home/x/x12345/mymodule ## moduleファイルのパスを確認する $ echo $MODULEPATH /opt/app/modulefiles/common:/opt/system/app/env/intel/isv: /opt/system/app/env/intel/oss: /home/x/x12345/mymodule: ``` **例 moduleファイルの追加と利用** ```nohighlight ## 作成したmoduleファイルを確認する $ ls -F /home/x/x12345/mymodule ruby/ $ ls -F /home/x/x12345/mymodule/ruby 1.8.7 1.9.3 2.1.2 ## 作成したmoduleファイルを利用できるようにする $ module use /home/x/x12345/mymodule ## 作成したmoduleファイルが表示されることを確認する $ module avail --------------------------- /home/x/x12345/mymodule/ --------------------------- ruby/1.8.7 ruby/1.9.3 ruby/2.1.2 ------------------------- /opt/system/app/intel/ -------------------------- PrgEnvIntel/2022 intel/2022.3 (略) ## 作成したmoduleファイルをロードする $ module load ruby/2.1.2e ``` ## リンク{#link} [Welcome to the Environment Modules Project](http://modules.sourceforge.net/) [Man page of Modulefile](http://modules.sourceforge.net/man/modulefile.html)