---
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)