user/pages/08.compilers/06.intelmpi/docs.ja.md
452be89a
 ---
 title: ' Intel MPIライブラリ'
 taxonomy:
     category:
         - docs
 external_links:
     process: true
     no_follow: true
     target: _blank
     mode: active
 ---
 
 [toc]
 
 ## 利用環境{#enviroment}
 ### 利用できるバージョン・システム{#version}
495abba5
 バージョン          | モジュールファイル名 | システムA | システムB/C | システムG | クラウドシステム | 備考
 ---                 | ---                  | ---         | ---       | ---              | ---  | ---
1c0a127b
 2024.0 | intel/2024.0 | + | +| - | + | 2024年4月導入.  Intelコンパイラ + MKL + TBB
 2023.2 (default)  | intel/2023.2 | + | +| - | + | 2024年4月導入.  Intelコンパイラ + MKL + TBB
 2023.2-rt | intel/2023.2-rt | + | +| - | + | 2024年4月導入.  ランタイムライブラリ
495abba5
 2023.1 | intel/2023.1 | + | + | - | + | 2023年6月導入.
 2023.1-rt | intel/2023.1-rt | + | + | - | + | 2023年6月導入.  ランタイムライブラリ
1c0a127b
 2022.3   | intelmpi/2022.3      | + | +           | -         | +                | 2022年11月導入
495abba5
 2022.3-rt           | intelmpi/2022.3-rt   | + | +           | -         | +                | 2022年11月導入. ランタイムライブラリ
4e369d25
 
 注:Intel MPIの個別のバージョンではなく、Intel OneAPI の包括的なバージョンで記載しています。
452be89a
 
 <!--
 注:Intel CompilerとIntel MPIのバージョンは一致しない場合があります
 -->
 
 \+ : すべてのユーザが利用可能  
 \- : 利用不可
 
 <!--
 コンパイラとして、 [Intelコンパイラ](/compilers/intel) または [GNUコンパイラ](/compilers/gnu) を利用します。システムにログインした時点では、Intelコンパイラがデフォルトで利用できるようになっています。GNUコンパイラを利用される場合は、以下のようにmoduleコマンドを実行し、コンパイラを切り替えてください。
 
 ```nohighlight
 $ module switch PrgEnvIntel PrgEnvGCC
 ```
 
 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 95 |  mpif90  |  mpif90 オプション ファイル名
  Fortran 77 | mpif77 | mpif77 オプション ファイル名
  C |        mpigcc |    mpicc オプション ファイル名 
  C++ |      mpigcxx |   mpicxx オプション ファイル名
 
 **コンパイル例**
 
 ```nohighlight
 $ mpiifort -O3 -parallel sample_mpi.f90
 ```
 <!--
 ### オプション{#option}
 
 Intel MPI のコンパイラでは、 [Intelコンパイラのオプション](/compilers/intel#option) を利用することができます。ただし、オプション -static については利用できません。
 
 * **主要オプション(並列化、最適化など)**
 
     オプション名      |  説明                 
     ------------ | -------------------
     -static_mpi |  MPIライブラリを静的にリンクします。
 -->
 
6fe23678
 ### 実行方法{#exec}
452be89a
 
6fe23678
 コンパイルしたMPIプログラムを実行するためには、 会話型処理またはバッチ処理を利用し、計算ノード上でプログラムを起動する必要があります。
 詳細は、 [プログラム実行例](#sample) をご覧ください。
452be89a
 
 
6fe23678
 ## プログラム実行例{#sample}
 
 ### 会話型処理の実行例{#tss}
 会話型処理は ** tssrun ** コマンドを使用することで簡易に実行可能です。--rsc オプションにより、確保するリソース量を調整することが可能です。
 tssrunコマンドの詳細については、 [会話型処理](/run/interactive) のページをご覧ください。
452be89a
 
6fe23678
 ** MPIプログラムを8プロセスで実行する場合 **
452be89a
 
 ```nohighlight
 $ tssrun --rsc p=8 ./a.out
 ```
 
6fe23678
 ** ハイブリッド並列の場合(MPI 4プロセス、OpenMP 8スレッド) **
452be89a
 
 ```nohighlight
 $ tssrun --rsc p=4:t=8:c=8 ./a.out
 ```
 
6fe23678
 ### バッチ処理の実行例{#slurm}
 バッチ処理は、Slurmのオプションと処理内容を記載したジョブスクリプトを用意し、sbatchコマンドで処理を依頼する必要があります。
 以下に例を示しますが、オプション等の詳細については、 [バッチ処理](/run/batch) のページをご覧ください。
452be89a
 
6fe23678
 ** MPIプログラムを8プロセスで実行する場合**
452be89a
 
 ```nohighlight
 $ cat sample.sh
 #!/bin/bash
 #============ SBATCH Directives =======
 #SBATCH -p gr19999b
 #SBATCH -t 1:0:0
 #SBATCH --rsc p=8
 #SBATCH -o %x.%A.out
 
 #============ Shell Script ============
 srun ./a.out
 $ sbatch sample.sh
 ```
 
6fe23678
 ** ハイブリッド並列の場合(MPI 4プロセス、OpenMP 8スレッド) **
452be89a
 
 ```nohighlight
 $ cat sample.sh
 #!/bin/bash
 #============ SBATCH Directives =======
 #SBATCH -p gr19999b
 #SBATCH -t 1:0:0
 #SBATCH --rsc p=4:t=8:c=8:m=8G
 #SBATCH -o %x.%A.out
 
 #============ Shell Script ============
 srun ./a.out
 $ sbatch sample.sh
 ```
 
 ## マニュアル{#manual}
 * [Intel MPI Library Developer Guide for Linux* OS Developer Guide](https://www.intel.com/content/www/us/en/develop/documentation/mpi-developer-guide-linux/top.html)
 * [Intel MPI Library Developer Guide for Linux* OS Developer Reference](https://www.intel.com/content/www/us/en/develop/documentation/mpi-developer-reference-linux/top.html)
 
 <!--
 ### 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](https://www.intel.com/content/www/us/en/developer/tools/oneapi/mpi-library.html)