user/pages/05.config/01.modules/docs.ja.md
452be89a
 ---
 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)