--- title: ' Intel MPIライブラリ' taxonomy: category: - docs external_links: process: true no_follow: true target: _blank mode: active --- [toc] ## 利用環境{#enviroment} ### 利用できるバージョン・システム{#version} バージョン | システムA | システムB | システムC | 備考 ------------------ | ----- | ----- | ----- | ---------- 2021.1.1 | ― | + | + | 2021年03月導入 2019.9 | ― | + | + | 2021年03月導入 2019.8 | ― | + | + | 2020年09月導入 2019.6 | ― | + | + | 2020年03月導入 2019.5 | ― | + | + | 2019年10月導入 2019.3 | ― | + | + | 2019年03月導入 2018.4 | ― | + (default) | + (default) | 2019年03月導入 2018.3 | ― | + | + | 2018年10月導入 2018.2 | ― | + | + | 2018年03月導入 2018.0 | ― | + | + | 2017年10月導入 2017.4 | ― | + | + | 2017年10月導入 2017.2 | ― | + | + | 2016年12月導入 2017.1 | ― | + | + | 2016年12月導入 5.1.3 | ― | + | + | 注:Intel CompilerとIntel MPIのバージョンは一致しない場合があります \+ : すべてのユーザが利用可能 ― : 利用不可 ### 環境設定{#modules} バージョン | moduleファイル名 ----------------- | ----------- 2021.1.1|impi/2021.1.1 2019.9 |impi/2019.9 2019.8 | impi/2019.8 2019.6 | impi/2019.6 2019.5 | impi/2019.5 2019.3 | impi/2019.3 2018.4 | impi/2018.4 2018.3 | impi/2018.3 2018.2 | impi/2018.2 2018.0 | impi/2018.0 2017.4 | impi/2017.4 2017.2 | impi/2017.2 2017.1 | impi/2017.1 5.1.3 | impi/5.1.3 コンパイラとして, [Intelコンパイラ](/compilers/intel) または [GNUコンパイラ](/compilers/gnu) を利用します.システムB,Cにログインした時点では,Intelコンパイラがデフォルトで利用できるようになっています.GNUコンパイラを利用される場合は,以下のようにmoduleコマンドを実行し,コンパイラを切り替えてください. ```nohighlight $ module switch PrgEnv-intel PrgEnv-gnu ``` Intel MPIライブラリのバージョンを切り替えたい場合は,以下のようにmoduleコマンドを実行してください. ```nohighlight $ module switch impi/4.1.0 impi/4.0.3 ``` moduleコマンドの詳細は [Modules](/config/modules) をご覧ください. ### スレッド並列サポートレベル{#threadsafe} Intel MPIで提供可能なスレッド並列サポートレベルは,MPI_THREAD_MULTIPLEです.各スレッドから自由にMPI関数を呼び出すことができます. ## コンパイル・実行方法{#usage} ### コンパイル{#compile} **コンパイルコマンド(Intelコンパイラ)** 言語 | コマンド | 実行形式 --------- | --------- | ---------------------------- Fortran | mpiifort | mpiifort [オプションの並び] ファイル名の並び C | mpiicc | mpiicc [オプションの並び] ファイル名の並び C++ | mpiicpc | mpiicpc [オプションの並び] ファイル名の並び **コンパイルコマンド(GNUコンパイラ)** 言語 | コマンド | 実行形式 --------- | -------- | -------------------------- Fortran | mpif90 | mpif90 [オプションの並び] ファイル名の並び C | mpicc | mpicc [オプションの並び] ファイル名の並び C++ | mpicxx | mpicxx [オプションの並び] ファイル名の並び **コンパイル例** ```nohighlight $ mpiifort -O3 -parallel sample_mpi.f90 ``` ### オプション{#option} Intel MPI のコンパイラでは, [Intelコンパイラのオプション](/compilers/intel#option) を利用することができます.ただし,オプション -static については利用できません.最適化オプション -fast を利用される際は,代わりとして -ipo -O3 -no-prec-div -static_mpi -xHost を指定してください. * **主要オプション(並列化,最適化など)** オプション名 | 説明 ------------ | ------------------- -static_mpi | MPIライブラリを静的にリンクします. ### 実行{#exec} コンパイルしたMPIプログラムを実行するためには, 会話型処理では **tssrun** コマンドを,バッチ処理では **mpiexec.hydra** コマンドを使用します.会話型実行,バッチ実行ともに,並列数は -A オプションの引数 p で指定します.詳細は, サンプル をご覧ください. **実行例(会話型)** ```nohighlight $ tssrun -A p=2 mpiexec.hydra ./a.out ``` <!-- old information ### InfiniBand設定{#infiniband} システムB,Cのノードには,1ノードあたり2本のInfiniBandが接続されています.デフォルトの設定では1本のみが使用されますが,実行時に以下の環境変数を設定することで,2本のInfiniBandを束ねて使用することができます. ```nohighlight (tcshを利用する場合) setenv I_MPI_FABRICS shm:ofa  setenv I_MPI_OFA_NUM_ADAPTERS 2 (bashを利用する場合) export I_MPI_FABRICS=shm:ofa export I_MPI_OFA_NUM_ADAPTERS=2 ``` --> ## サンプル{#sample} ### 会話型でのMPIプログラム実行{#tss} 会話型実行の詳細については, [会話型処理](/run/interactive) のページをご覧ください. * **8並列で実行** ```nohighlight $ tssrun -A p=8 mpiexec.hydra ./a.out ``` * **スレッド並列と組み合わせて実行(MPI 4並列,OpenMP 8並列)** ```nohighlight $ tssrun -A p=4:t=8:c=8 mpiexec.hydra ./a.out ``` ### バッチでのMPIプログラム実行{#lsf} バッチ実行の詳細については, システムBのバッチ処理(準備中) のページをご覧ください. * **8並列で実行** ```nohighlight $ cat sample.sh #!/bin/bash #QSUB -q gr19999b #QSUB -ug gr19999 #QSUB -W 5:00 #QSUB -A p=8 mpiexec.hydra ./a.out $ qsub sample.sh ``` * **スレッド並列と組み合わせて実行(MPI 4並列,OpenMP 8並列)** ```nohighlight $ cat sample.sh #!/bin/bash #QSUB -q gr19999b #QSUB -ug gr19999 #QSUB -W 5:00 #QSUB -A p=4:t=8:c=8:m=4G #QSUB -o %J.out mpiexec.hydra ./a.out $ qsub sample.sh ``` ## マニュアル{#manual} ### Ver 5.1 * [Intel MPI Library for Linux OS Reference Manual](https://web.kudpc.kyoto-u.ac.jp/Compiler_Manual/Intel/Intel_MPI_5.1/Reference_Manual.pdf) * [Intel MPI Library for Linux OS User Guide](https://web.kudpc.kyoto-u.ac.jp/Compiler_Manual/Intel/Intel_MPI_5.1/User_Guide.pdf) ### Ver 2018 * [Intel MPI Library for Linux OS Developer Reference](https://web.kudpc.kyoto-u.ac.jp/Compiler_Manual/Intel/Intel_MPI_2018/intelmpi-2018-developer-reference-linux.pdf) * [Intel MPI Library for Linux OS Developer Guide](https://web.kudpc.kyoto-u.ac.jp/Compiler_Manual/Intel/Intel_MPI_2018/intelmpi-2018-developer-guide-linux.pdf) ### Ver 2019 * [Intel MPI Library for Linux OS Developer Reference](https://web.kudpc.kyoto-u.ac.jp/Compiler_Manual/Intel/intel_parallel_studio_xe_2019_3/en/mpi/mpi_dev_reference_lin/index.htm) * [Intel MPI Library for Linux OS Developer Guide](https://web.kudpc.kyoto-u.ac.jp/Compiler_Manual/Intel/intel_parallel_studio_xe_2019_3/en/mpi/mpi_dev_guide_lin/index.htm) ## リンク{#link} * [Intel MPI Library Documentation](https://software.intel.com/en-us/articles/intel-mpi-library-documentation)