...

インテル® MPI ライブラリー for Linux* リファレンス・マニュアル

by user

on
Category: Documents
220

views

Report

Comments

Transcript

インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
インテル® MPI ライブラリー for Linux*
リファレンス・マニュアル (5.1 Update 3)
著作権と商標について
目次
著作権と商標について ......................................................................................................................................................... 4
1.
概要 .................................................................................................................................................................................. 5
1.1. インテル® MPI ライブラリーの紹介 ....................................................................................................................................... 5
1.2. 対象となる開発者 .......................................................................................................................................................................... 5
1.3. 新機能 ................................................................................................................................................................................................. 6
1.4. 表記規則 ............................................................................................................................................................................................. 6
2.
1.5. 関連情報 ............................................................................................................................................................................................. 6
コマンド・リファレンス ............................................................................................................................................. 7
2.1. コンパイラーのコマンド ............................................................................................................................................................ 7
2.1.1.
2.1.2.
2.1.3.
2.1.4.
コンパイラーのコマンドオプション .................................................................................................................... 8
設定ファイル.................................................................................................................................................................11
プロファイル.................................................................................................................................................................11
環境変数 ..........................................................................................................................................................................12
2.2. 簡素化されたジョブ起動コマンド ........................................................................................................................................ 15
2.3. スケーラブルなプロセス管理システム (Hydra) コマンド........................................................................................... 19
2.3.1.
2.3.2.
2.3.3.
2.3.4.
2.3.5.
2.3.6.
グローバルオプション ..............................................................................................................................................20
ローカルオプション ...................................................................................................................................................35
拡張デバイス制御オプション ................................................................................................................................ 36
環境変数 ..........................................................................................................................................................................38
Cleaning up ユーティリティー ............................................................................................................................. 50
チェックポイント・リスタートのサポート .................................................................................................... 51
2.4. 異種オペレーティング・システムのクラスターをサポート ..................................................................................... 58
2.5. インテル® Xeon Phi™ コプロセッサーのサポート .......................................................................................................... 58
2.5.1.
2.5.2.
2.5.3.
使用モデル .....................................................................................................................................................................58
環境変数 ..........................................................................................................................................................................60
コンパイラーのコマンド ......................................................................................................................................... 64
2.6. 多目的デーモン (MPD) のコマンド ....................................................................................................................................... 65
2.6.1.
2.6.2.
2.6.3.
3.
ジョブ開始コマンド ...................................................................................................................................................72
設定ファイル.................................................................................................................................................................91
環境変数 ..........................................................................................................................................................................92
2.7. プロセッサー情報ユーティリティー ................................................................................................................................... 95
チューニング・リファレンス .................................................................................................................................. 99
3.1. mpitune ユーティリティーを使用 ........................................................................................................................................ 99
3.1.1.
クラスター固有のチューニング......................................................................................................................... 103
2
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
3.1.2.
3.1.3.
アプリケーション固有のチューニング ........................................................................................................... 104
チューニング・ユーティリティーの出力 ...................................................................................................... 107
3.2. プロセスのピニング (固定).................................................................................................................................................... 108
3.2.1.
3.2.2.
3.2.3.
3.2.4.
プロセスピニングのデフォルト設定 ............................................................................................................... 108
プロセッサーの識別 ................................................................................................................................................ 108
環境変数 ....................................................................................................................................................................... 109
OpenMP* API との相互利用 ................................................................................................................................ 118
3.3. ファブリック制御 ..................................................................................................................................................................... 131
3.3.1.
3.3.2.
3.3.3.
3.3.4.
3.3.5.
3.3.6.
3.3.7.
3.3.8.
通信ファブリック制御 ........................................................................................................................................... 131
共有メモリー制御 .................................................................................................................................................... 138
DAPL ネットワーク・ファブリック制御 ....................................................................................................... 145
DAPL UD ネットワーク・ファブリック制御 ................................................................................................ 154
TCP ネットワーク・ファブリック制御 .......................................................................................................... 163
TMI ネットワーク・ファブリック制御 ........................................................................................................... 165
OFA ネットワーク・ファブリック制御 .......................................................................................................... 167
OFI* ネットワーク・ファブリック制御 .......................................................................................................... 172
3.4. 集団操作制御............................................................................................................................................................................... 173
3.4.1.
3.4.2.
I_MPI_ADJUST ファミリー .................................................................................................................................. 174
I_MPI_MSG ファミリー ......................................................................................................................................... 183
3.5. その他 ............................................................................................................................................................................................ 187
3.5.1.
3.5.2.
3.5.3.
3.5.4.
3.5.5.
3.5.6.
3.5.7.
3.5.8.
3.5.9.
4.
5.
タイマー制御.............................................................................................................................................................. 187
互換性制御 .................................................................................................................................................................. 188
ダイナミック・プロセスのサポート ............................................................................................................... 188
フォールトトレラント ........................................................................................................................................... 189
統計収集モード ......................................................................................................................................................... 190
ILP64 サポート.......................................................................................................................................................... 205
ユニファイド・メモリー管理 ............................................................................................................................. 206
ファイルシステムのサポート ............................................................................................................................. 207
マルチスレッド化された memcpy のサポート ........................................................................................... 208
用語集 ......................................................................................................................................................................... 210
索引 ............................................................................................................................................................................. 211
3
著作権と商標について
著作権と商標について
本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産
権のライセンスも許諾するものではありません。
インテルは、明示されているか否かにかかわらず、いかなる保証もいたしません。ここにいう保証には、商品
適格性、特定目的への適合性、知的財産権の非侵害性への保証、およびインテル製品の性能、取引、使用から
生じるいかなる保証を含みますが、これらに限定されるものではありません。
本資料には、開発の設計段階にある製品についての情報が含まれています。この情報は予告なく変更されるこ
とがあります。最新の予測、スケジュール、仕様、ロードマップについては、インテルの担当者までお問い合
わせください。
本資料で説明されている製品およびサービスには、不具合が含まれている可能性があり、公表されている仕様
とは異なる動作をする場合があります。
MPEG-1、MPEG-2、MPEG-4、H.261、H.263、H.264、MP3、DV、VC-1、MJPEG、AC3、AAC、G.711、
G.722、G.722.1、G.722.2、AMRWB、Extended AMRWB (AMRWB+)、G.167、G.168、G.169、G.723.1、
G.726、G.728、G.729、G.729.1、GSM AMR、GSM FR は、ISO、IEC、ITU、ETSI、3GPP およびその他の機関
によって制定されている国際規格です。これらの規格の実装、または規格が有効になっているプラットフォー
ムの利用には、Intel Corporation を含む、さまざまな機関からのライセンスが必要になる場合があります。
性能に関するテストに使用されるソフトウェアとワークロードは、性能がインテル® マイクロプロセッサー用に
最適化されていることがあります。SYSmark* や MobileMark* などの性能テストは、特定のコンピューター・
システム、コンポーネント、ソフトウェア、操作、機能に基づいて行ったものです。結果はこれらの要因に
よって異なります。製品の購入を検討される場合は、他の製品と組み合わせた場合の本製品の性能など、ほか
の情報や性能テストも参考にして、パフォーマンスを総合的に評価することをお勧めします。
Intel、インテル、Intel ロゴ、Intel Xeon Phi、Xeon は、アメリカ合衆国および / またはその他の国における
Intel Corporation の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
Microsoft、Windows、Windows ロゴは、米国 Microsoft Corporation の、米国およびその他の国における登録
商標または商標です。
Java は、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
Bluetooth は商標であり、インテルは権利者から許諾を得て使用しています。
インテルは、Palm, Inc. の許諾を得て Palm OS ready マークを使用しています。
OpenCL および OpenCL ロゴは、Apple Inc. の商標であり、Khronos の使用許諾を受けて使用しています。
© 2016 Intel Corporation. 一部 (PBS ライブラリー) は、Altair Engineering Inc. が著作権を保有し、承諾を得て
使用しています。無断での引用、転載を禁じます。
最適化に関する注意事項
インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイ
クロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD
拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命
令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利
用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイ
クロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化
のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳
細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。
注意事項の改訂 #20110804
4
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
1. 概要
このリファレンス・マニュアルは、インテル® MPI ライブラリーのコマンドとチューニング向けのリファレンス
を提供します。本書には、次の章が含まれます。
ドキュメント構成
章
説明
第 2 章 – コマンド・
リファレンス
コンパイラー・コマンドのオプションと変数、ジョブ開始コマンドと
MPD デーモンのコマンドについて
第 1 章 – 概要
第 3 章 – チューニング・
リファレンス
第 4 章 – 用語集
第 5 章 – 索引
このドキュメントについて
実行時にプログラムの動作やパフォーマンスに影響を与える環境変数につ
いて
このドキュメントで使用される基本用語
オプションと環境変数名のリファレンス
1.1. インテル® MPI ライブラリーの紹介
インテル® MPI ライブラリーは、メッセージ・パッシング・インターフェイス 3.0 (MPI-3.0) 仕様を実装する、
マルチファブリックをサポートするメッセージ・パッシング・ライブラリーです。開発者のニーズに応じて、
MPI-3.0 の機能を使用することを可能にする標準ライブラリーをインテル® プラットフォーム向けに提供します。
インテル® MPI ライブラリーは、開発者がソフトウェアや動作環境を変更することなく、プロセッサーを変更も
しくはアップグレードしたり、新たな技術のインターコネクトが利用可能なった時点で導入することを可能に
します。
このライブラリーは以下を含みます。
•
•
インテル® MPI ライブラリー・ランタイム環境 (RTO) には、スケーラブルなプロセス管理システム
(Hydra)、多目的デーモン (MPD)、サポート・ユーティリティーなどプログラムの実行に必要なツール、
共有 (.so) ライブラリー、ドキュメントなどが含まれています。
インテル® MPI ライブラリー開発キット (SDK) には、すべてのランタイム環境コンポーネントに加え、
mpiicc などのコンパイラー・コマンド、インクルード・ファイルとモジュール、スタティック (.a)
ライブラリー、デバッグ・ライブラリー、およびテストコードなどが含まれます。
1.2. 対象となる開発者
このリファレンス・マニュアルは、経験のある開発者がインテル® MPI ライブラリーのすべての機能を理解する
のに役立ちます。
5
概要
1.3. 新機能
このドキュメントは、インテル® MPI ライブラリー 5.1 Update 3 for Linux* 向けのアップデートを反映していま
す。このドキュメントには、次の項目に関する変更が行われています。
•
•
•
•
I_MPI_ADJUST ファミリーの新しい環境変数 I_MPI_ADJUST_BCAST_SEGMENT の説明。
I_MPI_ADJUST ファミリーの新しい非ブロッキング集団アルゴリズムの説明。
非ブロッキング操作による I_MPI_STATS_SCOPE のターゲット操作の拡張。「ネイティブ統計形式」
をご覧ください。
拡張デバイス制御オプションに新しいオプション -psm2 と -PSM2 を追加。
1.4. 表記規則
このドキュメントでは、以下のフォント規則を使用しています。
この書式
ハイパーリンクです。
THIS_TYPE_STYLE
環境変数を示します。
この書式
<この書式>
[ 項目 ]
{ 項目 | 項目 }
(SDK のみ)
コマンド、引数、オプション、ファイル名を示します。
実際の値を挿入します。
オプションの項目です。
縦線で区切られた選択可能な項目です。
ソフトウェア開発キット (SDK) 利用者向け。
1.5. 関連情報
次の関連ドキュメントもご覧ください。
製品 Web サイト
インテル® MPI ライブラリーのサポート
インテル® クラスターツール製品
インテル® ソフトウェア開発製品
6
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
2. コマンド・リファレンス
この章では、それぞれのコマンドとその使い方に関する情報を提供します。
•
•
•
•
•
•
•
コンパイラーのコマンド
簡素化されたジョブ起動コマンド
スケーラブルなプロセス管理システム (Hydra) のコマンド
異種オペレーティング・システムのクラスターをサポート
インテル® Xeon Phi™ コプロセッサーのサポート
多目的デーモン (MPD) のコマンド
プロセッサー情報ユーティリティー
2.1. コンパイラーのコマンド
(SDK のみ)
次の表は、MPI コンパイラー・コマンドと利用可能なコンパイラー、コンパイラー・ファミリー、言語、およ
びアプリケーション・バイナリー・インターフェイス (ABI) を示します。
表 2.1-1 インテル® MPI ライブラリーのコンパイラー・ドライバー
コンパイラーのコマンド
デフォルト・コンパイラー
サポートされる言語
サポートされる ABI
mpicc
gcc, cc
C
64 ビット
mpicxx
g++
C/C++
mpifc
gfortran
Fortran77/Fortran 95
64 ビット
64 ビット
汎用コンパイラー
GNU* コンパイラー・4.3 以降
mpigcc
gcc
C
mpigxx
g++
C/C++
mpif77
g77
Fortran 77
mpif90
gfortran
Fortran 95
インテル® Fortran および C++ コンパイラー 14.0 から 16.0 およびそれ以降
mpiicc
icc
C
mpiicpc
icpc
C++
mpiifort
ifort
Fortran77/Fortran 95
64 ビット
64 ビット
64 ビット
64 ビット
64 ビット
64 ビット
64 ビット
7
コマンド・リファレンス
•
•
コンパイラー・コマンドは、インテル® MPI ライブラリー開発キットでのみ利用できます。
コンパイラー・コマンドは、<installdir>/<arch>/bin ディレクトリーに配置されます。ここで、
<installdir> はインテル® MPI ライブラリーのインストール・ディレクトリーで、<arch> は次の
いずれかのアーキテクチャーです。


•
•
•
intel64 - インテル® 64 アーキテクチャー
mic - インテル® Xeon Phi™ コプロセッサーのアーキテクチャー
PATH に対応するコンパイラー (64 ビットなど適切な) へのパスが設定されていることを確認してくだ
さい。
既存の MPI アプリケーションをインテル® MPI ライブラリーへ移行する場合、すべてのソースを再コ
ンパイルします。
コンパイラー・コマンドのヘルプを表示するには、引数なしでコマンドを実行します。
2.1.1. コンパイラーのコマンドオプション
-static_mpi
インテル® MPI ライブラリーをスタティックにリンクするには、このオプションを使用します。このオプション
は、ほかのライブラリーのデフォルトのリンク方法に影響しません。
-static
インテル® MPI ライブラリーをスタティックにリンクするには、このオプションを使用します。このオプション
はコンパイラーへ渡されます。
-nostrip
このオプションは、インテル® MPI ライブラリーをスタティックにリンクする際に、デバッグ情報のストリップ
を off にするために使用します。
-config=<name>
このオプションで、設定ファイルを指定します。詳細は、「設定ファイル」をご覧ください。
-profile=<profile_name>
MPI プロファイル・ライブラリーを使用するには、このオプションを指定します。プロファイル・ライブラ
リーは、次のいずれかの方法で選択します。
•
•
<installdir>/<arch>/etc にある設定ファイル <profile_name>.conf を介して。詳細について
は、「プロファイル」をご覧ください。
設定ファイルが存在しない場合、インテル® MPI ライブラリーと同じディレクトリーに配置されるライ
ブラリー lib<profile_name>.so や lib<profile_name>.a とリンクします。
-t または -trace
-t または -trace オプションを使用してインテル® Trace Collector ライブラリーとのリンクを行います。これ
は、mpiicc やほかのコンパイラー・スクリプトに -profile=vt オプションを指定するのと同じ効果があり
ます。
8
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
VT_ROOT 環境変数に、インテル® Trace Collector のインストール先のパスを含める必要があります。ほかのプ
ロファイル・ライブラリーを指定するには、I_MPI_TRACE_PROFILE 環境変数に <profile_name> を設定し
ます。例えば、I_MPI_TRACE_PROFILE に vtfs を設定すると、フェイルセーフ版のインテル® Trace
Collector とリンクを行います。
-check_mpi
このオプションを使用してインテル® Trace Collector の正当性チェック・ライブラリーとのリンクを行います。
これは、mpiicc やほかのコンパイラー・スクリプトに -profile=vtmc オプションを指定するのと同じ効果
があります。
VT_ROOT 環境変数に、インテル® Trace Collector のインストール先のパスを含める必要があります。ほかのプ
ロファイル・ライブラリーを指定するには、I_MPI_CHECK_PROFILE 環境変数に <profile_name> を設定し
ます。
-ilp64
ILP64 をサポートする場合、このオプションを指定します。インテル® MPI ライブラリーのすべての整数引数が、
64 ビットとして扱われます。
-no_ilp64
ILP64 サポートを無効にする場合、このオプションを指定します。このオプションは、インテル® Fortran コン
パイラーの -i8 オプションと併用する必要があります。
注意
インテル® Fortran コンパイラーの個別コンパイルに -i8 オプションを指定した場合、リンク時に -i8 または
-ilp64 オプションを指定する必要があります。詳細ついては、「ILP64 サポート」をご覧ください。
-dynamic_log
このオプションは、インテル® Trace Collector ライブラリーとダイナミックにリンクする際に、-t オプション
と併用して使用します。このオプションは、ほかのライブラリーのデフォルトのリンク方法に影響しません。
リンクしたプログラムを実行するには、環境変数 LD_LIBRARY_PATH に $VT_ROOT/slib を含めます。
-g
デバッグモードでプログラムをコンパイルし、デバッグバージョンのインテル® MPI ライブラリーとリンクする
ため、これらのオプションを指定します。-g のデバッグビルドで追加されるデバッグ情報の使い方については、
環境変数「I_MPI_DEBUG」をご覧ください。
注意
最適化されたライブラリーは、デフォルトで -g オプションとリンクされます。
注意
実行時に特定の libmpi.so 設定をロードするには、mpivars,{sh | csh} [debug | debug_mt] コマン
ドを使用します。
9
コマンド・リファレンス
-link_mpi=<arg>
常にインテル® MPI ライブラリーの指定するバージョンとリンクする場合、このオプションを指定します。引数
の詳しい説明は、「I_MPI_LINK」環境変数をご覧ください。このオプションは、特定のライブラリーを選択す
るほかのオプションをすべてオーバーライドします。
注意
実行時に特定の libmpi.so 設定をロードするには、mpivars,{sh | csh} [debug | debug_mt] コマン
ドを使用します。
-O
コンパイラーの最適化を有効にする場合、このオプションを指定します。
-fast
このオプションは、プログラム全体の速度を最大限にします。このオプションは、スタティック・リンクを強
制します。
インテル製プロセッサー以外でこのオプションを使用するには、「xHost」をご覧ください。
注意
このオプションは、mpiicc、mpiicpc および mpiifort のインテル® コンパイラー向けのドライバーでサ
ポートされます。
-echo
コマンドスクリプトの動作をすべて表示するには、このオプションを指定します。
-show
実際にコンパイルすることなく、コンパイラーが呼び出される時のオプションを表示します。コンパイラー・
フラグとオプションを確認するには、次のコマンドを指定します。
$ mpiicc -show -c test.c
リンクフラグ、オプションおよびライブラリーを確認するには、次のコマンドを指定します。
$ mpiicc -show -o a.out test.o
このオプションは、サポートされるコンパイラーを使用して、複雑なビルドを行う際にコマンドラインを確認
するのに役立ちます。
-show_env
サポートされるコンパイラーが起動されるときに影響する環境変数を確認するには、このオプションを使用し
ます。
-{cc,cxx,fc,f77,f90}=<compiler>
サポートされるコンパイラーを選択します。
インテル® C++ コンパイラーを選択する場合、次のコマンドを使用します。
$ mpicc -cc=icc -c test.c
10
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
icc へのパスが設定されていることを確認してください。別の方法として、フルパスでコンパイラーを指定
することができます。
-gcc-version=<nnn>
特定の GNU* C++ 環境で実行できるように、mpicxx コンパイラー・ドライバーおよび mpiicpc コンパイ
ラー・ドライバーにこのオプションを使用して、アプリケーションをリンクしてください。<nnn> に設定可能
な値は以下のとおりです。
<nnn> 値
GNU* C++ のバージョン
430
4.3.x
440
4.4.x
450
4.5.x
460
4.6.x
470
4.7.x
認識された GNU* C++ コンパイラー・バージョンと互換性のあるライブラリーがデフォルトで使用されます。
GNU* C++ のバージョンが 4.0.04.1.0 よりも古い場合は、このオプションを使用しないでください。
-compchk
コンパイラーの設定チェックを有効にする場合、このオプションを指定します。このオプションが指定される
と、各コンパイラーのドライバーは、基礎となるコンパイラーが適切に設定されているかチェックを行います。
-v
コンパイラー・ドライバーのバージョンとネイティブ・コンパイラーのバージョンを表示します。
2.1.2. 設定ファイル
次の命名規則に従って、インテル® MPI ライブラリーのコンパイラー設定ファイルを作成できます。
<installdir>/<arch>/etc/mpi<compiler>-<name>.conf
ここで以下を指定します。
<arch>= {intel64[em64t],mic} は、インテル® 64 アーキテクチャーとインテル® Xeon Phi™ コプロセッ
サー・アーキテクチャーに相当します。
<compiler>={cc,cxx,f77,f90} は、コンパイルする言語に依存します。
<name> = ハイフン (-) でスペースを置き換えるベースとなるコンパイラーの名前を指定します。例えば、cc
-64 の <name> 値は、cc--64。
コンパイラー・コマンドに影響する環境の変更を有効にするには、コンパイルとリンク前に環境設定スクリプ
トを実行するが、コンパイルやリンクに –config オプションを使用する必要があります。
2.1.3. プロファイル
インテル® MPI ライブラリーのコンパイラー・ドライバーの -profile オプションを使用して、プロファイ
ル・ライブラリーを選択することができます。プロファイル・ファイルは、<installdir>/<arch>/etc
ディレクトリーに配置されます。インテル® MPI ライブラリーは、インテル® Trace Collector 向けの事前定義プ
ロファイルを用意しています。
11
コマンド・リファレンス
<installdir>/etc/vt.conf - 通常のインテル® Trace Collector ライブラリー
<installdir>/etc/vtfs.conf - フェイスセーフ版のインテル® Trace Collector ライブラリー
<installdir>/etc/vtmc.conf - 正当性をチェックするインテル® Trace Collector ライブラリー。
また、<profile_name>.conf という名称で独自のプロファイルを作成できます。
次の環境変数を定義できます。
PROFILE_PRELIB - インテル® MPI ライブラリーの前にインクルードするライブラリー (とパス)
PROFILE_POSTLIB - インテル® MPI ライブラリーの後にインクルードするライブラリー (とパス)
PROFILE_INCPATHS - 任意のインクルード・ファイル向けの C プリプロセッサーの引数
例えば、次の内容で /myprof.conf ファイルを作成します。
PROFILE_PRELIB="-L<path_to_myprof>/lib -lmyprof"
PROFILE_INCPATHS="-I<paths_to_myprof>/include"
この新しいプロファイルを選択するには、関連するコンパイラー・ドライバーのコマンドライン引数に
-profile=myprof を指定します。
2.1.4. 環境変数
I_MPI_{CC,CXX,FC,F77,F90}_PROFILE (MPI{CC,CXX,FC,F77,F90}_PROFILE)
デフォルトのプロファイル・ライブラリーを指定します。
構文
I_MPI_{CC,CXX,FC,F77,F90}_PROFILE=<profile_name>
廃止された構文
MPI{CC,CXX,FC,F77,F90}_PROFILE=<profile_name>
引数
<profile_name>
説明
デフォルトのプロファイル・ライブラリーを指定します。
デフォルトで使用する特定の MPI プロファイル・ライブラリーを選択するため、この環境変数を設定します。
これは、mpiicc やほかのインテル® MPI ライブラリーのコンパイラー・ドライバーの引数として、
-profile=<profile_name> を指定するのと同じです。
I_MPI_TRACE_PROFILE
-trace オプションのデフォルト・プロファイルを指定します。
構文
I_MPI_TRACE_PROFILE=<profile_name>
引数
<profile_name>
説明
トレース・プロファイル名を指定します。デフォルト値は vt で
す。
mpicc やほかのインテル® MPI コンパイラー・ドライバーに -trace オプションを指定した時に使用する特定
の MPI プロファイル・ライブラリーを選択するため、この環境変数を設定します。
I_MPI_{CC,CXX,F77,F90}_PROFILE 環境変数は I_MPI_TRACE_PROFILE をオーバーライドします。
12
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_CHECK_PROFILE
-check_mpi オプションのデフォルト・プロファイルを指定します。
構文
I_MPI_CHECK_PROFILE=<profile_name>
引数
<profile_name>
説明
チェックするプロファイル名を指定します。デフォルト値は vtmc
です。
mpicc やほかのインテル® MPI コンパイラー・ドライバーに -check_mpi オプションを指定した時に使用する
特定の MPI チェックライブラリーを選択するため、この環境変数を設定します。
I_MPI_{CC,CXX,F77,F90}_PROFILE 環境変数は I_MPI_CHECK_PROFILE をオーバーライドします。
I_MPI_CHECK_COMPILER
コンパイラーの互換性チェックを on/off します。
構文
I_MPI_CHECK_COMPILER=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
コンパイラーのチェックを有効にします。
コンパイラーのチェックを無効にします。これは、デフォルト値で
す。
I_MPI_CHECK_COMPILER が enable に設定されている場合、インテル® MPI のコンパイラー・ドライバーは
コンパイラーの互換性をチェックします。通常のコンパイルでは、ベースとなるコンパイラーの既知のバー
ジョンを使用する必要があります。
I_MPI_{CC,CXX,FC,F77,F90} (MPICH_{CC,CXX,FC,F77,F90})
使用するコンパイラーのパス/名前を設定します。
構文
I_MPI_{CC,CXX,FC,F77,F90}=<compiler>
廃止された構文
MPICH_{CC,CXX,FC,F77,F90}=<compiler>
引数
<compiler>
説明
使用するコンパイラーのフルパス/名前を設定します。
デフォルトで使用する特定のコンパイラーを選択するため、この環境変数を設定します。検索パスに含まれて
いない場合、フルパスでコンパイラーを指定します。
13
コマンド・リファレンス
注意
一部のコンパイラーは、追加のコマンドライン・オプションを必要とします。
注意
指定するコンパイラーが存在する場合、設定ファイルが source されます。詳細は、「設定ファイル」をご覧
ください。
I_MPI_ROOT
インテル® MPI ライブラリーのインストール先のディレクトリーを設定します。
構文
I_MPI_ROOT=<path>
引数
<path>
説明
インテル® MPI ライブラリーのインストール先のディレクトリーを
指定します。
インテル® MPI ライブラリーのインストール先のディレクトリーを指定するには、この環境変数を設定します。
VT_ROOT
インテル® Trace Collector のインストール先のディレクトリーを設定します。
構文
VT_ROOT=<path>
引数
<path>
説明
インテル® Trace Collector のインストール先のディレクトリーを指
定します。
インテル® Trace Collector のインストール先のディレクトリーを指定するには、この環境変数を設定します。
I_MPI_COMPILER_CONFIG_DIR
コンパイラーの設定ファイルの場所を設定します。
構文
I_MPI_COMPILER_CONFIG_DIR=<path>
引数
<path>
説明
コンパイラーの設定ファイルの場所を指定します。デフォルト値
は、<installdir>/<arch>/etc です。
コンパイラーの設定ファイルのデフォルトの場所を変更するには、この環境変数を設定します。
14
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_LINK
リンクするインテル® MPI ライブラリーの特定のバージョンを選択します。
構文
I_MPI_LINK=<arg>
引数
<arg>
opt
opt_mt
dbg
dbg_mt
説明
ライブラリーのバージョン。
シングルスレッド版の最適化されたインテル® MPI ライブラリー。
マルチスレッド版の最適化されたインテル® MPI ライブラリー。
シングルスレッド版のデバッグ向けインテル® MPI ライブラリー。
マルチスレッド版のデバッグ向けインテル® MPI ライブラリー。
指定するインテル® MPI ライブラリーのバージョンと常にリンクする場合、このオプションを指定します。
I_MPI_DEBUG_INFO_STRIP
アプリケーションをスタティック・リンクする際にデバッグ情報のストリップを on/off します。
構文
I_MPI_DEBUG_INFO_STRIP=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
有効にします。これは、デフォルト値です。
無効にします。
このオプションは、インテル® MPI ライブラリーをスタティックにリンクする際に、デバッグ情報のストリップ
を on/off します。デフォルトでデバッグ情報はストリップされます。
2.2. 簡素化されたジョブ起動コマンド
mpirun
構文
mpirun <options>
ここで、<options>:= <mpiexec.hydra options> |[ <mpdboot options> ] <mpiexec options>
です。
15
コマンド・リファレンス
引数
mpiexec.hydra の節で説明した mpiexec.hydra オプション。こ
れはデフォルトの操作モードです。
<mpiexec.hydra
options>
mpdboot コマンドの説明で記載される mpdboot オプション、-n オ
プションを除く。
<mpdboot options>
mpiexec の節で説明する mpiexec のオプション。
<mpiexec options>
説明
次のコマンドを使用して MPI ジョブを送信します。mpirun コマンドは、基盤となるプロセス管理として
Hydra や MPD を使用しています。Hydra は、デフォルトのプロセス管理です。デフォルトを変更するには、
I_MPI_PROCESS_MANAGER 環境変数を設定します。
mpirun コマンドは、Torque*、PBS Pro*、LSF*、Parallelnavi* NQS*、SLURM*、Univa* Grid Engine*、
LoadLeveler* などのジョブ・スケジューラーを使用して割り当てられたセッションから送信された MPI ジョブ
を検出します。mpirun コマンドは、それぞれの環境からホストリストを抽出し、上記の方式に従ってこれら
のノードを使用します。
この場合、mpd.hosts ファイルを作成する必要はありません。システムにインストールされているジョブ・ス
ケジューラーでセッションを配置し、MPI ジョブを実行するため内部で mpirun コマンドを使用します。
例
$ mpirun -n <# of processes> ./myprog
このコマンドは、デフォルトで Hydra プロセス管理を使用するため mpiexec.hydra コマンドを起動します。
Hydra の仕様
アクティブなプロセス管理として Hydra を選択した場合、mpirun コマンドは互換性を保持するため暗黙的に
MPD 固有のオプションを無視します。次の表は、暗黙的に無視され、サポートされない MPD オプションのリ
ストです。Hydra プロセス管理を使用する場合、これらサポートされないオプションの使用を避けてください。
無視される mpdboot
オプション
無視される mpiexec
オプション
サポートされない
mpdboot オプション
サポートされない
mpiexec オプション
--loccons
-[g]envuser
--user=<user>
| -u <user>
-a
--remcons
-[g]envexcl
--mpd=<mpdcmd>
| -m <mpdcmd>
--ordered | -o
-m
--shell | -s
--maxbranch=<maxbranch>
| -b <maxbranch>
-ifhn
<interface/hostname>
-1
--parallel-startup | -p
-ecfn <filename>
-tvsu
--ncpus=<ncpus>
16
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
MPD の仕様
プロセス管理に MPD を選択した場合、mpirun コマンドは自動的に mpd デーモンの独立したリングを開始し、
MPI ジョブを起動、そしてジョブの終了時に mpd リングをシャットダウンします。
最初の非 mpdboot オプション (-n や -np を含む) は、mpdboot と mpiexec オプションを区分します。この時
点までの区切りオプションを除くすべてのオプションは、mpdboot コマンドに渡されます。これ以降は、区切
りオプションを含むすべてのオプションが mpiexec コマンドに渡されます。
mpdboot と mpiexec コマンドに適用されるすべての設定ファイルと環境変数も、mpirun コマンドに適用さ
れます。
次の規則で定義されるホストのセットは、この順番で実行されます。
1.
2.
3.
mpdboot ホストファイルからのすべてのホスト名 ( mpd.hosts もしくは –f オプションで指定される
どちらか一方)。
mpd リングが実行されている場合、mpdtrace コマンドから返されるすべてのホスト名。
ローカルホスト (この場合警告が発せられます)。
I_MPI_MPIRUN_CLEANUP
mpirun コマンド実行後の環境のクリーンアップを制御します。
構文
I_MPI_MPIRUN_CLEANUP=<value>
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
オプションを定義します。
環境のクリーンアップを有効にします。
環境のクリーンアップを無効にします。これは、デフォルト値です。
mpirun の完了後に環境をクリーアップする場合、この環境変数を使用します。クリーンアップには、終了し
ないサービスプロセスや一時ファイルの削除などが含まれます。
I_MPI_PROCESS_MANAGER
mpirun コマンドで使用されるプロセス管理を選択します。
構文
I_MPI_PROCESS_MANAGER=<value>
引数
<value>
hydra
mpd
説明
文字列。
Hydra プロセス管理を使用します。これは、デフォルト値です。
MPD プロセス管理を使用します。
mpirun コマンドで使用されるプロセス管理を選択するため、この環境変数を設定します。
17
コマンド・リファレンス
注意
mpiexec コマンド (MPD 向け) と mpiexec.hydra コマンド (Hydra 向け) を起動して、直接プロセス管理を実
行することもできます。
I_MPI_YARN
YARN* で管理されたクラスター上で実行するには、この変数を設定します。
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
YARN* サポートを有効にします。
YARN* サポートを無効にします。これは、デフォルト値です。
MPI ジョブを実行する前に、YARN* クラスター管理から Hydra 要求リソースを作成するには、この環境変数を
設定します。この機能は、Llama* がインストールされ YARN で管理されるクラスター上で MPI プロセスを起動
する場合にのみ利用できます (例えば、Hadoop* 向けの Cloudera* ディストリビューションのクラスター)。
使用例
クラスター上で YARN* が Llama* と適切に動作するように設定され (設定の詳細は Llama* のドキュメントをご
覧ください)、Apache* Thrift* がインストールされていることを確認します。
1.
YARN* が実行されているホストで Llama* が起動されていることを確認します。起動していない場合、
llama ユーザーで次のコマンドを実行して開始します。
$ llama [--verbose &]
2.
3.
クラスターでパスワードなしの ssh が設定されていることを確認してください。
I_MPI_YARN 環境変数を設定します。
$ export I_MPI_YARN=1
4.
5.
6.
Thrift's Python* モジュールを指すように I_MPI_THRIFT_PYTHON_LIB 環境変数を設定するか、
PYTHONPATH 環境変数にこれらのモジュールを追加します。
Llama* サーバーホスト/ポートを指すように I_MPI_LLAMA_HOST/I_MPI_LLAMA_PORT を設定しま
す (Llama* サービスが実行されているホストから MPI を起動する場合、デフォルトで
localhost:15000 に設定されており、この手順はスキップできます)。
通常と同じように MPI を起動します (リソースは自動的に YARN* で割り当てられるため、ホストやマ
シンファイルを指定する必要はありません)。
$ mpirun –n 16 –ppn 2 [other IMPI options] <application>
注意
この機能は、Hydra プロセス管理でのみ利用できます。
18
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
2.3. スケーラブルなプロセス管理システム (Hydra) コマンド
mpiexec.hydra
mpiexec.hydra は、MPD プロセス管理よりスケーラブルな代替手段です。
構文
mpiexec.hydra <g-options> <l-options> <executable>
または
mpiexec.hydra <g-options> <l-options> <executable1> : \
<l-options> <executable2>
引数
<g-options>
<l-options>
<executable>
説明
すべての MPI プロセスに適用するグローバルオプション。
単一の引数セットに適用するローカルオプション。
./a.out または path/実行形式ファイル名。
MPD リングで MPI アプリケーションを実行するには、mpiexec.hydra ユーティリティーを使用します。
最初のコマンドラインの構文を使用して、単一の引数セットで <executable> のすべての MPI プロセスを開
始できます。例えば、次のコマンドは指定したプロセス数とホストで a.out を実行します。
$ mpiexec.hydra -f <hostsfile> -n <# of processes> ./a.out
ここで以下を指定します。
•
•
<# of processes> には、a.out を実行するプロセス数を指定します。
<hostsfile> には、a.out を実行するホストのリストを指定します。
異なる MPI プログラムを異なる引数セットで実行するには、長いコマンドラインを使用します。例えば、次の
コマンドは 2 つの異なる実行形式を異なる引数セットで実行します。
$ mpiexec.hydra -f <hostsfile> -env <VAR1> <VAL1> -n 2 ./a.out : \
-env <VAR2> <VAL2> -n 2 ./b.out
注意
クラスターのすべてのノード上で PATH 環境変数に「.」が設定されていない場合、a.out の代わり
に ./a.out を指定してください。
注意
グローバルオプションとローカルオプションを区別する必要があります。コマンドラインで、ローカルオプ
ションはグローバルオプションの後に指定してください。
19
2.3.1. グローバルオプション
コマンド・リファレンス
-hostfile <hostfile> または -f <hostfile>
アプリケーションを実行するホスト名を指定します。ホスト名が重複されると 1 つだけ適用されます。
詳細は、「I_MPI_HYDRA_HOST_FILE」環境変数をご覧ください。
注意
クラスターノード上のプロセスの配置を変更するには、-perhost、 -ppn、 -grr および -rr オプションを使用します。
•
•
ラウンドロビン・スケジュールを使用して、各ホスト上で MPI プロセスを連続して配置するには、perhost、-ppn、および -grr オプションを指定します。
-rr オプションは、ラウンドロビン・スケジューリングにより、異なるホスト上で連続した MPI プロセ
スを配置します。
-machinefile <machine file> または -machine <machine file>
このオプションは、<machine file> を介してプロセスの配置を制御する際に使用します。開始する総プロセ
ス数は、-n オプションで制御されます。
マシン内にピニングする場合、マシンファイルの各行で -binding=map オプションを使用できます。次に例を
示します。
$ cat ./machinefile
node0:2 binding=map=0,3
node1:2 binding=map=[2,8]
node0:1 binding=map=8
$ mpiexec.hydra -machinefile ./machinefile -n 5 -l numactl --show
[4] policy: default
[4] preferred node: current [4] physcpubind: 8
[4] cpubind: 0
[4] nodebind: 0
[4] membind: 0 1
[0] policy: default
[0] preferred node: current [0] physcpubind: 0
[0] cpubind: 0
[0] nodebind: 0
[0] membind: 0 1
[1] policy: default
[1] preferred node: current [1] physcpubind: 3
[1] cpubind: 1
[1] nodebind: 1
[1] membind: 0 1
[3] policy: default
[3] preferred node: current [3] physcpubind: 3
[3] cpubind: 1
[3] nodebind: 1
[3] membind: 0 1
[2] policy: default
[2] preferred node: current [2] physcpubind: 1
[2] cpubind: 1
[2] nodebind: 1
[2] membind: 0 1
20
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-genv <ENVVAR> <value>
すべての MPI プロセス向けに、<ENVVAR> に指定された <value> を設定します。
-genvall
すべての環境変数をすべての MPI プロセスに伝搬するのを有効にします。
-genvnone
任意の環境変数を任意の MPI プロセスに伝搬するのを抑制します。
-genvlist <list of genv var names>
引数リストと現在の値を渡します。<list of genv var names> は、すべての MPI プロセスに送るカンマ
で区切られた環境変数のリストです。
-pmi-connect <mode>
プロセス管理インターフェイス (PMI) のメッセージキャッシュのモードを選択します。利用可能な <mode> は
以下です。
•
•
•
•
•
nocache - PMI メッセージをキャッシュしません。
cache - PMI への要求を最小限に抑えるため、ローカル pmi_proxy 管理プロセスで PMI メッセージ
をキャッシュします。
キャッシュされた情報は、子の管理プロセスへ伝搬されます。
lazy-cache - PMI 情報の伝搬要求でのキャッシュモード。
alltoall - 任意の取得要求が完了する前に、情報はすべての pmi_proxy 間で自動的に交換されます。
lazy-cache がデフォルトモードです。
詳細は、「I_MPI_HYDRA_PMI_CONNECT」環境変数をご覧ください。
-perhost <# of processes>、-ppn <# of processes>、または -grr <# of
processes>
グループ内のすべてのホスト上で、ラウンドロビン・スケジューリングにより連続した数の MPI プロセスを配
置します。詳細は、「I_MPI_PERHOST」環境変数をご覧ください。
-rr
ラウンドロビン・スケジューリングにより、異なるホスト上で連続した MPI プロセスを配置します。このオプ
ションは、-perhost 1 と等価です。詳細は、「I_MPI_PERHOST」環境変数をご覧ください。
(SDK のみ) -trace [<profiling_library>] または -t [<profiling_library>]
指定された <profiling_library> を使用して MPI アプリケーションのプロファイルを行うには、このオプ
ションを指定します。<profiling_library> が省略された場合、デフォルトのプロファイル・ライブラリー
は、libVT.so です。
デフォルトのプロファイル・ライブラリーを変更するには、「I_MPI_JOB_TRACE_LIBS」環境変数を設定しま
す。
21
コマンド・リファレンス
(SDK のみ) -mps
内部的なインテル® MPI 統計情報と追加のコレクターを使用して、MPI アプリケーションのハードウェア・カウ
ンター、メモリー消費量、MPI 内部のインバランス、および OpenMP* インバランス (アプリケーションが
OpenMP* を使用する場合) などの統計情報を収集するには、このオプションを使用します。このオプションを
使用すると、2 つのテキストファイルが作成されます: stats.txt と app_stat.txt。stats.txt ファイル
はインテル® MPI ライブラリーのネイティブ統計情報を含み、app_stat.txt ファイルは MPI Performance
Snapshot によるアプリケーションの統計情報を含みます。これらのファイルは、mps ユーティリティーで解析
できます。mps ユーティリティーを使用してインテル® MPI 統計を簡単に解析できます。
例えば、統計を収集するには、次のコマンドを使用します。
$ mpirun -mps –n 2 ./myApp
詳細は、「ネイティブ統計形式」をご覧ください。
注意
1.
2.
3.
このオプションを使用してアプリケーションを実行する前に、インテル® Trace Analyzer & Collector
のインストール・ディレクトリーにある mpsvars.sh[csh] スクリプトを使用して環境を設定します。
詳しい情報は、インテル® Parallel Studio XE Cluster Edition のインストール先にある、
<installdir>/itac_latest/doc/MPI_Perf_Snapshot_User_Guide.pdf (MPI Performance
Snapshot for Linux* Guide) をご覧ください。
コマンドラインに -traceor または -check_mpi オプションを指定すると、–mps オプションは無視
されます。
(SDK のみ) -check_mpi [<checking_library>]
指定された <checking_library> を使用して MPI アプリケーションをチェックするには、このオプションを
指定します。<checking_library> が省略された場合、デフォルトのチェック・ライブラリーは、
libVTmc.so です。
デフォルトのチェック・ライブラリーを変更するには、「I_MPI_JOB_TRACE_LIBS」環境変数を設定します。
(SDK のみ) -trace-pt2pt
ポイントツーポイント操作に関する情報を収集します。
(SDK のみ) -trace-collectives
集合操作に関する情報を収集します。
注意
トレースファイルのサイズやメッセージチェッカーのレポート数を減らすには、-trace-pt2pt と
-trace-collectives オプションを使用します。このオプションは、スタティックおよびダイナミック・リ
ンクされたアプリケーションの両方で利用できます。
-configfile <filename>
このオプションは、コマンドライン・オプションを含むファイルを <filename> に指定します。空白行と先頭
文字が ‘#’ の行は無視されます。
22
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-branch-count <num>
mpiexec.hydra コマンドまたは、pmi_proxy 管理プロセスで起動される子管理プロセスの数を制限します。
詳細は、「I_MPI_HYDRA_BRANCH_COUNT」環境変数をご覧ください。
-pmi-aggregate または -pmi-noaggregate
PMI リクエストの集約を On または Off に切り替えます。デフォルトは、集約が有効となる -pmi-aggregate
です。
詳細は、「I_MPI_HYDRA_PMI_AGGREGATE」環境変数をご覧ください。
-tv
TotalView* デバッガー環境下で <executable> を実行するには、このオプションを使用します。次に例を示
します。
$ mpiexec.hydra -tv -n <# of processes> <executable>
TotalView* 実行形式ファイルを選択する方法は、「環境変数」をご覧ください。
注意
TotalView* は、デフォルトで rsh を使用します。ssh を使用する場合、TVDSVRLAUNCHCMD 環境変数に ssh
を設定します。
注意
TotalView* デバッガーは、MPI プログラムのメッセージキューの状態を表示できます。この機能を有効にする
には、次の手順に従ってください。
1.
<executable> を –tv オプションで実行します。
$ mpiexec.hydra -tv -n <# of processes> <executable>
2.
mpiexec.hydra ジョブの停止に関する問い合わせには、「YES」を選択します。
MPI ライブラリーの内部状態をテキストで表示するには、[Tools] > [Message Queue] コマンドを選択します。
[Process Window Tools] > [Message Queue Graph] コマンドを選択すると、TotalView* 環境変数は現在の
メッセージキューの状態をグラフ形式でウィンドウに表示します。詳細は、「TOTALVIEW」環境変数をご覧く
ださい。
-tva <pid>
TotalView* デバッガーに実行中のインテル® MPI ライブラリーのジョブをアタッチするには、このオプション
を使用します。
<pid> として、mpiexec.hydra プロセス ID を使用します。次のコマンドを使用できます。
$ mpiexec.hydra -tva <pid>
-gdb
GNU* デバッガー環境下で <executable> を実行するには、このオプションを使用します。次のコマンドを使
用できます。
$ mpiexe.hydra -gdb -n <# of processes> <executable>
23
コマンド・リファレンス
-gdba <pid>
GNU* デバッガーに実行中のインテル® MPI ライブラリーのジョブをアタッチするには、このオプションを使用
します。次のコマンドを使用できます。
$ mpiexec.hydra -gdba <pid>
-gtool
mpiexec.hydra コマンドで指定されたランク上でインテル® VTune™ Amplifier XE、Valgrind*、GNU* デバッ
ガーなどのツールを起動するには、このオプションを使用します。
注意
-gtool オプションでデバッガーを起動することを指定していない場合を除いて、–gdb オプションと –gtool
オプションを同時に指定してはいけません。
構文
-gtool “<command line for a tool 1>:<ranks set 1>[=lanuch mode 1][@arch 1];
<command line for a tool 2>:<ranks set 2>[=exclusive][@arch 2]; … ;<command line
for a tool n>:<ranks set n>[=exclusive][@arch n]” <executable>
または
$ mpiexec.hydra
1>[=launch mode
2>[=launch mode
n>[=launch mode
-n <# of
1][@arch
2][@arch
3][@arch
processes> -gtool “<command line for a tool 1>:<ranks set
1]” -gtool “<command line for a tool 2>:<ranks set
2]” … -gtool “<command line for a tool n>:<ranks set
n]” <executable>
注意
構文では、セパレーター「;」と -gtool オプションはどちらも使用できます。
引数
<arg>
<rank set>
パラメーター。
ツールの実行に関連するランクの範囲を指定します。カンマもしく
は「-」で区切って、連続したランクを指定することができます。
注意
不正なランクのインデックスが指定された場合、警告が出力され、
ツールは正しいランクを使用して処理を継続します。
[=launch mode]
[@arch]
起動モードを指定します。
ツールに適用するアーキテクチャーを指定します。<rank set> を
指定すると、ツールは特定のアーキテクチャーを持つホストに割り
当てられたランクのみに適用されます。このパラメーターはオプ
ションです。[@arch] の値については、「I_MPI_PLATFORM」の
引数テーブルの説明ご覧ください。
インテル® Xeon Phi™ コプロセッサー上でデバッガーを起動する場
合、[@arch] 設定が必要です。詳細は、例を参照してください。
24
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
ランクのセットは交差することはできません。例えば、-gtool オプションにパラメーターがない、または
[@arch] と同じパラメーターがある。しかし、2 つのセットが交差しないように明確に異なる [@arch] パラ
メーターで同じランクを指定することはできます。単一の mpiexec.hydra 起動内で適用するツールを指定す
る必要があります。いくつかのツールは同時に動作しないか、誤った結果につながる可能性があります。
次の表に [=launch mode] に指定できるパラメーターの一覧を示します。
引数
exclusive
attach
node-wide
ホストごとに複数ランク向けのツールを起動しないようにするには、
この値を指定します。これはオプションです。
–gtool オプションから実行可能ファイルにツールをアタッチするに
は、この値を指定します。デバッガーやデバッガー方式でプロセスに
アタッチできるほかのツールを使用する場合、この値を [=launch
mode] に指定する必要があります。現在の実装では、デバッガー向け
のテストのみが行われています。
–gtool オプションから実行可能ファイルより高いレベル
(pmi_proxy デーモンへ) にツールを適用するには、この値を指定しま
す。このパラメーターは将来のリリースで実装される予定です。
各ツールに複数の値を指定することができます。この場合、カンマでツールを区切ります。次に例を示します。
$ mpiexec.hydra -gtool "gdb-ia:all=attach,exclusive; /usr/bin/gdb:all=exclusive,
attach@knc" -host <hostname> -n 2 <app> : -host <hostname-mic0> -n 2 <mic-app>
この場合、インテルバージョンの GNU* GDB (gdb-ia) とインテル® Xeon Phi™ コプロセッサー向けのネイティ
ブ GNU* GDB が、ホスト上のランクとコプロセッサー上のランク向けにそれぞれ起動されます。
例
次のコマンドは、–gtool オプションを使用したもう 1 つの例です。
1.
mpiexec.hydra コマンドを経由して、インテル® VTune™ Amplifier XE と Valgrind* を起動します。
$ mpiexec.hydra -n 16 -gtool “amplxe-cl -collect advanced-hotspots
-analyze-system -r result1:5,3,7-9=exclusive@nhm;valgrind -log-file=log_%p
:0,1,10-12@wsm” a.out
2.
指定したランクセットからインテル® マイクロアーキテクチャー (開発コード名 Nehalem) のホスト上
に割り当てられた最小のインデックスを持つランクで amplxe-cl を実行するには、このコマンドを
使用します。同時に、指定したランクセットからインテル® マイクロアーキテクチャー (開発コード名
Westmere) のホスト上のすべてのランクで Valgrind* を実行します。Valgrind の結果は、ファイル名
log_<process ID> に出力されます。
mpiexec.hydra コマンドを経由して、GNU* デバッガー (GDB) を起動します。
$ mpiexec.hydra -n 16 -gtool “gdb:3,5,7-9=attach” a.out
3.
このコマンドは、指定したランクセットに gdb を適用します。
特定のランクセット向けに環境変数を設定します。
$ mpiexec.hydra -n 16 -gtool “env VARIABLE1=value1 VARIABLE2=value2:3,5,7-9;
env VARIABLE3=value3:0,11” a.out
ランクセット 3、5、7、8、9 向けに VARIABLE1 と VARIABLE2 を設定し、ランク 0 と 11 に
VARIABLE3 を設定するには、このコマンドを使用します。
25
コマンド・リファレンス
4.
mpiexec.hydra コマンドを経由して、指定したホストでアプリケーションをデバッグします。
mpiexec.hydra コマンドを介してデバッガーを設定する場合、対応するデバッガーに次のオプショ
ンを使用できます。–gtool オプションを使用して、その他のデバッガーも起動できます。



標準 GNU* デバッガー (GDB): gdb
インテルバージョンの GNU* デバッガー: gdb-ia
インテル® Xeon Phi™ コプロセッサー向けネイティブ GNU* デバッガー: gdb
–gtool オプションは、ホストとインテル® Xeon Phi™ コプロセッサー向けデバッガーを同時にサポー
トできます。この場合、インテル® Xeon Phi™ コプロセッサー・マシンに割り当てられるランクに
@arch パラメーターを指定します。インテル® Xeon Phi™ コプロセッサー (開発コード名 Knights
Corner) アーキテクチャー向けにコマンドで設定するには、@arch=knc を使用します。
注意
インテル® Xeon Phi™ コプロセッサーを搭載するホストや異種クラスターでデバッグを行う際、
I_MPI_MIC 環境変数を設定してインテル® Xeon Phi™ コプロセッサーの認識を有効にする必要があり
ます。環境変数の指定方法は、「I_MPI_MIC」をご覧ください。
@arch を指定すると、交差してランクセットを指定できます。
バイナリー互換クラスター上でデバッグセッションが起動する場合、@arch パラメーターは省略でき
ます。generic 値は、インテル® Xeon Phi™ コプロセッサーを搭載するプラットフォームを除くすべ
てのプラットフォームをカバーします。
デバッガーが異種クラスター上で起動され、インテル® Xeon Phi™ コプロセッサー向けのデバッガーが
指定されていない場合、デフォルトでコプロセッサー上の /usr/bin/gdb が起動されます。
次に例を示します。
a.
b.
c.
5.
$ mpiexec.hydra -n 16 -gtool “gdb:3,5=attach;gdb-ia:7-9=attach” a.out
この場合、ランク番号 3、5、7、8、9 向けに標準 GNU* デバッガー (gdb が起動されます)。
$ mpiexec.hydra -gtool “gdb-ia:all=attach@generic;
/tmp/gdb:all=attach@knc” -host <hostname> -n 8 <host-app> : -host
<hostname-mic0> -n 8 <mic-app>
この場合、すべての hostname のランク向けにインテルバージョンの GNU* デバッガー(gdb-ia)
が起動されます。インテル® Xeon Phi™ コプロセッサー向けのネイティブ GNU* GDB は、コプロ
セッサー上に割り当てられたすべてのランクに適用されます。次のコマンドは、ランクセットで
異なるアーキテクチャーを指定した場合、ランクセットを交差できる例を示します。
$ mpiexec.hydra -gtool “gdb-ia:3,5,7-9” -host <hostname> -n 8 <hostapp> : -host <hostname-mic0> -n 8 <mic-app>
コマンドを入力すると、hostname マシン上に割り当てられたランクセットのすべてのランク向
けにインテルバージョンの GNU* GDB (gdb-ia) が起動されます。コプロセッサーに割り当てられ
ているランクセットの任意のランクが、自動的にインテル® Xeon Phi™ コプロセッサー対応のネイ
ティブ GNU* GDB (/usr/bin/gdb) を使用します。
<machine file> オプションを使用して、特定のランクにツールを適用します。この例では、
m_file ファイルが次の内容を保持していると仮定します。
hostname_1:2
hostname_2:3
hostname_3:1
26
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
次のコマンドラインは、–machinefile オプションを使用してツールに適用する例を示します。
$ mpiexec.hydra -n 6 -machinefile m_file -gtool “amplxe-cl -collect
advanced-hotspots -analyze-system -r
result1:5,3=exclusive@nhm;valgrind:0,1@wsm” a.out
6.
ここで、–machinefie オプションは、hostname_1 マシンにランク・インデックス 0 と 1 が、
hostname_2 マシンにランク・インデックス 3 が、そして hostname_3 マシンにランク・インデッ
クス 5 が配置されることを意味します。その後、hostname_2 と hostname_3 マシンは、インテル®
マイクロアーキテクチャー (開発コード名 Nehalem) であるため、ランク 3 と 5 のみで amplxe-cl が
実行されます (これらのランクは異なるマシンに属しているため、排他的にオプションが適用されま
す)。同時に、Valgrind* ツールがインテル® マイクロアーキテクチャー (開発コード名 Westmere) であ
る hostname_1 に割り当てられるランク (0 と 1) に適用されます。
ランクがクラスターノード間に分散される様子を表示します。-gtool オプションと z show map コ
マンドを使用します。コマンドの詳しい説明を見ることができます。
$ mpiexec.hydra -gtool "gdb-ia:0,2,3,9,10=attach;/tmp/gdb:5,6=attach@knc"
-host <hostname_1> -n 4 <host-app> : -host <hostname_1-mic0> -n 4 <micapp> : -host <hostname_2> -n 4 <host-app>
[0,2,3,5,6,9,10] (mpigdb) z show map
[0,2,3]: hostname_1
[5,6]: hostname_1-mic0
[9,10]: hostname_2
[0,2,3,5,6,9,10] (mpigdb) z help
z <positive number(s) up to 11 or all> - Sets ranks for debugging
z show map - Shows ranks distribution across the cluster nodes
z help - Shows help information
[0,2,3,5,6,9,10] (mpigdb)
-gtoolfile <gtool_config_file>
mpiexec.hydra コマンドで指定されたランク上でインテル® VTune™ Amplifier XE、Valgrind*、GNU* デバッ
ガーなどのツールを起動するには、このオプションを使用します。
例
gtool_config_file に次の設定が含まれている場合:
env VARIABLE1=value1 VARIABLE2=value2:3,5,7-9; env VARIABLE3=value3:0,11 env
VARIABLE4=value4:1,12
次のコマンドで、ランクセット 3、5、7、8、9 向けに VARIABLE1 と VARIABLE2 を設定し、ランク 0 と 11
に VARIABLE3 を、VARIABLE4 を最初のランクと 12 番目のランクに設定します。
$ mpiexec.hydra -n 16 -gtoolfile gtool_config_file a.out
注意
オプション -gtool、-gtoolfile と環境変数 I_MPI_GTOOL は、互いに排他的です。オプション –gtool と
–gtoolfile の優先順位は同じレベルです。コマンドラインでは最初に指定されたオプションが有効で、2 番
目のオプションは無視されます。–gtool と -gtoolfile オプションは、I_MPI_GTOOL 環境変数よりも高い
優先順位を持ちます。そのため、mpiexec.hydra のコマンドラインで –gtool や –gtoolfile オプションを
指定していないときに、I_MPI_GTOOL 環境変数を使用します。
27
コマンド・リファレンス
-nolocal
mpiexec.hydra が起動されたホスト上で <executable> の実行を避けるには、このオプションを使用しま
す。MPI ジョブを開始する専用のマスターノードと、実際の MPI プロセスと実行する専用の計算ノードを配備
するクラスター上でこのオプションを使用できます。
-hosts <nodelist>
MPI プロセスを実行する特定の <nodelist> を指定します。例えば、次のコマンドラインは、host1 と
host2 で実行形式 a.out を実行します。
$ mpiexec.hydra -n 2 -ppn 1 -hosts host1,host2 ./a.out
注意
<nodelist> が 1 つのノードのみを含む場合、このオプションはローカルオプションとして解釈されます。詳
細は、「ローカルオプション」をご覧ください。
-iface <interface>
適切なネットワーク・インターフェイスを選択します。例えば、InfiniBand* ネットワークの IP エミュレーショ
ンが ib0 に設定されている場合、次のコマンドを使用できます。
$ mpiexec.hydra -n 2 -iface ib0 ./a.out
詳細は、「I_MPI_HYDRA_IFACE」環境変数をご覧ください。
-demux <mode>
複数の I/O 向けのポーリングモデルを設定するには、このオプションを使用します。デフォルト値は poll で
す。
引数
<spec>
poll
select
複数の I/O 向けのポーリングモデルを定義します。
ポーリングモデルとして poll を設定します。これは、デフォルト値
です。
ポーリングモデルとして select を設定します。
詳細は、「I_MPI_HYDRA_DEMUX」環境変数をご覧ください。
-enable-x または -disable-x
Xlib* のトラフィック・フォワードを制御するには、このオプションを使用します。デフォルトは、Xlib* トラ
フィックはフォワードされない -disable-x です。
-l
このオプションは、標準出力に書き込まれたすべての行の先頭に、MPI プロセスのランクを挿入します。
-tune [<arg >]
ここで以下を指定します。
<arg>= {<dir_name>, <configuration_file>}
28
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
mpitune ユーティリティーで収集されたデータを使用して、インテル® MPI ライブラリーのパフォーマンスを
最適化するには、このオプションを使用します。
注意
このオプションを使用する前に、パフォーマンス・チューニング・データを収集するため mpitune ユーティリ
ティーを使用します。
<arg> が指定されていない場合、指定された設定向けに最適なチューニング・オプションが適用されます。設
定ファイルのデフォルトの位置は、<installdir>/<arch>/etc ディレクトリーです。
異なる場所にある設定ファイルを指定するには、<arg>=<dir_name> を設定します。異なる設定ファイルを指
定するには、<arg>=<configuration_file> 設定します。
-ilp64
ILP64 インターフェイスを使用するには以下のオプションを使用します。詳細ついては、「ILP64 サポート」を
ご覧ください。
-s <spec>
指定された MPI プロセスへの標準入力をリダイレクトします。
引数
<spec>
all
<l>,<m>,<n>
<k>,<l>-<m>,<n>
MPI プロセスのランクを定義します。
すべてのプロセスを使用します。
使用するプロセスのリストを指定します。この場合 <l>、<m> および
<n> のみを使用します。デフォルト値は 0 です。
使用するプロセスの範囲を指定します。この場合 <k>、<l> から <m>、
および <n> を使用します。
-noconf
「設定ファイル」に記載される mpiexec.hydra 設定ファイルの処理を無効にします。
-ordered-output
MPI プロセスから出力されるデータの混在を避けるには、このオプションを使用します。このオプションは、
標準出力と標準エラー出力に影響します。
注意
このオプションを使用する場合、各プロセスの最後の行の出力を改行 (\n) で終了します。そうしないと、アプ
リケーションが応答を停止することがあります。
-path <directory>
実行する <executable> ファイルへのパスを指定します。
29
コマンド・リファレンス
-cleanup
起動されたプロセスの情報を含む一時ファイルを作成するには、このオプションを使用します。ファイル名は、
mpiexec_${username}_$PPID.log です。PPID は親プロセスの PID です。このファイルは、-tmpdir オプ
ションで指定された一時ディレクトリーに作成されます。このファイルは、mpicleanup ユーティリティーで
使用されます。ジョブが正常に終了すると、mpiexec.hydra コマンドは自動的にこのファイルを削除します。
詳細は、「I_MPI_HYDRA_CLEANUP」環境変数をご覧ください。
-tmpdir
一時ファイルのディレクトリーを設定します。
詳細は、「I_MPI_TMPDIR」環境変数をご覧ください。
-version または -V
インテル® MPI ライブラリーのバージョンを表示します。
-info
インテル® MPI ライブラリーのビルド情報を表示します。このオプションが指定されると、その他のコマンドラ
イン引数は無視されます。
-use-app-topology <value>
統計ファイルまたはクラスタートポロジーから転送されたデータを基に、ランクを再配置するにはこのオプ
ションを使用します。次のコマンドを使用できます。
$ mpiexec.hydra –use-app-topology ./stats.txt <…> ./my_app
引数
<value>
インテル® MPI ライブラリーのネイティブ統計ファイルのレベル 1 以上
へのパス。
注意
Hydra PM は、スタティック・メソッドの mpitune_rank_placement と同様の方法で libmpitune.so の
API を使用し、ランク割り当てにホストリストの結果を使用します。
詳細は、「I_MPI_HYDRA_USE_APP_TOPOLOGY」と「トポロジーを考慮したアプリケーションのチューニン
グ」をご覧ください。
-localhost
起動ノードのローカルホスト名を明示的に指定します。
例:
$ mpiexec.hydra -localhost <localhost_ip> -machinefile <file> -n 2 ./a.out
30
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
ブートオプション
-bootstrap <bootstrap server>
使用するブートストラップ・サーバーを選択します。ブートストラップ・サーバーは、システムで提供される
基本的なリモートノードへのアクセスメカニズムです。Hydra は、MPI プロセスを起動するため、ssh、rsh、
pdsh、fork、persist、slurm、ll、lsf、sge、または jmi などの複数のランタイム・ブートストラッ
プ・サーバーをサポートします。デフォルトのブートストラップ・サーバーは ssh です。slurm、ll、lsf、
または sge を選択すると、対応する srun、llspawn、stdio、blaunch、または qrsh ジョブ・スケジュ
ラー・ユーティリティーを使用して、それぞれ選択されたジョブ・スケジューラーの下で (SLURM*、
LoadLeveler*、LSF*、および SGE*) サービスプロセスを起動します。
引数
<arg>
ssh
rsh
pdsh
pbsdsh
fork
persist
slurm
ll
lsf
sge
jmi
文字列パラメーター。
セキュアシェルを使用します。これは、デフォルト値です。
リモートシェルを使用します。
並列分散シェルを使用します。
Torque* と PBS* pbsdsh コマンドを使用します。
fork 呼び出しを使用します。
Hydra persist サーバーを使用します。
SLURM* srun コマンドを使用します。
LoadLeveler* llspawn.stdi コマンドを使用します。
LSF* blaunch コマンドを使用します。
Univa* Grid Engine* qrsh コマンドを使用します。
Job Manager Interface (より密接な統合) を使用します。
SLURM* または PBS Pro* ジョブ管理との密接な統合を有効にするには、jmi ブートストラップ・サーバーを使
用します。密接な統合には、対応するジョブ管理によるプロセス識別子の登録も含まれます。この設定では、
ジョブ終了時に対応するジョブ管理による効率良いリソース管理とノードのクリーンアップが可能になります。
注意
リモートプロセスの並列起動に使用する一部のブートストラップ・サーバー (slurm と pdsh) では、異種環境
で動作しない可能性があります (例えば、I_MPI_MIC が有効に設定されている場合など)。
詳細は、「-bootstrap jmi」の説明と「I_MPI_HYDRA_BOOTSTRAP」環境変数をご覧ください。
31
コマンド・リファレンス
-bootstrap-exec <bootstrap server>
ブートストラップ・サーバーとして使用する実行ファイルを設定します。デフォルトのブートストラップ・
サーバーは ssh です。次に例を示します。
$ mpiexec.hydra -bootstrap-exec <bootstrap_server_executable> \
-f hosts.file -env <VAR1> <VAL1> -n 2 ./a.out
詳細は、「I_MPI_HYDRA_BOOTSTRAP」環境変数をご覧ください。
-bootstrap-exec-args <args>
ブートストラップ・サーバーの実行形式へ追加パラメーターを提供するには、このオプションを使用します。
$ mpiexec.hydra -bootstrap-exec-args <arguments> -n 2 ./a.out
詳細は、「I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS」環境変数をご覧ください。
-bootstrap persist
Hydra persist サーバーを使用して MPI プロセスを起動するには、このオプションを使用します。ジョブを実行
する前に、各ホスト上でサーバーを開始してください。
$ hydra_persist&
注意
root アカウントでサービスを開始しないでください。サーバーは、Linux* シェルから kill コマンドを使用して
シャットダウンできます。
-bootstrap jmi
SLURM* または PBS Pro* ジョブ管理との密接な統合を有効にするには、このオプションを使用します。密接な
統合は、それぞれのジョブ・スケジューラーの API (アプリケーション・プログラミング・インターフェイス)
やユーティリティーを使用して実装されます。このオプションを指定すると、デフォルトの libjmi.so ライ
ブラリーがロードされます。デフォルトのライブラリー名は、I_MPI_HYDRA_JMI_LIBRARY 環境変数で変更
できます。
詳細は、「I_MPI_HYDRA_JMI_LIBRARY」環境変数をご覧ください。
バインディング・オプション
-binding
MPI プロセスを特定のプロセッサーにピニングまたはバインドし、望ましくないプロセスのマイグレーション
を避けるため、このオプションを使用します。次の構文で記述します。引用符で 1 つのメンバーリストを囲み
ます。各パラメーターは、単一のピニング・プロパティーに対応します。
このオプションは、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、
インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
構文
-binding"<parameter>=<value>[;<parameter>=<value>
...]"
32
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
パラメーター
pin
enable | yes | on | 1
ピニング (固定)スイッチ。
ピニング (固定)プロパティーを on にします。これは、デフォルト値
です。
disable | no | off | 0
ピニング (固定)プロパティーを off にします。
cell
ピニング (固定) の解像度。
unit
基本プロセッサー・ユニット (論理 CPU)。
core
マルチコアシステムのプロセッサー・コア。
map
プロセスマッピング。
spread
scatter
bunch
p0,p1,...,pn
プロセスは、ほかのプロセッサーのセルに連続的にマッピングされま
す。そのため、プロセスは隣接するセルとリソースを共有しません。
プロセスは、ほかのプロセッサーのセルに離れてマッピングされま
す。隣接するプロセスは、マルチコアトポロジーで最も離れているセ
ルにマッピングされます。
プロセスは、ソケットごとにプロセッサー数/ソケット数によって
別々のプロセッサー・セルにマッピングされます。各ソケットのプロ
セッサーは、マルチコアトポロジーに最も近いセルの集合です。
プロセスは、p0、p1、... pn リスト上のプロセッサーの使用に応
じて別々のプロセッサーにマッピングされます。i 番目のプロセスは
pi プロセッサーにマッピングされます。
ここで pi は次のいずれかの値をとなります。
•
•
•
[m0,m1,...,mn]
プロセッサー番号 n
プロセッサー番号の範囲 n-m
対応するプロセスのピニングが必要ない場合 -1
i 番目のプロセスは、次の規則による 16 進マスクの mi で定義される
プロセッサーのサブセット上に割り当てられます。
mi の j 番目のビットが 1 であれば、j 番目のプロセッサーはサブ
セット mi に含まれます。
domain
cell
core
ノード上のプロセッサー・ドメインのセット。
セットの各ドメインは、単一のプロセッサーセル (unit もしくは
core)。
セットの各ドメインは、特定のコアを共有するプロセッサーのセルで
構成されます。
33
コマンド・リファレンス
cache1
cache2
cache3
cache
socket
node
<size>[:<layout>]
セットの各ドメインは、特定のレベル 1 キャッシュを共有するプロ
セッサーのセルで構成されます。
セットの各ドメインは、特定のレベル 2 キャッシュを共有するプロ
セッサーのセルで構成されます。
セットの各ドメインは、特定のレベル 3 キャッシュを共有するプロ
セッサーのセルで構成されます。
セットの要素は、キャッシュ 1、キャッシュ 2、キャッシュ 3 の中で
最も大きいドメインです。
セットの各ドメインは、特定のソケットに配置されるプロセッサーの
セルで構成されます。
ノード上のすべてのプロセッサーセルは、単一のドメインに配置され
ます。
セットの各ドメインは、<size> のプロセッサーセルで構成されま
す。<size> は次の値です。
•
•
•
注意
auto - ドメインサイズ = セル数/プロセス数
omp - ドメインサイズ = OMP_NUM_THREAD 環境変数の値
正の整数 - 実際のドメインサイズ
ドメインのサイズは、ノード上のプロセッサーコア数で制限されま
す。
ドメイン内の各メンバーの位置は、オプションの <layout> パラ
メーター値で定義されます。
•
•
•
compact - マルチコアトポロジー内で可能な限りほかと近くに
配置
scatter - マルチコアトポロジー内で可能な限りほかと遠くに
配置
range - プロセッサーの BIOS による番号で配置
<layout> パラメーターを省略すると、compact が想定されます。
order
compact
scatter
range
ドメインをリニアに順序付けします。
隣接するドメインがマルチコアトポロジーで最も近くなるようドメイ
ンの順番を設定します。
隣接するドメインがマルチコアトポロジーで最も遠くなるようドメイ
ンの順番を設定します。
BIOS のプロセッサーの番号付けに従ってドメインの順番を設定しま
す。
34
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
offset
ドメインリストのオフセット。
リニアな順番のドメインで開始するドメインの整数番号。このドメイ
ンは番号 0 を取得。ほかのドメイン番号は、巡回してシフトします。
<n>
通信サブシステムのオプション
-rmk <RMK>
使用されるリソース管理カーネルを選択するには、このオプションを使用します。インテル® MPI ライブラリー
は、pbs のみをサポートします。詳細は、「I_MPI_HYDRA_RMK」環境変数をご覧ください。
その他のオプション
-verbose または -v
mpiexec.hydra から提供される次のようなデバッグ情報を表示します。
•
•
•
サービスプロセスの引数
開始時にアプリケーションに渡される環境変数と引数
ジョブが起動中の PMI リクエストとレスポンス
詳細は、「I_MPI_HYDRA_DEBUG」環境変数をご覧ください。
-print-rank-map
MPI ランクのマッピングを表示します。
-print-all-exitcodes
すべてのプロセスが終了した際に終了コードを表示します。
2.3.2. ローカルオプション
-n <# of processes> または -np <# of processes>
現在の引数セットで実行する MPI プロセス数を指定します。
-env <ENVVAR> <value>
現在の引数セットですべての MPI プロセスに、指定された値 <value> の環境変数 <ENVVAR> を設定します。
-envall
現在の引数セットですべての環境変数を伝搬します。詳細は、「I_MPI_HYDRA_ENV」環境変数をご覧ください。
-envnone
現在の引数セットで MPI プロセスに任意の環境変数の伝搬を抑制します。
35
コマンド・リファレンス
-envlist <list of env var names>
引数リストと現在の値を渡します。<list of env var names> は、MPI プロセスに送るカンマで区切られ
た環境変数のリストです。
-host <nodename>
MPI プロセスを実行する特定の <nodename> を指定します。例えば、次のコマンドラインは、host1 と
host2 で実行形式 a.out を実行します。
$ mpiexec.hydra -n 2 -host host1 ./a.out : -n 2 -host host2 ./a.out
-path <directory>
現在の引数セットで実行する <executable> ファイルへのパスを指定します。
-wdir <directory>
現在の引数セットで実行する <executable> ファイルが使用するワーキング・ディレクトリーを指定します。
-umask <umask>
リモートの <executable> ファイルに umask <umask> コマンドを実行します。
-hostos <host OS>
特定のホストにインストールされているオペレーティング・システムを指定します。MPI プロセスは、このオ
プションの指示に従って各ホスト上で起動されます。デフォルト値は linux です。
引数
<arg>
linux
windows
文字列パラメーター。
ホストには Linux* がインストールされています。これは、デフォル
ト値です。
ホストには Windows* がインストールされています。
注意
このオプションは、–host オプションと組み合わせて使用されます。例えば、次のコマンドラインは、host1
で a.exe を実行し、host2 で b.out を実行します。
$ mpiexec.hydra -n 1 -host host1 -hostos windows a.exe : -n 1 -host host2 \ hostos linux ./a.out
2.3.3. 拡張デバイス制御オプション
-rdma
RDMA ネットワーク・ファブリックを選択します。アプリケーションは、最初に dapl,ofa リストから利用可
能な RDMA ネットワーク・ファブリックの使用を試みます。利用できない場合、tcp,tmi,ofi リストのほか
のファブリックが使用されます。このオプションは、-genv I_MPI_FABRICS_LIST
dapl,ofa,tcp,tmi,ofi -genv I_MPI_FALLBACK 1 オプションを指定するのと等価です。
36
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-RDMA
RDMA ネットワーク・ファブリックを選択します。アプリケーションは、最初に dapl,ofa リストから利用可
能な RDMA ネットワーク・ファブリックの使用を試みます。指定されたファブリックが存在しない場合、アプ
リケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST dapl,ofa -genv
I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-dapl
DAPL ネットワーク・ファブリックを選択します。アプリケーションは、DAPL ネットワーク・ファブリックの
使用を試みます。利用できない場合 tcp,tmi,ofa,ofi リストのほかのファブリックが使用されます。このオ
プションは、-genv I_MPI_FABRICS_LIST dapl,tcp,tmi,ofa,ofi -genv I_MPI_FALLBACK 1 オプ
ションを指定するのと等価です。
-DAPL
DAPL ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、アプリケー
ションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST dapl -genv I_MPI_FALLBACK
0 オプションを指定するのと等価です。
-ib
OFA ネットワーク・ファブリックを選択します。アプリケーションは、OFA ネットワーク・ファブリックの使
用を試みます。利用できない場合、dapl,tcp,tmi,ofi リストのほかのファブリックが使用されます。この
オプションは、-genv I_MPI_FABRICS_LIST ofa,dapl,tcp,tmi,ofi -genv I_MPI_FALLBACK 1 オ
プションを指定するのと等価です。
-IB
OFA ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、アプリケーショ
ンは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST ofa -genv I_MPI_FALLBACK 0 オ
プションを指定するのと等価です。
-tmi
TMI ネットワーク・ファブリックを選択します。アプリケーションは、TMI ネットワーク・ファブリックの使
用を試みます。利用できない場合、dapl,tcp,ofa,ofi リストのほかのファブリックが使用されます。この
オプションは、-genv I_MPI_FABRICS_LIST tmi,dapl,tcp,ofa,ofi -genv I_MPI_FALLBACK 1 オ
プションを指定するのと等価です。
-TMI
TMI ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、アプリケーショ
ンは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST tmi -genv I_MPI_FALLBACK 0 オ
プションを指定するのと等価です。
-mx
Myrinet MX* ネットワーク・ファブリックを選択します。アプリケーションは、Myrinet MX* ネットワーク・
ファブリックの使用を試みます。利用できない場合、dapl,tcp,ofa,ofi リストのほかのファブリックが使
用されます。このオプションは、-genv I_MPI_FABRICS_LIST tmi,dapl,tcp,ofa,ofi -genv
I_MPI_TMI_PROVIDER mx -genv I_MPI_DAPL_PROVIDER mx -genv I_MPI_FALLBACK 1 オプション
を指定するのと等価です。
37
コマンド・リファレンス
-MX
Myrinet MX* ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、アプリ
ケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST tmi -genv
I_MPI_TMI_PROVIDER mx - genv I_MPI_FALLBACK 0 オプションを指定するのと等価です。
-psm
PSM ネットワーク・ファブリックを選択します: PSM 互換モードのインテル® True Scale ファブリックまたは
インテル® Omni-Path ファブリック。アプリケーションは、PSM ネットワーク・ファブリックの使用を試みま
す。利用できない場合、dapl,tcp,ofa,ofi リストのほかのファブリックが使用されます。このオプション
は、-genv I_MPI_FABRICS_LIST tmi,dapl,tcp,ofa,ofi -genv I_MPI_TMI_PROVIDER psm
-genv I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-PSM
PSM ネットワーク・ファブリックを選択します: PSM 互換モードのインテル® True Scale ファブリックまたは
インテル® Omni-Path ファブリック。指定されたファブリックが存在しない場合、アプリケーションは失敗し
ます。このオプションは、-genv I_MPI_FABRICS_LIST tmi -genv I_MPI_TMI_PROVIDER psm
-genv I_MPI_FALLBACK 0 オプションを指定するのと等価です。
-psm2
インテル® Omni-Path ファブリックを選択します。アプリケーションは、インテル® Omni-Path ファブリックの
使用を試みます。利用できない場合、dapl,tcp,ofa,ofi リストのほかのファブリックが使用されます。この
オプションは、-genv I_MPI_FABRICS_LIST tmi,dapl,tcp,ofa,ofi -genv I_MPI_TMI_PROVIDER
psm2 -genv I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-PSM2
インテル® Omni-Path ファブリックを選択します。指定されたファブリックが存在しない場合、アプリケーショ
ンは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST tmi -genv I_MPI_TMI_PROVIDER
psm2 -genv I_MPI_FALLBACK 0 オプションを指定するのと等価です。
-ofi
OpenFabrics Interfaces* (OFI*) ネットワーク・ファブリックを選択します。アプリケーションは、OFA ネット
ワーク・ファブリックの使用を試みます。利用できない場合、tmi,dapl,tcp,ofa リストのほかのファブ
リックが使用されます。このオプションは、-genv I_MPI_FABRICS_LIST ofi,tmi,dapl,tcp,ofa
-genv I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-OFI
OFI ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、アプリケーショ
ンは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST ofi -genv I_MPI_FALLBACK 0 オ
プションを指定するのと等価です。
2.3.4. 環境変数
I_MPI_HYDRA_HOST_FILE
アプリケーションが実行するホストファイルを設定します。
構文
I_MPI_HYDRA_HOST_FILE=<arg>
38
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
廃止された構文
HYDRA_HOST_FILE=<arg>
引数
<arg>
<hostsfile>
説明
文字列パラメーター。
ホストファイルへの絶対もしくは相対パス
この環境変数にはホストファイルを設定します。
I_MPI_HYDRA_DEBUG
デバッグ情報を表示します。
構文
I_MPI_HYDRA_DEBUG=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
デバッグ出力を on にします。
デバッグ出力を off にします。これは、デフォルト値です。
デバッグモードを有効にするには、この環境変数を設定します。
I_MPI_HYDRA_ENV
環境変数の伝搬を制御します。
構文
I_MPI_HYDRA_ENV=<arg>
引数
<arg>
all
説明
文字列パラメーター。
すべての MPI プロセスにすべての環境変数を渡します。
MPI プロセスへの環境の伝搬を制御するには、この環境変数を設定します。デフォルトでは、起動ノードの環
境全体が MPI プロセスへ渡されます。この環境変数を設定すると、リモートシェルによって環境変数をオー
バーライドします。
I_MPI_JOB_TIMEOUT、I_MPI_MPIEXEC_TIMEOUT (MPIEXEC_TIMEOUT)
mpiexec.hydra のタイムアウト時間を設定します。
構文
I_MPI_JOB_TIMEOUT=<timeout>
I_MPI_MPIEXEC_TIMEOUT=<timeout>
39
コマンド・リファレンス
廃止された構文
MPIEXEC_TIMEOUT=<timeout>
引数
<timeout>
<n> >=0
説明
mpiexec.hydra のタイムアウト時間を秒単位で指定します。
デフォルト値は 0 で、タイムアウトしません。
この環境変数は、mpiexec.hydra がジョブの起動後 <timeout> 秒でジョブを強制終了する時間を設定しま
す。<timeout> 値は、ゼロよりも大きくなければいけません。不正な値は無視されます。
注意
mpiexec.hydra コマンドを実行する前に、シェル環境で I_MPI_JOB_TIMEOUT 環境変数を設定します。
<timeout> 値を設定するのに、-genv や -env オプションを使ってはいけません。これらのオプションは、
MPI プロセス環境に環境変数の値を渡すときにのみ使用します。
I_MPI_JOB_TIMEOUT_SIGNAL (MPIEXEC_TIMEOUT_SIGNAL)
タイムアウトでジョブが終了した際に送信するシグナルを定義します。
構文
I_MPI_JOB_TIMEOUT_SIGNAL=<number>
廃止された構文
MPIEXEC_TIMEOUT_SIGNAL=<number>
引数
<number>
<n> > 0
説明
シグナル番号を定義します。
デフォルト値は 9 (SIGKILL) です。
I_MPI_JOB_TIMEOUT 環境変数で指定されたタイムアウト時間が経過した際に、MPI ジョブを停止するために
送信するシグナルを定義します。システムがサポートしないシグナル番号を設定した場合、mpiexec.hydra
は警告メッセージを表示し、デフォルトのシグナル番号 9 (SIGKILL) でタスクを終了します。
I_MPI_JOB_ABORT_SIGNAL
ジョブが予期せずに終了した場合に、すべてのプロセスに送信するシグナルを定義します。
構文
I_MPI_JOB_ABORT_SIGNAL=<number>
引数
<number>
<n> > 0
シグナル番号を定義します。
デフォルト値は 9 (SIGKILL) です。
40
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
この環境変数を設定して、タスクを強制終了するシグナルを定義します。サポートされないシグナル番号を設
定した場合、mpiexec.hydra は警告メッセージを表示し、デフォルトのシグナル番号 9 (SIGKILL) でタスク
を終了します。
I_MPI_JOB_SIGNAL_PROPAGATION (MPIEXEC_SIGNAL_PROPAGATION)
シグナルの伝搬を制御します。
構文
I_MPI_JOB_SIGNAL_PROPAGATION=<arg>
廃止された構文
MPIEXEC_SIGNAL_PROPAGATION=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
伝搬をオンにします。
伝搬をオフにします。これは、デフォルト値です。
この環境変数を設定して、シグナル (SIGINT、SIGALRM、SIGTERM) の伝搬を制御します。シグナルの伝搬を
有効にすると、受信したシグナルはすべての MPI ジョブを実行するプロセスへ送信されます。シグナルの伝搬
を無効にすると、MPI ジョブを実行するすべてのプロセスは、デフォルトのシグナル 9 (SIGKILL) で停止され
ます。
I_MPI_HYDRA_BOOTSTRAP
ブートストラップ・サーバーを設定します。
構文
I_MPI_HYDRA_BOOTSTRAP=<arg>
引数
<arg>
ssh
rsh
pdsh
pbsdsh
fork
slurm
ll
文字列パラメーター。
セキュアシェルを使用します。これは、デフォルト値です。
リモートシェルを使用します。
並列分散シェルを使用します。
Torque* と PBS* pbsdsh コマンドを使用します。
fork 呼び出しを使用します。
SLURM* srun コマンドを使用します。
LoadLeveler* llspawn.stdi コマンドを使用します。
41
コマンド・リファレンス
lsf
sge
jmi
説明
LSF* blaunch コマンドを使用します。
Univa* Grid Engine* qrsh コマンドを使用します。
Job Manager Interface (より親密な統合) を使用します。
この環境変数は、ブートストラップ・サーバーを設定します。
注意
mpiexec.hydra コマンドを実行する前に、シェル環境で I_MPI_HYDRA_BOOTSTRAP 環境変数を設定します。
<arg> 値を設定するのに、-env オプションを使ってはいけません。これらのオプションは、MPI プロセス環
境に環境変数の値を渡すときに使用します。
I_MPI_HYDRA_BOOTSTRAP_EXEC
ブートストラップ・サーバーとして使用する実行ファイルを設定します。
構文
I_MPI_HYDRA_BOOTSTRAP_EXEC=<arg>
引数
<arg>
<executable>
説明
文字列パラメーター。
実行ファイル名。
この環境変数は、ブートストラップ・サーバーとして使用する実行ファイルを設定します。
I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS
ブートストラップ・サーバーへの追加の引数を設定します。
構文
I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS=<arg>
引数
<arg>
<args>
文字列パラメーター。
追加のブートストラップ・サーバーの引数。
説明
この環境変数は、ブートストラップ・サーバーに追加の引数を設定します。
I_MPI_HYDRA_BOOTSTRAP_AUTOFORK
ローカルプロセス向けの fork 呼び出しの使い方を制御します。
構文
I_MPI_HYDRA_BOOTSTRAP_AUTOFORK = <arg>
42
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
文字列パラメーター。
ローカルプロセス向けに fork を使用します。これは、ssh、rsh、
ll、lsf、pbsdsh ブートストラップ・サーバー向けのデフォルト値
です。
ローカルプロセス向けに fork を使用しません。これは、sge ブート
ストラップ・サーバー向けのデフォルト値です。
ローカルプロセス向けの fork 呼び出しの使い方を制御するには、この環境変数を設定します。
注意
このオプションは、slurm、pdsh、persist、jmi ブートストラップ・サーバーには適用されません。
I_MPI_HYDRA_RMK
リソース管理カーネルを使用します。
構文
I_MPI_HYDRA_RMK=<arg>
引数
<arg>
<rmk>
説明
文字列パラメーター。
リソース管理カーネル。サポートされる値は、pbs のみです。
pbs リソース管理カーネルを使用するには、この環境変数を設定します。インテル® MPI ライブラリーは、pbs
のみをサポートします。
I_MPI_HYDRA_PMI_CONNECT
PMI メッセージの処理方式を定義します。
構文
I_MPI_HYDRA_PMI_CONNECT=<value>
引数
<value>
ocache
cache
lazy-cache
使用するアルゴリズム。
PMI メッセージをキャッシュしません。
PMI への要求を最小限に抑えるため、ローカル pmi_proxy 管理プロ
セスで PMI メッセージをキャッシュします。キャッシュされた情報
は、自動的に子の管理プロセスへ伝搬されます。
オンデマンドのキャッシュモードの伝搬。これは、デフォルト値で
す。
43
コマンド・リファレンス
alltoall
説明
任意の取得要求が完了する前に、情報はすべての pmi_proxy 間で自
動的に交換されます。
この環境変数を設定して、PMI メッセージの処理方式を選択します。
I_MPI_PERHOST
mpiexec.hydra コマンドの -perhost オプションのデフォルトを設定します。
構文
I_MPI_PERHOST=<value>
引数
<value>
integer > 0
all
allcores
説明
-perhost オプションで使用されるデフォルトの値を定義します。
オプションの正確な値。
ノード上のすべての論理 CPU。
ノード上のすべてのコア (物理 CPU)。これは、デフォルト値です。
この環境変数を設定して、-perhost オプションに適用されるデフォルトの値を定義します。
I_MPI_PERHOST 環境変数が定義されている場合、-perhost オプションは指定されている値を意味します。
I_MPI_JOB_TRACE_LIBS
–trace オプションを介して事前ロードするライブラリーを選択します。
構文
I_MPI_JOB_TRACE_LIBS=<arg>
廃止された構文
MPIEXEC_TRACE_LIBS=<arg>
引数
<arg>
<list>
説明
文字列パラメーター。
スペース (空白で) 区切られた、事前ロードするライブラリー。デフォ
ルト値は vt です。
–trace オプションを介して事前ロードする代替ライブラリーを選択するには、この環境変数を設定します。
I_MPI_JOB_CHECK_LIBS
-check_mpi オプションを介して事前ロードするライブラリーを選択します。
構文
I_MPI_JOB_CHECK_LIBS=<arg>
44
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<arg>
<list>
説明
文字列パラメーター。
スペース (空白で) 区切られた、事前ロードするライブラリー。デフォ
ルト値は vtmc です。
-check_mpi オプションを介して事前ロードする代替ライブラリーを選択するには、この環境変数を設定しま
す。
I_MPI_HYDRA_BRANCH_COUNT
階層的な分岐数を設定します。
構文
I_MPI_HYDRA_BRANCH_COUNT =<num>
引数
<num>
<n> >=0
番号。
•
•
説明
ノードが 128 未満の場合、デフォルト値は -1 です。これは階層
構造がないことを意味します。
ノードが 128 以上の場合、デフォルト値は 32 です。
mpiexec.hydra コマンドまたは、pmi_proxy 管理プロセスで起動される子管理プロセスの数を制限するには、
この環境変数を設定します。
I_MPI_HYDRA_PMI_AGGREGATE
PMI メッセージの集約を on/off にします。
構文
I_MPI_HYDRA_PMI_AGGREGATE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
PMI メッセージの集約を有効にします。これは、デフォルト値です。
PMI メッセージの集約を無効にします。
この環境変数を設定して、PMI メッセージの集約を有効/無効にします。
I_MPI_HYDRA_GDB_REMOTE_SHELL
GNU* デバッガーを実行するリモートシェル・コマンドを設定します。
構文
I_MPI_HYDRA_GDB_REMOTE_SHELL=<arg>
45
コマンド・リファレンス
引数
<arg>
ssh
rsh
説明
文字列パラメーター。
セキュアシェル (SSH)。これは、デフォルト値です。
リモートシェル (RSH)。
リモートマシン上で GNU* デバッガーを実行するリモートシェル・コマンドを設定するには、この環境変数を
設定します。SSH や RSH と同じ形式でリモートシェル・コマンドを指定するため、この環境変数を設定を使用
できます。
I_MPI_ HYDRA_JMI_LIBRARY
JMI ライブラリーのデフォルト設定を定義します。
構文
I_MPI_HYDRA_JMI_LIBRARY=<value>
引数
<value>
libjmi_slurm.so.1.1 |
libjmi_pbs.so.1.0
説明
JMI ダイナミック・ライブラリー名もしくはパスを文字列で定義しま
す。
ライブラリー名をフルパスで設定します。デフォルト値は
libjmi.so です。
Hydra プロセス管理によってロードされる JMI ライブラリーを定義するには、この環境変数を設定します。
LD_LIBRARY_PATH 環境変数にパスが登録されていない場合、ライブラリーへのフルパスを設定します。
mpirun コマンドを使用している場合、この環境変数を設定する必要はありません。JMI ライブラリーは、自動
検知されて設定されます。
I_MPI_HYDRA_IFACE
ネットワーク・インターフェイスを設定します。
構文
I_MPI_HYDRA_IFACE=<arg>
引数
<arg>
<network interface>
説明
文字列パラメーター。
システムで設定されたネットワーク・インターフェイス。
この環境変数は、使用するネットワーク・インターフェイスを設定します。例えば、InfiniBand* ネットワーク
の IP エミュレーションが ib0 に設定されている場合、-iface ib0 を使用します。
I_MPI_HYDRA_DEMUX
demultiplexer (demux) モードを設定します。
46
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
構文
I_MPI_HYDRA_DEMUX=<arg>
引数
<arg>
poll
select
説明
文字列パラメーター。
複数 I/O demultiplexer (demux) モードエンジンとして poll を設定
します。これは、デフォルト値です。
複数 I/O demultiplexer (demux) モードエンジンとして select を設
定します。
複数 I/O demux モードエンジンを指定するには、この環境変数にを設定します。デフォルト値は poll です。
I_MPI_HYDRA_CLEANUP
デフォルトの mpicleanup 入力ファイルの作成を制御します。
構文
I_MPI_HYDRA_CLEANUP=<value>
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
mpicleanup 入力ファイルの作成を有効にします。
mpicleanup 入力ファイルの作成を無効にします。これは、デフォ
ルト値です。
mpicleanup ユーティリティーの入力ファイルを作成するには、I_MPI_HYDRA_CLEANUP 環境変数を設定し
ます。
I_MPI_TMPDIR (TMPDIR)
一時ディレクトリーを設定します。
構文
I_MPI_TMPDIR=<arg>
引数
<arg>
<path>
説明
文字列パラメーター。
一時ディレクトリーを設定します。デフォルト値は /tmp です。
この環境変数を設定して、mpicleanup の入力ファイルを保存する一時ディレクトリーを指定します。
I_MPI_JOB_RESPECT_PROCESS_PLACEMENT
ジョブ・スケジューラーが提供するプロセスノードごとのパラメーターを使用するかどうか指定します。
47
コマンド・リファレンス
構文
I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=<arg>
引数
<value>
enable | yes | on | 1
Disable | no | off | 0
説明
バイナリー・インジケーター。
ジョブ・スケジューラーで提供されるプロセス配置を使用します。こ
れは、デフォルト値です。
ジョブ・スケジューラーで提供されるプロセス配置を使用しません。
I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=enable に設定すると、Hydra プロセス管理はジョブ・スケ
ジューラーで提供される PPN を使用します。
I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=disable に設定すると、Hydra プロセス管理はコマンドライ
ン・オプション、または I_MPI_PERHOST 環境変数に指定される PPN を使用します。
I_MPI_GTOOL
選択されたランク向けに起動されるツールを指定します。
構文
I_MPI_GTOOL=“<command line for a tool 1>:<ranks set 1>[=exclusive][@arch 1];
<command line for a tool 2>:<ranks set 2>[=exclusive][@arch 2]; … ;<command line
for a tool n>:<ranks set n>[=exclusive][@arch n]”
引数
<arg>
<command line for a
tool>
<rank set>
パラメーター。
パラメーターとともにツールを指定します。
ツールの実行に関連するランクの範囲を指定します。カンマもしくは
「-」で区切って、連続したランクを指定することができます。
注意
不正なランクのインデックスが指定された場合、ツールは警告を出力
し、正しいランクを使用して処理を継続します。
[=exclusive]
[@arch]
ホストごとに複数ランク向けのツールを起動しないようにするには、
このパラメーターを指定します。このパラメーターはオプションで
す。
ツールに適用するアーキテクチャーを指定します。<rank set> を
指定すると、ツールは特定のアーキテクチャーを持つホストに割り当
てられたランクのみに適用されます。このパラメーターはオプション
です。[@arch] の値については、I_MPI_PLATFORM の引数テーブ
ルの説明ご覧ください。
インテル® Xeon Phi™ コプロセッサー上でデバッガーを起動する場
合、[@arch] 設定が必要です。詳細は、例を参照してください。
48
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
インテル® VTune™ Amplifier XE、Valgrind*、GNU* デバッガーなどのツールを特定のランク上で起動するには、
このオプションを使用します。
例
次のコマンドは、異なる状況で I_MPI_GTOOL 環境変数をを使用する例です。
1.
I_MPI_GTOOL 環境変数を設定して、インテル® VTune™ Amplifier XE と Valgrind* を起動します。
$ export I_MPI_GTOOL=“amplxe-cl -collect advanced-hotspots -analyze-system
-r result1:5,3,7-9=exclusive@nhm;valgrind -log-file=log_%p :0,1,10-12@wsm”
$ mpiexec.hydra -n 16 a.out
2.
指定したランクセットからインテル® マイクロアーキテクチャー (開発コード名 Nehalem) のホスト上
に割り当てられた最小のインデックスを持つランクで amplxe-cl を実行するには、このコマンドを
使用します。同時に、指定したランクセットからインテル® マイクロアーキテクチャー (開発コード名
Westmere) のホスト上のすべてのランクで Valgrind* を実行します。Valgrind* の結果は、ファイル名
log_<process ID> に出力されます。
I_MPI_GTOOL 環境変数を設定して、GNU* デバッガー (GDB) を起動します。
$ mpiexec.hydra -n 16 -genv I_MPI_GTOOL=“gdb:3,5,7-9” a.out
注意
このコマンドは、指定したランクセットに gdb を適用します。
オプション -gtool、-gtoolfile と環境変数 I_MPI_GTOOL は、互いに排他的です。オプション –gtool と
–gtoolfile の優先順位は同じレベルです。コマンドラインでは最初に指定されたオプションが有効で、2 番
目のオプションは無視されます。–gtool と -gtoolfile オプションは、I_MPI_GTOOL 環境変数よりも高い
優先順位を持ちます。そのため、mpiexec.hydra のコマンドラインで –gtool や –gtoolfile オプションを
指定していないときに、I_MPI_GTOOL 環境変数を使用します。
I_MPI_HYDRA_USE_APP_TOPOLOGY
構文
I_MPI_HYDRA_USE_APP_TOPOLOGY=<value>
引数
<value>
説明
インテル® MPI ライブラリーのネイティブ統計ファイルのレベル 1 以
上へのパス。
I_MPI_HYDRA_USE_APP_TOPOLOGY が設定されていると、Hydra プロセス管理 (PM) は、統計ファイルまたは
クラスタートポロジーから転送されたデータを基に、ランクを再配置します。
$ mpiexec.hydra –use-app-topology ./stats.txt <…> ./my_app
注意
Hydra PM は、スタティック・メソッドの mpitune_rank_placement と同様の方法で libmpitune.so の
API を使用し、ランク割り当てにホストリストの結果を使用します。
詳細は、「-use-app-topology」と「トポロジーを考慮したアプリケーションのチューニング」をご覧ください。
49
2.3.5. Cleaning up ユーティリティー
コマンド・リファレンス
mpicleanup
mpiexec.hydra プロセス管理の下で、MPI 実行が異常終了した後、環境をクリーンアップします。
構文
mpicleanup [ -i <input_file> | -t -f <hostsfile> ] [ -r <rshcmd> ] \
[ -b <branch_count> ] [-p] [-s | -d] [-h] [-V]
または
mpicleanup [ --input <input_file> | --total --file <hostsfile> ] \
[ --rsh <rshcmd> ] [ --branch <branch_count> ] [ --parallel ] \
[ --silent | --verbose ] [ --help ] [ --version ]
引数
-i <input_file> |
--input <input_file>
-t | --total
mpiexec.hydra で生成された入力ファイルを指定します。デフォル
ト値は mpiexec_${username}_$PPID.log で、環境変数
I_MPI_TMPDIR や TMPDIR で定義される一時ディレクトリー、また
は /tmp ディレクトリーに配置されます。
指定したマシン上のすべてのユーザープロセスを停止するには、
total モードを使用します。このオプションは、root アカウントで
はサポートされません。
-f <hostsfile> |
--file <hostsfile>
クリーンアップするマシンのリストを含むファイルを指定します。
-r <rshcmd> |
--rsh <rshcmd>
使用するリモートシェルを指定します。デフォルトは ssh です。
-b <branch_count> |
--branch
<branch_count>
-p | --parallel
-s | --silent
-d | --verbose
-h | --help
-V | --version
説明
子プロセスの数を定義します。デフォルト値は 32 です。
並列起動モードを使用します。このオプションは、すべてのホストが
利用可能な場合にのみ適用できます。さもないと、いくつかのマシン
は未定義状態になります。
出力を抑制します。
詳細なデバッグ情報を出力します。
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します
MPI ジョブが異常終了した後に、環境をクリーンアップするためこのコマンドを使用します。
例えば、事前の mpiexec.hydra の起動によって作成された入力ファイルに記載されたプロセスを停止するに
は、次のコマンドを使用します。
50
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
$ mpicleanup
または
$ mpicleanup --input /path/to/input.file
hostsfile ファイルで指定されているマシン上のすべてのプロセスを停止するには、次のコマンドを使用しま
す。
$ mpicleanup --file hostsfile --total
2.3.6. チェックポイント・リスタートのサポート
インテル® MPI ライブラリーのチェックポイント・リスタート機能は、アプリケーションから透過に設定されて
います。MPI プロセス管理インターフェイスを経由して、チェックポイント・リスタート機能にアクセスできま
す。チェックポイント・リスタートのオプションと環境変数は、Hydra プロセス管理でのみ適用されます。デ
フォルトのプロセス管理を変更して Hydra プロセス管理を使用するには、I_MPI_PROCESS_MANAGER=hydra
を設定します。
注意
チェックポイント・リスタート機能を使用するには、OFA* ネットワーク・モジュールが必要です。
I_MPI_FABRICS 環境変数に ofa を設定するか、-ib オプションを指定することで、OFA ネットワーク・モ
ジュールを選択できます。
注意
チェックポイント・リスタート機能を有効にするには、次の設定を行います。
•
•
I_MPI_OFA_DYNAMIC_QPS 環境変数に 1 を設定
I_MPI_OFA_NUM_RDMA_CONNECTIONS 環境変数に 0 を設定
注意
チェックポイント・リスタート機能を使用するため、Berkeley Lab Checkpoint/Restart* (BLCR) ソフトウェアを
インストールします。
グローバルオプション
-ckpoint <switch>
引数
<switch>
enable | yes | on | 1
disable | no | off | 0
チェックポイントのスイッチ。
起動されたアプリケーション向けにチェックポイント機能を有効にし
ます。
起動されたアプリケーション向けにチェックポイント機能を無効にし
ます。これは、デフォルト値です。
チェックポイント機能を 有効/無効 にする場合、このオプションを指定します。無効に設定された場合、ほか
のチェックポイントのオプションは無視されます。
51
コマンド・リファレンス
-ckpoint-interval <sec>
引数
<sec>
秒単位のチェックポイントの間隔。
タイマー駆動型チェックポイントの機能を有効にするには、このオプションを使用します。「タイマー駆動型
チェックポイント」をご覧ください。<sec> 秒ごとにチェックポイントが作成されます。このオプションが省
略されると、シグナル駆動のチェックポイント機能が使用されます。詳細は、「明示的なシグナル駆動型
チェックポイント」をご覧ください。
-ckpoint-preserve <N>
引数
<N>
保持するチェックポイント・イメージの最大数。デフォルト値は 1 で
す。
チェックポイントのイメージを減らすため、実行中のチェックポイントの最後の <N> チェックポイントを保持
するには、このオプションを使用します。デフォルトでは、最後のチェックポイントのみが保持されます。
-restart
保存されたチェックポイントの 1 つからアプリケーションを再開するには、このオプションを使用します。
-ckpointlib、-ckpoint-prefix および -ckpoint-num オプションが再開に影響します。実行形式のファ
イル名はプロセス管理から提供されますが、無視されます。チェックポイントを取得するには再起動したアプ
リケーションに許されているため、-restart オプションは -chkpoint やほかのチェックポイントオプショ
ンを伴うことはできません。
-ckpoint-num <N>
引数
<N>
アプリケーションを再開するチェックポイント・イメージの識別子。
有効な値は、最後のチェックポイントの数と同じかそれ以下の数値で
す。デフォルトは、最後のチェックポイント番号です。
このオプションは、アプリケーションを再開中に使用します。チェックポイント番号 <N> (0 からカウント) が、
再開ポイントとして使用されます。最適値を求めるには、-ckpoint-prefix オプションを指定してチェック
ポイント・ストレージ・ディレクトリーの設定を調査します。
注意
-ckpoint-preserve オプションで決定されるイメージ数が最大数として保持されます。
チェックポイントが存在しない場合、アプリケーションは起動時にエラーメッセージを出力して中断されます。
デフォルトでは、最後のチェックポイントが選択されます。
52
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
ローカルオプション
-ckpointlib <lib>
引数
<lib>
blcr
チェックポイント・リスタートのシステム・ライブラリー。
Berkeley Lab Checkpoint/Restart* (BLCR) ライブラリー。これは、デ
フォルト値です。
チェックポイント・リスタート・システムのライブラリーを選択するには、このオプションを使用します。
Berkeley Lab Checkpoint/Restart* (BLCR) ライブラリーのみがサポートされます。
注意
チェックポイント関数を使用したり、アプリケーションを再開するときに、同じオプションを指定する必要が
あります。
-ckpoint-prefix <dir>
引数
<dir>
チェックポイントを保存するディレクトリー。デフォルト値は /tmp
です。
チェックポイントを保存するディレクトリーを設定します。デフォルトで、/tmp が使用されます。ディレクト
リー <dir> は書き込み可能でなければいけません。さもないと、プロセス起動中にエラーが発生し、アプリ
ケーションはアボートします。
注意
チェックポイント関数を使用したり、アプリケーションを再開するときに、同じオプションを指定する必要が
あります。
-ckpoint-tmp-prefix <dir>
引数
<dir>
チェックポイントを一時保存するディレクトリー。デフォルト値は
/tmp です。
一時チェックポイントを保存するディレクトリーを設定します。チェックポイントは、-ckpoint-tmp-prefix
から -ckpoint-prefix で指定されたディレクトリーへ移行します。ディレクトリー <dir> は書き込み可能で
なければいけません。さもないと、アプリケーション起動中にアボートします。オプションが設定されていない
と、一時ストレージは使用されません。
-ckpoint-logfile <file>
チェックポイントのアクティビティーをモニターするには、このオプションを使用します。トレース結果は、
<file> へ出力されます。<file> は書き込み可能でなければいけません。さもないと、アプリケーション起動
中にアボートします。これは、オプション機能です。
53
コマンド・リファレンス
環境変数
I_MPI_CKPOINT
構文
I_MPI_CKPOINT=<switch>
引数
<switch>
enable | yes | on | 1
disable | no | off | 0
説明
チェックポイントのスイッチ。
起動されたアプリケーション向けにチェックポイント機能を有効にし
ます。
起動されたアプリケーション向けにチェックポイント機能を無効にし
ます。これは、デフォルト値です。
チェックポイントの機能を切り替えるには、この環境変数を使用します。このオプションは、-ckpoint オプ
ションと同じ効果があります。–ckpoint オプションを指定すると、Hydra プロセス管理は I_MPI_CKPOINT
環境変数を設定します (もし設定されていなければ)。
I_MPI_CKPOINTLIB
構文
I_MPI_CKPOINTLIB=<lib>
引数
<lib>
blcr
説明
チェックポイント・リスタートのシステム・ライブラリー。
Berkeley Lab Checkpoint/Restart* (BLCR) ライブラリー。これは、デ
フォルト値です。
チェックポイント・リスタート・システムのライブラリーを選択するには、この環境変数を使用します。この
オプションは、-ckpointlib オプションと同じ効果があります。
I_MPI_CKPOINT_PREFIX
構文
I_MPI_CKPOINT_PREFIX=<dir>
引数
<dir>
説明
チェックポイントを保存するディレクトリー。デフォルト値は /tmp
です。
チェックポイントを保存するディレクトリーを設定します。このオプションは、-ckpoint-prefix オプショ
ンと同じ効果があります。
54
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_CKPOINT_TMP_PREFIX
構文
I_MPI_CKPOINT_TMP_PREFIX=<dir>
引数
<dir>
説明
チェックポイントを一時保存するディレクトリー。
-ckpoint-prefix が永続的なストレージを示し、この環境変数を使用して一時的なチェックポイントのスト
レージを示します。このオプションは、-ckpoint-tmp-prefix オプションと同じ効果があります。
I_MPI_CKPOINT_INTERVAL
構文
I_MPI_CKPOINT_INTERVAL=<sec>
引数
<sec>
説明
秒単位のチェックポイントの間隔。
タイマー駆動型チェックポイントの機能を切り替えるには、この環境変数を使用します。このオプションは、
-ckpoint-interval オプションと同じ効果があります。
I_MPI_CKPOINT_PRESERVE
構文
I_MPI_CKPOINT_PRESERVE=<N>
引数
<N>
説明
保持するチェックポイント・イメージの最大数。デフォルト値は 1
です。
チェックポイントのイメージを減らすため、実行中のチェックポイントの最後の <N> チェックポイントを保持
するには、このオプションを使用します。このオプションは、-ckpoint-preserve オプションと同じ効果が
あります。
I_MPI_CKPOINT_LOGFILE
構文
I_MPI_CKPOINT_LOGFILE=<file>
引数
<file>
説明
チェックポイントのアクティビティーを保存するトレースファイル。
チェックポイントのアクティビティーを監視するには、このオプションを使用します。トレース結果は、
<file> へ出力されます。このオプションは、-ckpoint-logfile オプションと同じ効果があります。
55
コマンド・リファレンス
I_MPI_CKPOINT_NUM
構文
I_MPI_CKPOINT_NUM=<N>
引数
アプリケーションを再開するチェックポイントのイメージ数。
<N>
説明
このオプションは、アプリケーションを再開中に使用します。このオプションは、-ckpoint-num オプション
と同じ効果があります。
I_MPI_RESTART
構文
I_MPI_RESTART=<switch>
引数
<switch>
enable | yes | on | 1
disable | no | off | 0
説明
再開スイッチ。
保存されているチェックポイントの 1 つからアプリケーションを再開
する機能を有効にします。
アプリケーションの再開を無効にします。これは、デフォルト値で
す。
保存されたチェックポイントの 1 つからアプリケーションを再開するには、この環境変数を使用します。この
オプションは、–restart オプションと同じ効果があります。
MPI アプリケーションの実行
チェックポイント・リスタートの機能は、Hydra プロセスランチャー (mpiexec.hydra) で利用できます。ラ
ンチャーは、チェックポイントを取得するため 2 つの互いに排他的な方式を提供します。
•
•
時間で
明示的なシグナルで
チェックポイントを一時的または永続的に保存するディレクトリーのパスを指定できます。
タイマー駆動型チェックポイント
次の例では、3600 秒 (=1 時間) ごとにチェックポイントが取得されます。チェックポイントは、ckptdir と呼
ばれるディレクトリーに保存されます。各ノードは、ノード番号とチェックポイント番号からなる 1 つの
チェックポイントを生成します。
user@head $ mpiexec.hydra -ckpoint on -ckpoint-prefix /home/user/ckptdir ckpoint-interval 3600 -ckpointlib blcr -n 32 -f hosts /home/user/myapp
明示的なシグナル駆動型チェックポイント
次の例では、アプリケーションが起動されチェックポイントを取得するためアプリケーションに明示的なシグ
ナル (SIGUSR1) が送信されます。チェックポイントは、ckptdir と呼ばれるディレクトリーに保存されます。
user@head $ mpiexec.hydra -ckpoint on -ckpoint-prefix /home/user/ckptdir ckpointlib blcr -n 32 -f hosts /home/user/myapp
56
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
...
user@head $ kill -s SIGUSR1 <PID of mpiexec.hydra>
ヘッドノードで mpiexec.hydra にシグナルを送るだけで済みます。
ローカル・ストレージを使用する
次の例は、チェックポイントを保存する 2 つの場所を示します。
•
•
一時的な場所: -ckpoint-tmp-prefix への引数で指定
永続的な場所: -ckpoint--prefix への引数で指定
user@head $ mpiexec.hydra -ckpoint on -ckpoint-tmp-prefix
/ssd/user/ckptdir -ckpoint-prefix /home/user/ckptdir -ckpointlib blcr –n
32 -f hosts /home/user/myapp
MPI アプリケーションの再起動
次のコマンドは、チェックポイント番号 <N> からアプリケーションを再開する例です。
user@head $ mpiexec.hydra -restart -ckpoint-prefix /home/user/ckptdir - ckpointlib
blcr -ckpoint-num <N> -n 32 -f hosts
再起動後、壊れたまたは利用できないノードを「hosts」ファイルから削除する必要があります。チェックポ
イント・イメージの中に保存されているため、再開時に実行ファイル名を指定する必要はありません。
ログファイルのチェックポイント・アクティビティーを表示する
次の例では、チェックポイントのアクティビティーを監視できるように MPI ジョブを起動して、チェックポイ
ントのログファイルを指定します。
user@head $ mpiexec.hydra -ckpoint on -ckpoint-logfile /home/user/ckpt.log
-ckpoint-tmp-prefix /ssd/user/ckptdir -ckpoint-prefix /home/user/ckptdir
-ckpointlib blcr -n 32 -f hosts /home/user/myapp
次はサンプルのログです。
[Mon Dec 19 13:31:36 2011] cst-linux Checkpoint log initialized (master mpiexec
pid 10687, 48 processes, 6 nodes)
[Mon Dec 19 13:31:36 2011] cst-linux Permanent checkpoint storage:
/mnt/lustre/user
[Mon Dec 19 13:31:36 2011] cst-linux Temporary checkpoint storage: /tmp [Mon Dec
19 13:32:06 2011] cst-linux Started checkpoint number 0 ...
[Mon Dec 19 13:33:00 2011] cst-linux Finished checkpoint number 0.
[Mon Dec 19 13:33:00 2011] cst-linux Moving checkpoint 0 from /tmp to
/mnt/lustre/user ...
[Mon Dec 19 13:38:00 2011] cst-linux Moved checkpoint 0 from /tmp to
/mnt/lustre/user
以前のチェックポイントの自動クリーンアップ
チェックポイントのイメージは大容量です。インテル® MPI ライブラリーは、デフォルトでは最後に使用した
チェックポイントのみを保持します。以前のチェックポイントを <N> 個保持するには次のオプションを使用し
ます。-ckpoint-preserve <N>-ckpoint-preserve のデフォルト値は 1 です (最後のチェックポイントの
みを保持)。
user@head $ mpiexec.hydra -ckpoint on -ckpoint-preserve <N> -ckpoint-tmp-prefix
/ssd/user/ckptdir -ckpoint-prefix /home/user/ckptdir -ckpointlib blcr -n 32 -f
hosts /home/user/myapp
57
コマンド・リファレンス
2.4. 異種オペレーティング・システムのクラスターをサポート
インテル® MPI ライブラリーは、Windows* と Linux* の異種環境をサポートします。Windows* と Linux* 上で
利用可能な Hydra プロセス管理は、インテル® MPI ライブラリーが 1 つのジョブを Linux* と Windows* 上で協
調して処理すること可能にします。Hydra プロセス管理の詳細については、「スケーラブルなプロセス管理シ
ステムのコマンド」をご覧ください。
Linux* と Windows* オペレーティング・システム上でジョブを混在して実行するには、次の操作を行います。
•
•
•
•
•
ジョブを実行するそれぞれのノードにインテル® MPI ライブラリーがインストールされ、利用可能であ
ることを確認します。
-demux=select と I_MPI_FABRICS=shm:tcp は、オペレーティング・システムが混在した実行を
サポートします。
-bootstrap オプションを設定します。オペレーティング・システム混在実行モードのデフォルトは、
bootstrap service です。この設定を有効にするには、MPI ジョブを実行する各ノードの
Windows* 上で hydra サービスが起動されている必要があります。-bootstrap ssh を使用するため、
Linux* と Windows* 間の ssh 接続を確立します。
-hostos オプションを使用して、特定のホストにインストールされているオペレーティング・システ
ムを指定します。
隣接するオペレーティング・システム環境の継承により不適切な設定が行われるのを避けるため、
I_MPI_ROOT と LD_LIBRARY_PATH ローカル環境変数を使用します。
例えば、Windows* と Linux* の異種環境で IMB-MPI1 ジョブを実行するには次のコマンドを使用します。
$ mpirun -demux select -genv I_MPI_FABRICS shm:tcp -env I_MPI_ROOT \
<windows_installdir> -env PATH <windows_installdir>\\<arch>\\bin -hostos \
windows -host <win_host> -n 2 <windows_installdir>\\<arch>\\bin\\IMB-MPI1 : \
-host <lin_host> -n 3 <linux_installdir>/<arch>/bin/IMB-MPI1
2.5. インテル® Xeon Phi™ コプロセッサーのサポート
ここでは、インテル® メニー・インテグレーテッド・コア (インテル® MIC アーキテクチャー) ベースのインテル®
Xeon Phi™ コプロセッサー (開発コード名 Knights Corner) に関連するインテル® MPI ライブラリーのトピックに
ついて説明します。
2.5.1. 使用モデル
インテル® Xeon Phi™ コプロセッサー (開発コード名 Knights Corner) ベースのシステムでインテル® MPI ライブ
ラリーを使用するには、次の条件を満たす必要があります。
•
•
それぞれのホストとインテル® Xeon Phi™ コプロセッサーは、ユニークな IP アドレスやシンボル名を
持つ必要があります (通常のクラスターと同様)。
ホストとインテル® Xeon Phi™ コプロセッサー間は、パスワードなしの SSH が確立します。
接続に失敗する場合、次の原因を調査してください。
可能性のある原因
解決方法
ホスト上で、iptables サービスが起動している。
サービスを停止します。
インテル® MPSS のバージョンが古い。
経路が不正である。
新しいバージョンをインストールします。
適切な経路を追加します。
58
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
IP 接続の構成を設定するには、システム管理者に尋ねるかインテル® MIC ソフトウェア・スタックの readme
をご覧ください。
インテル® Xeon Phi™ コプロセッサー上で MPI ライブラリーを使用する場合、インテル® Xeon Phi™ コプロセッ
サー・カードは、異なるインテル® アーキテクチャーの別のクラスターであることに留意してください。インテル®
Xeon Phi™ コプロセッサーで MPI の機能を使用する方法は、インテル® Xeon® プロセッサーの方法と類似していま
す。
例えば、MPI ライブラリーは、インテル® Xeon® プロセッサー・ホストとインテル® Xeon Phi™ コプロセッサー
で同じパスを持つ NFS 共有を介して、インテル® Xeon® プロセッサーおよびインテル® Xeon Phi™ コプロセッ
サーの両方で利用できます。MPI タスクは、インテル® Xeon® プロセッサー・ホストまたはインテル® Xeon
Phi™ コプロセッサーで実行を開始することができます。
インテル® Xeon Phi™ コプロセッサーとホストノードで実行するアプリケーションをビルドするには、次の手順
に従ってください。
1. コンパイラーとインテル® MPI ライブラリー向けの環境設定を行います。
(host)$ .<compiler_installdir>/bin/compilervars.sh intel64em64t
(host)$ .<mpi_installdir>/intel64em64t/bin/mpivars.sh
2.
インテル® MIC アーキテクチャー向けにアプリケーションをビルドします。
(host)$ mpiicc -mmic test.c -o test_hello.mic
3.
インテル® 64 アーキテクチャー向けにアプリケーションをビルドします。
(host)$ mpiicc test.c -o test_hello
インテル® Xeon Phi™ コプロセッサーとホストノードでアプリケーションを実行するには、次の手順に従ってく
ださい。
1.
2.
ホストとインテル® Xeon Phi™ コプロセッサー間で NFS が正しく設定されていることを確認してくだ
さい。これは、インテル® MIC アーキテクチャー上でインテル® MPI ライブラリーを利用する際の推奨
方法です。
インテル® Xeon Phi™ コプロセッサー上で NFS を設定する方法は、
http://software.intel.com/en-us/articles/intel-mpi-library-for-linux-kb/all/ (英語) と
http://www.isus.jp/article/idz/mic-developer/ をご覧ください。
インテル® MPI ライブラリー向けに環境設定を確立します。
(host)$ .<mpi_installdir>/intel64em64t/bin/mpivars.sh
3.
ホストから実行形式ファイルを起動します。
(host)$ export I_MPI_MIC=1
(host)$ mpirun -n 2 -host <host ID> ./test_hello : -n 2 -host <coprocessor
ID> ./test_hello.mic
注意
-configfile、-hostfile および –machinefile オプションも使用できます。各オプションの使用方法は、
それぞれの説明をご覧ください。
インテル® Xeon Phi™ コプロセッサー上でのみアプリケーションを実行するには、インテル® 64 アーキテク
チャー向けにアプリケーションを構築する方法を除いて上記の手順に従ってください。また、ホストファイル
がインテル® Xeon Phi™ コプロセッサー名のみを含むことを確認します。
詳細については、http://software.intel.com/en-us/articles/intel-mpi-library-for-linux-kb/all/ (英語) と
http://www.isus.jp/article/idz/mic-developer/ をご覧ください。
59
コマンド・リファレンス
2.5.2. 環境変数
I_MPI_MIC
構文
I_MPI_MIC=<value>
引数
インテル® Xeon Phi™ の認識。
<value>
enable | yes | on | 1
disable | no | off | 0
説明
インテル® Xeon Phi™ コプロセッサーの認識を有効にします。
インテル® Xeon Phi™ コプロセッサーの認識を無効にします。これ
は、デフォルト値です。
インテル® MPI ライブラリーがインテル® Xeon Phi™ コプロセッサーを検出し、インテル® MIC アーキテク
チャーのコンポーネントを動作させるかどうかを制御するには、この環境変数を設定します。
環境変数 I_MPI_MIC が enable である場合、環境変数 I_MPI_SSHM のデフォルトは enable です。
注意
これは暫定的な変数であり、アーキテクチャー検出と関連事項が明確に定義されるまで、一時的に導入されま
す。
I_MPI_MIC_PREFIX
構文
I_MPI_MIC_PREFIX=<value>
引数
<value>
説明
インテル® Xeon Phi™ コプロセッサー向けの実行ファイル名のプリ
フィクスを文字列で指定します。デフォルト値は、空文字です。
ホストの実行ファイル名にプリフィクスを追加し、対応するインテル® Xeon Phi™ コプロセッサーの実行ファイ
ル名にするには、この環境変数を設定します。
例えば、インテル® MIC アーキテクチャーとインテル® 64 アーキテクチャーの実行形式ファイルを区別するた
め、I_MPI_MIC_PREFIX 環境変数に異なる場所を設定します。
(host)$
(host)$
(host)$
(host)$
mpiicc
mpiicc
export
mpirun
test.c -o test_hello
-mmic test.c -o ./MIC/test_hello (host)$ export I_MPI_MIC=1
I_MPI_MIC_PREFIX=./MIC/
-n 4 -hostfile <hostfile> test_hello
この例では、./test_hello バイナリーがインテル® 64 アーキテクチャーのノードで起動され、
./MIC/test_hello バイナリーがインテル® Xeon Phi™ コプロセッサー上で起動されます。
60
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_MIC_POSTFIX
構文
I_MPI_MIC_POSTFIX=<value>
引数
インテル® Xeon Phi™ コプロセッサー向けの実行ファイル名のポスト
フィクスを文字列で指定します。デフォルト値は、空文字です。
<value>
説明
ホストの実行ファイル名にポストフィクスを追加し、対応するインテル® Xeon Phi™ コプロセッサーの実行ファ
イル名にするには、この環境変数を設定します。
例えば、インテル® MIC アーキテクチャーとインテル® 64 アーキテクチャーの実行形式ファイルを区別するた
め、I_MPI_MIC_POSTFIX 環境変数に異なる名前を設定します。
(host)$
(host)$
(host)$
(host)$
mpiicc
mpiicc
export
mpirun
test.c -o test_hello
-mmic test.c -o test_hello.mic (host)$ export I_MPI_MIC=1
I_MPI_MIC_POSTFIX=.mic
-n 4 -hostfile <hostfile> test_hello
この例では、./test_hello バイナリーがインテル® 64 アーキテクチャーのノードで起動され、
test_hello.mic バイナリーがインテル® Xeon Phi™ コプロセッサー上で起動されます。
I_MPI_DAPL_PROVIDER_LIST
構文
I_MPI_DAPL_PROVIDER_LIST=<primary provider>[,<local secondary provider> [,<remote
secondary provider>]]
引数
<primary provider>
<local secondary
provider>
<remote secondary
provider>
説明
最良のレイテンシーと利用可能なすべてのネットワーク・セグメント
を提供します (ノード間とノード内)。
ローカル設定向けに最良のバンド幅を提供します。距離は、
I_MPI_DAPL_LOCALITY_THRESHOLD 環境変数よりも小さな値で
す。
リモート設定向けに最良のバンド幅を提供します。距離は、
I_MPI_DAPL_LOCALITY_THRESHOLD 環境変数よりも大きな値で
す。
ロードする DAPL プロバイダーを定義するには、この環境変数を設定します。
インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (Intel® MPSS) で、
I_MPI_DAPL_PROVIDER_LIST は次のように設定されます。
•
<primary provider>-CCL-direct
•
<local secondary provider>-IBSCIF
•
<remote secondary provider>-CCL-proxy
I_MPI_DAPL_PROVIDER_LIST=<CCL-direct>[,<IBSCIF>[,<CCL-proxy>]] を設定します。以下は、
インテル® MPSS で提供されるデフォルトの dat.conf の例です。
61
コマンド・リファレンス
I_MPI_DAPL_PROVIDER_LIST=ofa-v2-mlx4_0-1u,ofa-v2-scif0,ofa-v2-mcm-1
2 次プロバイダーのしきい値を次のように調整できます。
I_MPI_DAPL_DIRECT_COPY_THRESHOLD 環境変数 (<2 次プロバイダーのしきい値>):
I_MPI_DAPL_DIRECT_COPY_THRESHOLD=<主なプロバイダーの直接コピーしきい値>[,<2 次プロバイダー
のしきい値>]
<主なプロバイダーの直接コピーしきい値> は、<2 次プロバイダーのしきい値> よりも小さな値でなければい
けません。
環境変数 I_MPI_DAPL_PROVIDER_LIST が値のリストを含んでいる場合、次の環境変数の構文は、対応する
プロバイダーに関連する値で拡張されます。
•
I_MPI_DAPL_DIRECT_COPY_THRESHOLD
•
I_MPI_DAPL_TRANSLATION_CACHE
•
I_MPI_DAPL_TRANSLATION_CACHE_AVL_TREE
•
I_MPI_DAPL_CONN_EVD_SIZE
•
I_MPI_DAPL_RDMA_RNDV_WRITE
単一の値を設定すると、すべてのプロバイダーに適用されます。また、一致しないもしくは誤った値を設定す
ると、すべてのプロバイダーにデフォルト値が適用されます。
次に例を示します。
export I_MPI_DAPL_PROVIDER_LIST=ofa-v2-mlx4_0-1,ofa-v2-scif0 export
I_MPI_DAPL_TRANSLATION_CACHE=enable,disable
この I_MPI_DAPL_TRANSLATION_CACHE の設定は、最初のプロバイダー向けにメモリー登録キャッシュを有
効にしますが、2 次プロバイダーでは有効になりません。
I_MPI_DAPL_LOCALITY_THRESHOLD
ローカルの 2 次プロバイダーからリモートの 2 次プロバイダーへ切り替えるしきい値を定義します。
構文
I_MPI_DAPL_LOCALITY_THRESHOLD=<value>
引数
<value>
次の説明を参照してくださ
い。
説明
ローカルの 2 次プロバイダーからリモートの 2 次プロバイダーへ切
り替えるしきい値を定義します。
オプションの詳細は、「I_MPI_DAPL_PROVIDER_LIST」をご覧くだ
さい。
デフォルト値は、非均一メモリー・アーキテクチャー (NUMA) の構成
と DAPL*/インテル® MPSS のバージョンに依存します。
この値の範囲 [10: 255] は、ホスト内の NUMA と装着されるインテル® Xeon Phi™ コプロセッサーの距離に
関連します。デフォルト値はクラスターとジョブに関連して、次のように決定されます。
DAPL* 2.1.3 から開始して、式を使った自動調整するロジックあります: 255 - dmax + dmin。次の表は、
I_MPI_DAPL_LOCALITY_THRESHOLD のデフォルト値を状況に応じて使用する場合の数式を示します。
62
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
デフォルト値を求める式
d + (255 - 1 - dmax)
d + (255 - 1 - dmax) /
2
モード
同じホストで 2 つのインテル® Xeon Phi™ コプロセッサーでランクが
実行される場合。
同じホストでインテル® Xeon Phi™ コプロセッサーで 1 つのランクが
実行される場合。
両方のランクは同じホストで実行されます。
d
255
上記の式で、
•
•
•
両方のランクは異なるホストで実行されます。
d は、ホストシステムの NUMA の距離を示します。
dmin は、ホストシステムの NUMA の最小距離を示します。
dmax は、ホストシステムの NUMA の最大距離を示します。
DAPL 2.1.3 以前に、I_MPI_DAPL_LOCALITY_THRESHOLD は、ノード内で実行されるすべてのランクが選択
され、ローカルの 2 次プロバイダーに準拠し、デフォルトで 255 と等価です。そうでない場合、リモートの 2
次プロバイダーが選択されます。
I_MPI_ENV_PREFIX_LIST
特定のプラットフォーム向けの環境変数のプリフィクスを定義します。
構文
I_MPI_ENV_PREFIX_LIST=[platform:prefix][,...]
引数
platform
特定のプラットフォーム (文字列)。
オプション: htn,nhm,wsm,snb,ivb
オプションの詳細は、「I_MPI_PLATFORM」をご覧ください。
prefix
特定のプラットフォーム向けに使用される環境変数名のプリフィクス
(文字列)。
説明
特定のプラットフォーム向けに使用される環境変数名のプリフィクスを定義するには、この環境変数を設定し
ます。
環境変数のプリフィクスを I_MPI_ENV_PREFIX_LIST で指定する場合、プリフィクスの対象となる環境変数
は、特定のプラットフォーム上でそれぞれの非プリフィクス環境変数を上書きします。
I_MPI_ENV_PREFIX_LIST を指定しない場合、環境変数はすべてのプラットフォームに適用されます。
注意
プラットフォーム名を指定する場合、小文字を使用します。
63
コマンド・リファレンス
例
1. I_MPI_ENV_PREFIX_LIST=platform:prefix
<NAME>=valueis はすべてのシステムに適用されます。
2.
<prefix>_<NAME>=value は、すべての <platform> システム向けに、<NAME>=value を定義し
ます。
何台かのマシンが、インテル® マイクロアーキテクチャー (開発コード名 Sandy Brigge) ベースのプ
ラットフォームで、残りのマシンはその他のアーキテクチャー・ベースのプラットフォームであると
仮定します。環境変数 OMP_NUM_THREADS の値は、すべてのプラットフォーム上で 3 です。
インテル® マイクロアーキテクチャー (開発コード名 Sandy Brigge) ベースのプラットフォーム上のラ
ンク向けに OMP_NUM_THREADS=5 に設定するには、次のように OMP_NUM_THREADS 向けに
I_MPI_ENV_PREFIX_LIST でプリフィクスを指定します。
I_MPI_ENV_PREFIX_LIST=snb:<prefix>
OMP_NUM_THREADS=3
<prefix>_OMP_NUM_THREADS=5
2.5.3. コンパイラーのコマンド
次の表は、MPI コンパイラー・コマンドと利用可能なコンパイラー、コンパイラー・ファミリー、言語、およ
びアプリケーション・バイナリー・インターフェイス (ABI) を示します。
コンパイラーの
コマンド
デフォルト・
コンパイラー
サポートされる言語
サポートされる
ABI
mpiicc
icc
C
64 ビット
mpiicpc
icpc
C++
mpiifort
ifort
Fortran77/Fortran 95
コンパイラー・コマンドは次のような共通の機能を持ちます。
•
•
64 ビット
64 ビット
コンパイラー・コマンドは、<installdir>/intel64em64t/bin ディレクトリーに配置されます。
環境の設定は、<installdir>/intel64em64t/bin/mpivars.sh スクリプトを実行することで行
うことができます。異なるライブラリー向けの環境設定が必要な場合、対応する環境に切り替えるた
め、次の引数を mpivars.sh スクリプトに渡すことができます。

debug

release

debug_mt

release_mt
マルチスレッド版の最適化されたライブラリーが、デフォルトで選択されます。
•
•
異種 MPI アプリケーションをコンパイルするには、インテル® 64 アーキテクチャー向けとインテル®
MIC アーキテクチャー向けに、2 回コンパイルを行います。
ターゲット・アーキテクチャーを区別するため、スクリプトはコンパイラー・オプションを解析し
ます。ターゲットをインテル® MIC アーキテクチャーとするオプションを (-mmic など) 検出すると、
インテル® Parallel Studio XE 2016 for Linux* (インテル® MIC アーキテクチャー向け) のコンパイ
ラーを使用して、インテル® MIC アーキテクチャー向けの実行形式ファイルが作成されます。そうで
ない場合、インテル® Xeon® プロセッサー向けの実行形式ファイルが生成されます。
64
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
•
-cc/-cxx/-fc/-f77/-f90 オプションか、リファレンス・マニュアルに記載される環境変数によっ
て GNU* コンパイラーによるコンパイルを要求できます。
次に例を示します。
(host)$ mpicc -cc=/usr/linux-k1om-4.7/bin/x86_64-k1om-linux-gcc -mmic test.c
-o test_hello.mic
注意
インテル® MIC アーキテクチャーとインテル® 64 アーキテクチャーの実行形式ファイルを区別するため、異な
る格納場所やファイル名を使用してください。
2.6. 多目的デーモン (MPD) のコマンド
mpd
多目的デーモン (MPD)。
構文
mpd[ --help] [ -V ] [ --version ] [ --host=<host> --port=<portnum> ] \
[ --noconsole ] [ --trace ] [ --echo] [ --daemon ] [ --bulletproof ]\
[ --i fhn <interface/hostname>] [ --listenport <listenport> ]
引数
-help
-V | --version
-h <host> -p <portnum> |
--host=<host> -- port=
<portnum>
-n | --noconsole
-t | --trace
-e | --echo
-d | --daemon
--bulletproof
--ifhn=<interface/
hostname>
-l <listenport> |
--listenport=
<listenport>
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を取得します。
既存のリングに加わるためのホストとポート指定します。
--host と –port オプションは、どちらも指定する必要がありま
す。
開始時にコンソールを開きません。
内部 MPD トレース情報を出力します。
ほかの mspd 接続の開始時にポート番号を表示します。
デーモンモードで mpd を起動します。デフォルトでインタラクティ
ブ・モードが有効です。
MPD の bulletproofing を有効にします。
MPD 通信に使用する <interface/hostname> を指定します。
mpd の監視ポートを指定します。
65
コマンド・リファレンス
説明
多目的デーモン (MPD: Multipurpose Daemon) は、インテル® MPI ライブラリーの並列ジョブを開始するプロセ
ス管理システムです。ジョブを実行する前に、各ホスト上で mpd デーモンを開始しリングに接続します。長い
パラメーター名は、先頭文字にハイフン (等号なし) 記号を使用して省略することができます。
例:
$ mpd -h masterhost -p 4268 -n
上記のコードは次のコードと等価です。
$ mpd --host=masterhost --port=4268 -noconsole
ホーム・ディレクトリーに .mpd.conf という名前のファイルが存在する場合、ユーザーだけが読み書きでき
ます。ファイルは、secretword=<secretword> を含んでいる必要があります。MPD を root 権限で実行す
る場合、mpd を root 権限で実行するアカウントのホーム・ディレクトリーの .mpd.conf ファイルの代わりに、
/etc ディレクトリーに mod.conf ファイルを作成します。root アカウントでの MPD リングの開始を避けてく
ださい。
注意
多目的デーモン (MPD) は、インテル® MPI ライブラリー 5.0 では使用されなくなりました。並列ジョブを起動
する代わりに、スケーラブルなプロセス管理システム (Hydra) を使用します。
mpdboot
mpd リングを開始します。
構文
mpdboot[ -h] [ -V ] [ -n <#nodes> ] [ -f <hostsfile> ] [ -r <rshcmd> ] \
[ -u <user> ] [ -m<mpdcmd>] [ --loccons ] [ --remcons ] \
[ -s ] [ -d ] [ -v] [ -1 ] [ --ncpus=<ncpus> ] [ -o ] \ [ -b <maxbranch> ] [ -p ]
または
mpdboot[ --help] [ --version ] [ --totalnum=<#nodes> ] \
[ --file=<hostsfile> ] [ --rsh=<rshcmd> ] [ --user=<user> ] \
[ --mpd=<mpdcmd> ] [ --loccons ] [ --remcons ] [ --shell ] \
[ --debug ] [ --verbose] [ -1 ] [ --ncpus=<ncpus> ] [ --ordered ]
[ --maxbranch=<maxbranch> ] [ --parallel-startup ]
引数
-h | --help
-V | --version
-d | --debug
-v | --verbose
-n <#nodes> |
--totalnum=<#nodes>
-r <rshcmd> |
--rsh=<rshcmd>
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
デバッグ情報を表示します。
詳しい情報を表示します。<rshcmd> 試行を表示します。
デーモンが開始される mpd.hosts 内のノード数。
デーモンとジョブを開始するリモートシェルを指定します。デフォル
ト値は ssh です。
66
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-f <hostsfile> |
--file=<hostsfile>
-1
-m<mpdcmd> |
--mpd=<mpdcms>
-s | --shell
-u <user> |
-- user=<user>
--loccons
--remcons
--ncpus=<ncpus>
-o | --ordered
-b <maxbranch> |
--maxbranch=<maxbranch>
-p |--parallel-startup
説明
デーモンが起動しているマイン名のリストを格納するファイスのパス
と名前。
マシンごとに複数の mpd の起動を有効にします。
リモートホスト上の mpd のフルパス名を指定します。
シェルを指定します。
ユーザーを指定します。
ローカル MPD コンソールを開きません。
リモート MPD コンソールを開きません。
ローカルマシン上で使用するプロセス数を指定します (ほかのノード
は hosts ファイルで示されます)。
mpd デーモンを mpd.hosts ファイルで指定されている順番で開始し
ます。
ほかの mpd リングに参加する mpd デーモンの最大数を指定するに
は、このオプションを使用します。これは、mpd デーモンの並列処理
を制御するのに役立ちます。デフォルト値は 4 です。
このオプションは、単独のローカル root における mpd デーモンの並
列高速起動を可能にします。デーモンのチェックを行いません。この
オプションはまた、リモートコマンドからの出力を転送しないシェル
をサポートします。
<mpd.hosts> にノード名のリストを記述することで、指定した数のノード上で mpd デーモンを起動します。
mpd デーモンは、デフォルトで ssh コマンドを使用して起動されます。ssh 接続が確立されていない場合、
-r rsh オプションを使用して rsh に切り替えます。クラスター上のすべてのノードが、パスワードなしの
ssh コマンドによる接続が互いに可能であるか、-r rsh オプションを使用してパスワードなしの rsh コマ
ンドを使用します。
注意
mpdboot コマンドは、mpd.hosts ファイルにマシン名が記述されていない場合でも、ホストマシン上で MPD
デーモンを起動します。
mpdexit
単一の mpd デーモンをシャットダウンします。
構文
mpdexit [ --help][ -V ] [--version ] <mpdid>
67
コマンド・リファレンス
引数
-help
-V | --version
<mpdid>
説明
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します
終了する mpd デーモンを指定します。
このコマンドは、シグナルを送信して mpd デーモンを終了させます。mpdtrace -l コマンドで、
<hostname>_<port number> の形式で取得した <mpdid> を使用します。
mpdallexit
すべてのノード上のすべての mpd デーモンをシャットダウンします。
構文
mpdallexit [ --help] [ -V ] [ --version ]
引数
-help
-V | --version
説明
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
すべての MPD リングをシャットダウンします。
mpdcleanup
mpd がクラッシュした場合に、環境をクリーンアップします。
構文
mpdcleanup [ -h] [ -V ] [ -f <hostsfile> ] [ -r <rshcmd> ] [ -u <user> ]\
[ -c <cleancmd> ] [ -a]
または
mpdcleanup [ --help] [ --version ] [ --file=<hostsfile> ] \
[ --rsh=<rshcmd> ] [ --user=<user> ] [ --clean=<cleancmd> ] \
[ --all]
引数
-h| --help
-V | --version
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します
-f <hostsfile> |
--file=<hostsfile>
クリーンアップするマシンのリストを含むファイルを指定します。
-r <rshcmd> |
--rsh=<rshcmd>
使用するリモートシェルを指定します。
-u <user> |
--user=<user>
ユーザーを指定します。
68
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
UNIX* ソケットの削除に使用するコマンドを指定します。デフォルトの
コマンドは、/bin/rm -f です。
-c <cleancmd> |
--clean=<cleancmd>
<hostsfile> に指定されるすべてのホスト上で、I_MPI_JOB_CONTEXT
環境変数の設定に関連するすべての mpd デーモンを終了します。
-a | --all
説明
mpd がクラッシュした場合に、環境をクリーンアップするには、このコマンドを使用します。これは、ローカ
ルマシンとリモートマシン上の UNIX* ソケットを削除するか、I_MPI_JOB_CONTEXT 環境変数の設定に関連す
るすべての mpd デーモンを終了します。
例えば、次のコマンドは hostsfile ファイルに指定されるマシン上の UNIX* ソケットを削除します。
$ mpdcleanup --file=hostsfile
hostsfile ファイルで指定されているマシン上の mpd デーモンを kill するには、次のコマンドを使用しま
す。
$ mpdcleanup --file=hostsfile --all
mpdtrace
mpd が起動しているか確認します。
構文
mpdallexit [ --help] [ -V ] [ --version ]
引数
-help
-V | --version
-l
説明
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
ホスト名の代わりに MPD 識別子を表示します。
リング中のすべての mpd のホスト名もしくは識別子をリストするには、このコマンドを使用します。出力され
る識別子は、<hostname>_<port number> の形式です。
mpdcheck
ホスト上の設定の問題をチェックして、設定情報を表示します。
構文
mpdcheck [ -v] [ -l] [ -h ] [ --help ] [ -V ] [ --version ] mpdcheck -pc [ -v ] [ -l]
mpdcheck -f <host_file> [ -ssh ] [ -v ] [ -l] mpdcheck -s [ -v ] [ -l]
mpdcheck -c < server_host> <server_port> [ -v ] [ -l]
引数
-h| --help
-V | --version
-pc
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
ローカルホストの設定情報を表示します。
69
コマンド・リファレンス
-f <host_file>
-ssh
-s
-c <server_host>
<server_port>
-l
-v
説明
<host_file> にリストされるホストの情報を表示します。
それぞれのリモートホストで ssh の起動をテストします。–f オプ
ションと同時に使用します。
1 つのホスト上でサーバーとして mpdcheck を実行します。
現在のホストまたは異なるホスト上でクライアントとして mpdcheck
を実行します。<server_host> <server_port> へ接続します。
拡張形式で診断メッセージを出力します。
mpdcheck が行ったアクションを出力します。
クラスターノード上の設定に関する問題をチェックするには、このコマンドを使用します。出力の *** で始まる
行は、何らかの問題を明示します。
1 つ以上のホストで mpd を介して並列ジョブの実行に問題が生じた場合、それぞれのノードで一度だけスクリ
プトを実行してみてください。
mpdringtest
MPD リングをテストします。
構文
mpdringtest [ --help ] [ -V ] [ --version ] <number of loops>
引数
-help
-V | --version
<number of loops>
説明
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
ループの回数。
このコマンドは、メッセージが mpd リングを一週するのにかかる時間をテストします。
mpdlistjobs
構文
mpdlistjobs [ -h] [ -V ] [-u <username> ] [ -a <jobalias> ] [ -j <jobid> ]
または
mpdlistjobs [ --help] [ --version ] [ --user=<username> ] \
[ --alias=<jobalias> ] [ --jobid=<jobid> ]
引数
-h | --help
-V | --version
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
70
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-u <username>|
--user=<username>
特定のユーザーのジョブをリストします。
-a <jobalias> |
-- alias=<jobalias>
<jobalias> で指定された特定のジョブの情報をリストします。
-j <jobid> |
--jobid=<jobid>
<jobid> で指定された特定のジョブの情報をリストします。
説明
MPI ジョブを実行する実行中のプロセスをリストするには、このコマンドを使用します。現在のマシン上のす
べてのジョブがデフォルトで表示されます。
mpdsigjob
アプリケーションを実行するプロセスへシグナルを送ります。
構文
mpdsigjob [ --help] [ -V ] [ --version ] <sigtype> \
[-j <jobid> | -a <jobalias> ] [-s | -g ]
引数
-help
-V | --version
<sigtype>
-a <jobalias>
-j <jobid>
-s
-g
説明
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
送信するシグナルのタイプを指定します。有効なオプションは -j も
しくは -a です。
<jobalias> で指定されたジョブへシグナルを送信します。
<jobid> で指定されたジョブへシグナルを送信します。
特定のユーザーのプロセスへシグナルを送信します。
特定のグループのプロセスへシグナルを送信します。これは、デフォ
ルトの動作です。
ジョブを実行するプロセスへシグナルを送信するには、このコマンドを使用します。必要なシグナルは最初の
引数です。1 つまたは 2 つのオプション (-j または -a) を指定します。
mpdkilljob
ジョブを強制終了します。
構文
mpdkilljob [ --help ] [ -V ] [ --version ] [ <jobnum> ] [ -a <jobalias> ]
71
コマンド・リファレンス
引数
-help
-V | --version
<jobnum>
-a <jobalias>
説明
ヘルプメッセージを表示します。
インテル® MPI ライブラリーのバージョン情報を表示します。
<jobnum> で指定されるジョブを Kill します。
<jobalias> で指定されるジョブを Kill します。
<jobnum> または <jobalias> で指定されたジョブを kill するには、このコマンドを使用します。
mpdlistjobs コマンドから <jobnum> と <jobalias> を取得します。<jobid> フィールドは、次の形式で
す: <jobnum>@<mpdid>。
mpdhelp
MPD コマンドに関する簡単なヘルプを表示します。
構文
mpdhelp [ -V ] [ --version ]
引数
-V | --version
説明
インテル® MPI ライブラリーのバージョン情報を表示します。
MPD コマンドに関する簡単なヘルプ・メッセージを表示するには、このコマンドを使用します。
2.6.1. ジョブ開始コマンド
mpiexec
構文
mpiexec <g-options> <l-options> <executable>
または
mpiexec <g-options> <l-options> <executable1> : \
<l-options> <executable2>
または
mpiexec.smpd -configfile <file>
引数
<g-options>
<l-options>
<executable>
<file>
すべての MPI プロセスに適用するグローバルオプション。
単一の引数セットに適用するローカルオプション。
./a.out または path/実行形式ファイル名。
コマンドライン・オプションを持つファイル。
72
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
最初のコマンドラインの構文を使用して、単一の引数セットで <executable> のすべての MPI プロセスを開
始できます。例えば、次のコマンドは指定した <# of processes> の a.out を実行します。
$ mpiexec -n <# of processes> ./a.out
2 番目のコマンドラインの構文は、複数の MPI プログラムを開始したり、同じ MPI プログラムを異なる引数
セットで開始できます。例えば、次のコマンドは指定された実行形式ファイルを異なるホスト上で実行します。
$ mpiexec -n 2 -host host1 ./a.out : \
-n 2 -host host2 ./b.out
3 番目のコマンドライン構文では、コマンドラインを指定された <file> から読み込みます。単一の引数セッ
トを持つコマンドの場合、コマンド全体は <file> 内の単一行に指定される必要があります。
複数の引数セットを持つコマンドの場合、各コマンドはそれぞれ <file> 内の単一行に指定される必要があり
ます。グローバルオプションは、常に <file> の先頭行になければいけません。
mpiexec が成功するには、事前に MPD デーモンが起動されている必要があります。
注意
クラスターのすべてのノード上で PATH 環境変数に「.」が設定されていない場合、a.out の代わり
に ./a.out を指定してください。
拡張デバイス制御オプション
特定のファブリックを選択するため、この環境変数を設定します。
ファブリックの実際の組み合わせは、ノードごとに開始されたプロセス数によって異なります。
単一のノード上ですべてのプロセスが開始されると、インテル® MPI ライブラリーはオプションに関係なく shm
ノード内通信を使用します。
開始されたプロセス数が利用可能なノード数以下の場合、ライブラリーは、ノード間通信にファブリック・リ
ストから利用可能な最初のファブリックを選択します。
例えば、ライブラリーは、ノード内通信に shm を使用し、ノード間通信にファブリック・リストの最初の利用
可能なファブリックを使用します。詳細は、「I_MPI_FABRICS」と「I_MPI_FABRICS_LIST」をご覧ください。
shm ファブリックは、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、
インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
-rdma
ノード間通信に RDMA ネットワーク・ファブリックを選択します。アプリケーションは、最初に dapl もしく
は ofa リストから利用可能な RDMA ネットワーク・ファブリックの使用を試みます。利用できない場合、tcp
または tmi リストのほかのファブリックが使用されます。このオプションは、-genv I_MPI_FABRICS_LIST
dapl,ofa,tcp,tmi -genv I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-RDMA
ノード間通信に RDMA ネットワーク・ファブリックを選択します。アプリケーションは、最初に dapl もしく
は ofa リストから利用可能な RDMA ネットワーク・ファブリックの使用を試みます。指定されたファブリック
が存在しない場合、アプリケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST
dapl,ofa -genv I_MPI_FALLBACK 1 オプションを指定するのと等価です。
73
コマンド・リファレンス
-dapl
ノード間通信に DAPL ネットワーク・ファブリックを選択します。アプリケーションは、DAPL ネットワーク・
ファブリックの使用を試みます。利用できない場合、tcp、tmi または ofa リストのほかのファブリックが使
用されます。このオプションは、-genv I_MPI_FABRICS_LIST dapl,ofa -genv I_MPI_FALLBACK 1
オプションを指定するのと等価です。
-DAPL
ノード間通信に DAPL ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、
アプリケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST dapl -genv
I_MPI_FALLBACK 0 オプションを指定するのと等価です。
-ib
ノード間通信に OFA ネットワーク・ファブリックを選択します。アプリケーションは、OFA ネットワーク・
ファブリックの使用を試みます。利用できない場合、dapl、tcp または tmi リストのほかのファブリックが
使用されます。このオプションは、-genv I_MPI_FABRICS_LIST ofa,dapl,tcp,tmi -genv
I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-IB
ノード間通信に OFA ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、
アプリケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST ofa -genv
I_MPI_FALLBACK 0 オプションを指定するのと等価です。
-tmi
ノード間通信に TMI ネットワーク・ファブリックを選択します。アプリケーションは、TMI ネットワーク・
ファブリックの使用を試みます。利用できない場合、dapl、tcp または ofa リストのほかのファブリックが
使用されます。このオプションは、-genv I_MPI_FABRICS_LIST tmi,dapl,tcp,ofa -genv
I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-TMI
ノード間通信に TMI ネットワーク・ファブリックを選択します。指定されたファブリックが存在しない場合、
アプリケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST tmi -genv
I_MPI_FALLBACK 0 オプションを指定するのと等価です。
-mx
ノード間通信に Myrinet MX* ネットワーク・ファブリックを選択します。アプリケーションは、Myrinet MX*
ネットワーク・ファブリックの使用を試みます。利用できない場合、dapl、tcp または ofa リストのほかの
ファブリックが使用されます。このオプションは、-genv I_MPI_FABRICS_LIST tmi,dapl,tcp,ofa
-genv I_MPI_TMI_PROVIDER mx -genv I_MPI_DAPL_PROVIDER mx -genv I_MPI_FALLBACK 1 オプ
ションを指定するのと等価です。
-MX
ノード間通信に Myrinet MX* ネットワーク・ファブリックを選択します。指定されたファブリックが存在しな
い場合、アプリケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST tmi -genv
I_MPI_TMI_PROVIDER mx - genv I_MPI_FALLBACK 0 オプションを指定するのと等価です。
74
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-psm
ノード間通信にインテル® True Scale ネットワーク・ファブリックを選択します。アプリケーションは、インテル®
True Scale ネットワーク・ファブリックの使用を試みます。利用できない場合、dapl、tcp または ofa リストの
ほかのファブリックが使用されます。このオプションは、-genv I_MPI_FABRICS_LIST tmi,dapl,tcp,ofa
-genv I_MPI_TMI_PROVIDER psm -genv I_MPI_FALLBACK 1 オプションを指定するのと等価です。
-PSM
ノード間通信にインテル® True Scale ネットワーク・ファブリックを選択します。指定されたファブリックが
存在しない場合、アプリケーションは失敗します。このオプションは、-genv I_MPI_FABRICS_LIST tmi
-genv I_MPI_TMI_PROVIDER psm -genv I_MPI_FALLBACK 0 オプションを指定するのと等価です。
グローバルオプション
-version または -V
インテル® MPI ライブラリーのバージョン情報を表示します。
-h、-help または --help
mpiexec のヘルプ・メッセージを表示します。
-tune [<arg >]
ここで以下を指定します。
<arg>= {<dir_name>, <configuration_file>}
mpitune ユーティリティーで収集されたデータを使用して、インテル® MPI ライブラリーのパフォーマンスを
最適化するには、このオプションを使用します。
<arg> が指定されていない場合、指定された設定向けに最適なチューニング・オプションが適用されます。設
定ファイルのデフォルトの位置は、<installdir>/<arch>/etc ディレクトリーです。次のように指定する
ことで、このデフォルトの位置を変更できます: <arg>=<dir_name>。<arg>=<configuration_file> を
設定した場合に限り、提供される設定が適用されます。
詳細は、「自動チューニング・ユーティリティー」をご覧ください。
注意
<arg> が設定ファイルの位置を指していない場合、I_MPI_FABRICS 環境変数を設定します。
I_MPI_FABRICS が設定されていない場合、パフォーマンス・データは提供されず警告が表示されます。
-nolocal
mpiexec が起動されたホスト上で <executable> の実行を避けるには、このオプションを使用します。MPI
ジョブを開始する専用のマスターノードと、実際の MPI プロセスと実行する専用の計算ノードを配備するクラ
スター上でこのオプションは有用です。
-perhost <# of processes>
グループ内のすべてのホスト上で、ラウンドロビン・スケジューリングにより連続した数の MPI プロセスを配
置します。開始時の総プロセス数は、-n オプションで制御されます。
75
コマンド・リファレンス
mpiexec コマンドは、プロセスのランクがクラスターのノードにどのように割り当てられるかを制御します。
デフォルトで、mpiexec はノードへラウンドロビン方式でランクを配置し、すべてのプロセッサーコア上で連
続した MPI プロセスを実行します。
このデフォルトの動作を変更するには、-perhost オプションを使用してホストごとのプロセス数を設定し、
-n オプションで総プロセス数を設定します。詳細は、「ローカルオプション」をご覧ください。-perhost オ
プションで指定された最初の <#of processes> は、最初のホストで実行され、次の <#of processes> は
2 番目のホストで実行されます。
詳細は、「I_MPI_PERHOST」環境変数をご覧ください。
-rr
ラウンドロビン・スケジューリングにより、異なるホスト上で連続した MPI プロセスを配置します。このオプ
ションは、-perhost 1 と等価です。
-grr <# of processes>
グループ内のすべてのホスト上で、ラウンドロビン・スケジューリングにより連続した数の MPI プロセスを配
置します。このオプションは、-perhost <#of processes> と等価です。
-ppn <# of processes>
グループ内のすべてのホスト上で、ラウンドロビン・スケジューリングにより連続した数の MPI プロセスを配
置します。このオプションは、-perhost <#of processes> と等価です。
-machinefile <machine file>
このオプションは、<machine file> を介してプロセスの配置を制御する際に使用します。開始時の総プロセ
ス数は、-n オプションで制御されます。
マシンファイルは、完全に修飾された、もしくは短いホスト名のリストを 1 行に 1 つ持ちます。空白行と先頭
文字が ‘#’ の行は無視されます。
ホスト名を繰り返すことで、ホスト上に追加のプロセスを配置します。同じホスト名の重複を避けるため、次
の形式で記述できます: <host name>:<number of processes>。以下に例を示します。
host1
host1
host2
host2
host3
上記のマシンファイルは次と等価です。
host1:2
host2:2
host3
また、各ノードで使用するネットワーク・インターフェイスを指定することもできます。
<host name>:<number of processes>[ifhn=<interface_host_name>]
注意
-machinefile、-ppn、-rr、および –perhost オプションは、プロセスの分散を目的とします。同時に使用
した場合、-machinefile が優先されます。
76
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-configfile <filename>
このオプションは、コマンドライン・オプションを含むファイルを <filename> に指定します。空白行と先頭
文字が ‘#’ の行は無視されます。例えば、実行形式 a.out と b.out を shm:dapl ファブリックを使用して
host1 と host2 で実行するには、次のコマンドラインを含む設定ファイルを作成します。
-host host1 -env I_MPI_DEBUG 2 -env I_MPI_FABRICS shm:dapl -n 2 ./a.out
-host host2 -env I_MPI_DEBUG 2 -env I_MPI_FABRICS shm:dapl -n 2 ./b.out
上記の設定ファイルを使用して MPI アプリケーションを起動するには、次のコマンドを使用します。
$ mpiexec -configfile <filename>
注意
このオプションは、mpiexec コマンドラインの解析を中断させてしまうため、単独で使用します。
-g<l-option>
ローカルオプション <l-option> をグローバルに適用するには、このオプションを使用します。すべてのロー
カルオプションについては、「ローカルオプション」をご覧ください。アプリケーション起動時のデフォルト
値は、-genvuser オプションです。
注意
ローカルオプションは、グローバルオプションよりも優先順位が上です。
•
•
•
-genv オプションは最も優先順位が高い
-genvlist と -genvexcl は -genv よりも優先順位が低い
そして -genvnone、-genvuser、および -genvall は、最も優先順位が低い
-genv <ENVVAR> <value>
すべての MPI プロセス向けに、<ENVVAR> に指定された <value> を設定します。
-genvuser
次の環境変数を除き、すべてのユーザー環境変数の値をすべての MPI プロセスに渡します: $HOSTNAME、
$HOST、$HOSTTYPE、$MACHTYPE、$OSTYPE。これは、デフォルトの設定です。
-genvall
すべての環境変数をすべての MPI プロセスに伝搬するのを有効にします。
-genvnone
任意の環境変数を任意の MPI プロセスに伝搬するのを抑制します。
(SDK のみ) -trace [<profiling_library>] または -t [<profiling_library>]
指定された <profiling_library> を使用して MPI アプリケーションのプロファイルを行うには、このオプ
ションを指定します。
<profiling_library> が省略された場合、デフォルトのプロファイル・ライブラリーは libVT.so です。
77
コマンド・リファレンス
デフォルトのプロファイル・ライブラリーを変更するには、I_MPI_JOB_TRACE_LIBS 環境変数を設定します。
注意
実行前にアプリケーションをプロファイル・ライブラリーとリンクする必要はありません。
(SDK のみ) -check_mpi [<checking_library>]
指定された <checking_library> を使用して MPI アプリケーションをチェックするには、このオプションを
指定します。
<checking_library> が省略された場合、デフォルトのチェックライブラリーは libVTmc.so です。
デフォルトのチェック・ライブラリーを変更するには、I_MPI_JOB_CHECK_LIBS 環境変数を設定します。
注意
実行前にアプリケーションをチェックライブラリーとリンクする必要はありません。
-tv
TotalView* デバッガー環境下で <executable> を実行するには、このオプションを使用します。次に例を示
します。
$ mpiexec -tv -n <# of processes> <executable>
TotalView* 実行形式ファイルを選択する方法は、「環境変数」をご覧ください。
注意
TotalView* がデフォルトで rsh を使用するため、環境変数 TVDSVRLAUNCHCMD=ssh に設定されていることを
確認してください。
注意
TotalView* デバッガーは、MPI プログラムのメッセージキューの状態を表示できます。この機能を有効にする
には、次の手順に従ってください。
1.
<executable> を –tv オプションで実行します。
$ mpiexec -tv -n <# of processes> <executable>
2.
Python* ジョブの停止に関する問い合わせには、「YES」を選択します。
MPI ライブラリーの内部状態をテキストで表示するには、[Tools] > [Message Queue] コマンドを選択します。
[Process Window Tools] > [Message Queue Graph] コマンドを選択すると、TotalView* は現在のメッセージ
キューの状態をグラフ形式でウィンドウに表示します。詳細は、「TOTALVIEW」をご覧ください。
-tva <jobid>
TotalView* デバッガーに実行中の <jobid> をアタッチするには、このオプションを使用します。次に例を示
します。
$ mpiexec -tva <jobid>
78
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-tvsu
TotalView* デバッガー環境下で <executable> を実行するには、このオプションを使用します。次に例を示
します。
$ mpiexec -tvsu -n<# of processes> <executable>
注意
実行中のインテル® MPI ジョブをデバッグするには、mpiexec スクリプトを実行する Python* のインスタンス
に TotalView* をアタッチします。
-gdb
GNU* デバッガー環境下で <executable> を実行するには、このオプションを使用します。次に例を示します。
$ mpiexec -gdb -n <# of processes> <executable>
-gdba <jobid>
GNU* デバッガーに実行中の <jobid> をアタッチするには、このオプションを使用します。次に例を示します。
$ mpiexec -gdba <jobid>
-a <alias>
ジョブに <alias> を割り当てます。
-ordered-output
MPI プロセスから出力されるデータの混在を避けるには、このオプションを使用します。このオプションは、
標準出力と標準エラー出力に影響します。
注意
このオプションを適切に動作させるには、各プロセスが出力する最後の行は \n 文字で終了する必要があります。
そうしないと、アプリケーションが応答を停止することがあります。
-m
出力情報の行をマージするにはこのオプションを使用します。
-l
このオプションは、標準出力に書き込まれたすべての行の先頭に、MPI プロセスのランクを挿入します。
-s <spec>
指定された MPI プロセスへの標準入力をリダイレクトします。
引数
<spec>
all
MPI プロセスのランクを定義します。
すべてのプロセスを使用します。
79
コマンド・リファレンス
<l>,<m>,<n>
<k>,<l>-<m>,<n>
使用するプロセスのリストを指定します。この場合 <l>、<m> およ
び <n> のみを使用します。デフォルト値は 0 です。
使用するプロセスの範囲を指定します。この場合 <k>、<l> から
<m>、および <n> を使用します。
-noconf
「設定ファイル」に記載される mpiexec.hydra 設定ファイルの処理を無効にします。
-ifhn <interface/hostname>
ローカル MPD デーモンとの通信のネットワーク・インターフェイスを指定するには、このオプションを使用し
ます。ここで、<interface/hostname> は、代替ネットワーク・インターフェイスに関連付けられた IP アド
レスもしくはホスト名です。
-ecfn <filename>
このオプションは、<filename> に XML exit コードのリストを出力します。
ローカルオプション
-n <# of processes> または -np <# of processes>
現在の引数セットで実行する MPI プロセス数を指定します。
-env <ENVVAR> <value>
現在の引数セットですべての MPI プロセスに、指定された <value> の <ENVVAR> を設定します。
-envuser
次の環境変数を除き、すべてのユーザー環境変数の値をすべての MPI プロセスに渡します: $HOSTNAME、
$HOST、$HOSTTYPE、$MACHTYPE、$OSTYPE。これは、デフォルトの設定です。
-envall
現在の引数セットですべての環境変数を伝搬します。
-envnone
現在の引数セットで MPI プロセスに任意の環境変数の伝搬を抑制します。
-envlist <list of env var names>
引数リストと現在の値を渡します。<list of env var names> は、MPI プロセスに送るカンマで区切られ
た環境変数のリストです。このオプションがコマンドラインで複数回使用された場合、引数で指定されるすべ
ての変数は 1 つのリストにまとめられます。
-envexcl <list of env var names>
現在の引数セットで MPI プロセスに指定された環境変数の伝搬を抑制します。
80
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-host <nodename>
現在の引数セットで MPI プロセスを実行する特定の <nodename> を指定します。例えば、次のコマンドライン
は、host1 上でのみ実行形式 a.out を実行します。
$ mpiexec -n 2 -host host1 ./a.out
-path <directory>
実行する <executable> へのパスを指定します。
-wdir <directory>
現在の引数セットで実行する <executable> が使用するワーキング・ディレクトリーを指定します。
-umask <umask>
リモートプロセス向け umask <umask> コマンドを実行するには、このオプションを使用します。
設定ファイル
mpiexec 設定ファイルでは、すべての mpiexec コマンドに適用するデフォルトのオプションを指定します。
これらのファイルのいずれかが存在する場合、その内容は次の順番で mpiexec コマンドラインのオプションの
先頭に追加されます。
システム全体 <installdir>/etc/mpiexec.conf 設定ファイルのデフォルトの位置は、
<installdir>/<arch>/etc ディレクトリーです。
ユーザー固有: $HOME/.mpiexec.conf
セッション固有: $PWD/mpiexec.conf
環境変数を定義するかコマンドライン・オプションを指定してこれらのファイルを上書きできます。mpiexec
–noconf オプションで、これらの設定ファイルの使用をスキップできます。
これらのファイルを作成または変更できます。それらは、mpiexec コマンドラインのオプションを含みます。
空白行と先頭文字が ‘#’ の行は無視されます。例えば、デフォルトのファブリックを指定するには、
mpiexec.con ファイルに次の行を追加します。
-genv I_MPI_FABRICS <fabric>
環境変数
I_MPI_DEBUG
MPI プログラムが実行を開始するとデバッグ情報を出力します。
構文
I_MPI_DEBUG=<level>[,<flags>]
引数
<level>
0
1
デバッグ情報のレベルを指定します。
デバッグ情報を出力しません。これは、デフォルト値です。
詳細なエラー診断を出力します。
81
コマンド・リファレンス
2
3
4
5
6
どの I_MPI_FABRICS とインテル® MPI ライブラリーの設定が使用さ
れているかを確認します。
有効な MPI ランク、プロセス ID およびノード割り当てテーブルを出
力します。
プロセスのピニング情報を出力します。
インテル® MPI ライブラリー固有の環境変数の値を出力します。
集団操作アルゴリズムの設定を出力します。
> 6
追加のデバッグ情報を出力します。
<flags>
カンマで区切られたデバッグフラグのリスト。
pid
tid
time
datetime
host
level
scope
line
file
nofunc
norank
flock
nobuf
説明
各デバッグメッセージにプロセス ID を表示します。
マルチスレッド・ライブラリー向けのデバッグメッセージにスレッド
ID を表示します。
各デバッグメッセージに時間を表示します。
各デバッグメッセージに日付と時間を表示します。
各デバッグメッセージにホスト名を表示します。
各デバッグメッセージにレベル表示します。
各デバッグメッセージに範囲を表示します。
各デバッグメッセージに行番号を表示します。
各デバッグメッセージにソースファイル名を表示します。
ルーチン名を表示しません。
ランクを表示しません。
異なるプロセスやスレッドからのデバッグ出力を同期します。
デバッグ出力にバッファード I/O を使用しません。
デバッグ情報の出力を制御するには、この環境変数を設定します。
注意
すべてのランクに同じ <level> 値を設定します。
I_MPI_DEBUG_OUTPUT 環境変数にデバッグ情報の出力ファイル名を指定できます。
82
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
出力は次の形式です。
[<identifier>] <message>
ここで、
•
•
<identifier> は、メッセージを生成する MPI プロセスを識別します。<level> が符号なしの番号
であれば、<identifier> は MPI プロセスのランクです。'+’ 記号を <level> 番号の前に追加すると、
<identifier> は rank#pid@hostname タプルを含みます。ここで、rank は MPI プロセスのラン
クで、pid は UNIX* プロセスの id で、hostname はプロセス起動時に定義されたホスト名です。
<message> は、デバッグ出力を含みます。
次に例を示します。
$ mpiexec -n 1 -env I_MPI_DEBUG 2 ./a.out
出力は次のようになります。
[0] MPI startup(): shared memory data transfer mode
コマンドは次のようになります。
$ mpiexec -n 1 -env I_MPI_DEBUG +2 ./a.out
または
$ mpiexec -n 1 -env I_MPI_DEBUG 2,pid,host ./a.out
出力は次のようになります。
[0#1986@mpicluster001] MPI startup(): shared memory data transfer mode
注意
mpicc -g オプションでコンパイルすると、かなりの量のデバッグ情報が出力されます。
I_MPI_DEBUG_OUTPUT
デバッグ情報の出力先のファイル名を設定します。
構文
I_MPI_DEBUG_OUTPUT=<引数>
引数
<arg>
stdout
stderr
<file_name>
説明
文字列。
標準出力に表示します (デフォルト値)。
標準エラー出力に表示します。
デバッグ情報を出力するファイル名を指定します (最大 256 文字)。
アプリケーションが生成する出力から、デバッグ情報を分離したい場合にこの環境変数を設定します。%r、%p
または %h フォーマットを使用して、ランク、プロセス ID または、ホスト名をファイル名に追加できます。
I_MPI_PERHOST
mpiexec コマンドの -perhost オプションのデフォルトを設定します。
83
コマンド・リファレンス
構文
I_MPI_PERHOST=<value>
引数
<value>
<n> > 0
all
allcores
説明
デフォルトのプロセス配置を定義します。
ノードごとに <n> プロセス。
ノード上のすべての論理 CPU。
ノード上のすべてのコア (物理 CPU)
この環境変数を設定して、-perhost オプションに適用されるデフォルトの値を定義します。コマンドライン
で -perhost オプションが指定されると、I_MPI_PERHOST 環境変数は無視されます。この環境変数が定義さ
れていない場合、-perhost オプションは I_MPI_PERHOST 環境変数に値を反映します。
注意
I_MPI_PERHOST が定義され、mpiexec -host オプションが指定されると、I_MPI_PERHOST は無視されま
す。
I_MPI_PRINT_VERSION
ライブラリーのバージョンを表示します。
構文
I_MPI_PRINT_VERSION=<引数>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
ライブラリーのバージョンを表示します。
何もしません。これは、デフォルト値です。
MPI アプリケーションが実行を開始するときに、インテル® MPI ライブラリーのバージョン情報の表示を
enable (有効)/disable (無効) にするには環境変数を設定します。
(SDK のみ) I_MPI_JOB_TRACE_LIBS (MPIEXEC_TRACE_LIBS)
–trace オプションを介して事前ロードするライブラリーを選択します。
構文
I_MPI_JOB_TRACE_LIBS=<arg>
廃止された構文
MPIEXEC_TRACE_LIBS=<arg>
84
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<arg>
<list>
説明
文字列パラメーター。
スペース (空白で) 区切られた、事前ロードするライブラリー。デフォ
ルト値は vt です。
–trace オプションを介して事前ロードする代替ライブラリーを選択するには、この環境変数を設定します。
(SDK のみ) I_MPI_JOB_CHECK_LIBS
-check_mpi オプションを介して事前ロードするライブラリーを選択します。
構文
I_MPI_JOB_CHECK_LIBS=<arg>
引数
<arg>
<list>
説明
文字列パラメーター。
スペース (空白で) 区切られた、事前ロードするライブラリー。デ
フォルト値は vtmc です。
-check_mpi オプションを介して事前ロードする代替ライブラリーを選択するには、この環境変数を設定しま
す。
I_MPI_JOB_STARTUP_TIMEOUT
mpiexec のジョブ開始のタイムアウト時間を設定します。
構文
I_MPI_JOB_STARTUP_TIMEOUT=<timeout>
引数
<timeout>
<n> >= 0
説明
mpiexec のタイムアウト時間を秒単位で指定します。
デフォルトのタイムアウト値は、20 秒です。
この環境変数は、mpiexec がジョブの起動後 <timeout> 秒でジョブを強制終了する時間を設定します。
<timeout> 値は、ゼロよりも大きくなければいけません。そうでない場合、環境変数の設定は無視され、警告
が発せられます。ノード数の多い大規模なクラスター上でジョブの起動時間がデフォルトを越えるような場合、
この環境変数を設定します。
注意
mpiexec コマンドを実行する前に、シェル環境で I_MPI_JOB_STARTUP_TIMEOUT 環境変数を設定します。
<timeout> 値を設定するのに、-genv や -env オプションを使ってはいけません。これらのオプションは、
MPI プロセス環境に環境変数の値を渡すときにのみ使用します。
85
コマンド・リファレンス
I_MPI_JOB_TIMEOUT (MPIEXEC_TIMEOUT)
mpiexec のタイムアウト時間を設定します。
構文
I_MPI_JOB_TIMEOUT=<timeout>
廃止された構文
MPIEXEC_TIMEOUT=<timeout>
引数
<timeout>
<n> >= 0
説明
mpiexec のタイムアウト時間を秒単位で指定します
デフォルト値は 0 で、タイムアウトしません。
この環境変数は、mpiexec がジョブの起動後 <timeout> 秒でジョブを強制終了する時間を設定します。
<timeout> 値は、ゼロよりも大きくなければいけません。不正な値は無視されます。
注意
mpiexec コマンドを実行する前に、シェル環境で I_MPI_JOB_TIMEOUT 環境変数を設定します。<timeout>
値を設定するのに、-genv や -env オプションを使ってはいけません。これらのオプションは、MPI プロセス
環境に環境変数の値を渡すときにのみ使用します。
I_MPI_JOB_TIMEOUT_SIGNAL (MPIEXEC_TIMEOUT_SIGNAL)
タイムアウトでジョブが終了した際に送信するシグナルを定義します。
構文
I_MPI_JOB_TIMEOUT_SIGNAL=<number>
廃止された構文
MPIEXEC_TIMEOUT_SIGNAL=<number>
引数
<number>
<n> > 0
説明
シグナル番号を定義します。
デフォルト値は 9 (SIGKILL) です。
環境変数 I_MPI_JOB_TIMEOUT で指定されるタイムアウト時間に応じて、タスクの終了に使用するシグナルを
定義します。システムがサポートしないシグナル番号を設定した場合、mpiexec は警告メッセージを表示し、
デフォルトのシグナル番号 9 (SIGKILL) でタスクを終了します。
I_MPI_JOB_ABORT_SIGNAL
ジョブが予期せずに終了した場合に、すべてのプロセスに送信するシグナルを定義します。
構文
I_MPI_JOB_ABORT_SIGNAL=<number>
86
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<number>
<n> > 0
説明
シグナル番号を定義します。
デフォルト値は 9 (SIGKILL) です。
この環境変数を設定して、タスクを強制終了するシグナルを定義します。サポートされないシグナル番号を設
定した場合、mpiexec は警告メッセージを表示し、デフォルトのシグナル番号 9 (SIGKILL) でタスクを終了し
ます。
I_MPI_JOB_SIGNAL_PROPAGATION (MPIEXEC_SIGNAL_PROPAGATION)
シグナルの伝搬を制御します。
構文
I_MPI_JOB_SIGNAL_PROPAGATION=<arg>
廃止された構文
MPIEXEC_SIGNAL_PROPAGATION=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
伝搬をオンにします。
伝搬をオフにします。これは、デフォルト値です。
この環境変数を設定して、MPD デーモンが受信するシグナル (SIGINT、SIGALRM、SIGTERM) の伝搬を制御し
ます。シグナルの伝搬を有効にすると、受信したシグナルはすべての MPI ジョブを実行するプロセスへ送信さ
れます。シグナルの伝搬を無効にすると、MPI ジョブを実行するすべてのプロセスは、デフォルトのシグナル
9 (SIGKILL) で停止されます。
I_MPI_OUTPUT_CHUNK_SIZE
stdout/stderr 出力バッファーのサイズを設定します。
構文
I_MPI_OUTPUT_CHUNK_SIZE=<size>
引数
<size>
<n> > 0
説明
K バイト単位で出力チャンクのサイズを定義します。
デフォルトのチャンクサイズは、1KB です。
プロセスからの標準出力と標準エラー出力を受け取るためのバッファーサイズを大きくするには、この環境変
数を設定します。<size> がゼロ以下の場合、環境変数の値は無視され警告が発せられます。
異なるプロセスから大量の出力を行うアプリケーションでは、この設定を使用します。mpiexec に
-ordered-output オプションを追加すると、文字化けを防止するのに役立ちます。
87
コマンド・リファレンス
注意
mpiexec コマンドを実行する前に、シェル環境で I_MPI_OUTPUT_CHUNK_SIZE 環境変数を設定します。
<size> 値を設定するのに、-genv や -env オプションを使ってはいけません。これらのオプションは、MPI
プロセス環境に環境変数の値を渡すときにのみ使用します。
I_MPI_PMI_EXTENSIONS
インテル® MPI ライブラリーのプロセス管理インターフェイス (PMI) 拡張の使用を on/off にします。
構文
I_MPI_PMI_EXTENSIONS=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
PMI 拡張を有効にします。
PMI 拡張を無効にします。
インテル® MPI ライブラリーは、プロセス管理が PMI 拡張をサポートするかどうかを自動認識します。サポー
トされている場合、PMI 拡張によりタスクの起動時間が短縮されます。プロセス管理がこの拡張をサポートし
ていない場合、環境変数 I_MPI_PMI_EXTENSIONS を disable に設定します。
I_MPI_PMI_LIBRARY
サードパーティーによる実装の PMI ライブラリーの名称を指定します。
構文
I_MPI_PMI_LIBRARY=<name>
引数
<name>
説明
サードパーティ PMI ライブラリーへのフルパス名。
環境変数 I_MPI_PMI_LIBRARY に、サードパーティー PMI ライブラリー名を設定します。この環境変数には、
フルパスでライブラリー名を指定してください。
I_MPI_JOB_FAST_STARTUP (I_MPI_PMI_FAST_STARTUP)
インテル® MPI ライブラリーの高速プロセス起動アルゴリズムを on/off にします。
構文
I_MPI_JOB_FAST_STARTUP=<arg>
廃止された構文
I_MPI_PMI_FAST_STARTUP=<arg>
88
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
高速スタートアップのアルゴリズムを有効にします。これは、デフォ
ルト値です。
高速スタートアップのアルゴリズムを無効にします。
新しいアルゴリズムは、アプリケーションの起動時間を大幅に短縮します。一部の DAPL プロバイダーは、大
量のプロセスの起動時 (512 プロセスを超える場合) に過負荷状態になります。この問題を避けるため、
I_MPI_JOB_FAST_STARTUP 環境変数を disable に設定してこのアルゴリズムを無効にします。
TOTALVIEW
使用する特定の TotalView* 実行ファイルを選択します。
構文
TOTALVIEW=<path>
引数
<path>
説明
デフォルトの TotalView* に代わり、TotalView 実行ファイルへのパ
ス/名前を指定します。
特定の TotalView* 実行ファイルを選択するため、この環境変数を設定します。
I_MPI_PLATFORM
最適化するプラットフォームを選択します。
構文
I_MPI_PLATFORM=<platform>
引数
<platform>
auto[:min]
auto:max
auto:most
uniform
none
最適化するプラットフォーム (文字列)。
すべてのノードで最も古いインテル® アーキテクチャー・プロセッ
サー向けの最適化を行います。これは、デフォルト値です。
すべてのノードで最も新しいインテル® アーキテクチャー・プロセッ
サー向けの最適化を行います。
すべてのノードで最も多いインテル® アーキテクチャー・プロセッ
サー向けの最適化を行います。同数の場合は、新しいプラットフォー
ムが選択されます。
ローカルに最適化。選択した結果とは異なりノード間となる場合、動
作は予測できません。
特定の最適化を行いません。
89
コマンド・リファレンス
htn | generic
nhm
wsm
snb
ivb
knc
hsw
knl
説明
インテル® Xeon® プロセッサー 5400 番台とその他のインテル® アー
キテクチャー (開発コード名 Harpertown) 向けに最適化。
インテル® Xeon® プロセッサー 5500/6500/7500 番台とその他のイ
ンテル® アーキテクチャー (開発コード名 Nehalem) 向けに最適化。
インテル® Xeon® プロセッサー 5600/3600 番台とその他のインテル®
アーキテクチャー (開発コード名 Westmere) 向けに最適化。
インテル® Xeon® プロセッサー E3/E5/E7 ファミリーとその他のイン
テル® アーキテクチャー (開発コード名 Sandy Bridge) 向けに最適化。
インテル® Xeon® プロセッサー E3/E5/E7 V2 製品ファミリーとその他
のインテル® アーキテクチャー (開発コード名 Ivy Bridge) 向けに最適
化。
インテル® Xeon Phi™ コプロセッサー (開発コード名 Knights Corner)
向けに最適化。インテル® Xeon Phi™ コプロセッサーがクラスター上
に存在する場合、この値がデフォルトになります。
インテル® Xeon® プロセッサーE3/E5/E7 V3 製品ファミリーとその他
のインテル® アーキテクチャー (開発コード名 Haswell) 向けに最適
化。
インテル® Xeon Phi™ プロセッサー x200 製品ファミリー (コード名:
Knights Landing) 向けに最適化。
事前定義されたプラットフォーム設定を使用するには、この環境変数を設定します。この環境変数はインテル
製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル製マイクロプロセッ
サーにおいてより多くの最適化が行われる場合があります。
注意
auto:min、auto:max および auto:most を設定すると、MPI ジョブ開始時の時間が長くなることがあります。
I_MPI_PLATFORM_CHECK
類似性チェックの最適化を on/off にします。
構文
I_MPI_PLATFORM_CHECK=<引数>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
プラットフォームの類似性チェックの最適化を on にします。これ
は、デフォルト値です。
プラットフォームの類似性チェックの最適化を off にします。
90
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
すべての最適化プラットフォームの設定の類似性を確認する際に、この環境変数を設定します。すべてのラン
ク上の設定が同一でない場合、インテル® MPI ライブラリーはプログラムを強制終了します。この設定を
disable (無効) にすることで、MPI プログラムの起動時間を短縮できます。
I_MPI_THREAD_LEVEL_DEFAULT
MPI_Init() を初期化に使用する場合、マルチスレッド・ライブラリーの MPI スレッド環境を初期化するため
この環境変数を設定します。
構文
I_MPI_THREAD_LEVEL_DEFAULT=<threadlevel>
引数
<threadlevel>
SINGLE | single
FUNNELED | funneled
SERIALIZED |
serialized
MULTIPLE | multiple
説明
スレッドサポートのデフォルトレベルを定義します。
スレッドサポートのデフォルトとレベルを MPI_THREAD_SINGLE に
設定します。
スレッドサポートのデフォルトとレベルを
MPI_THREAD_FUNNELEDE に設定します。初期化に MPI_Init() を
使用する際のデフォルトです。
スレッドサポートのデフォルトとレベルを MPI_THREAD_SERIALIZED
に設定します。
スレッドサポートのデフォルトとレベルを MPI_THREAD_MULTIPLE
に設定します。
初期化のために MPI_Init() を使用している場合に、マルチスレッド・ライブラリーのスレッドサポートのデ
フォルトレベルを定義するため、I_MPI_THREAD_LEVEL_DEFAULT を設定します。
注意
I_MPI_THREAD_LEVEL_DEFAULT 環境変数は、MPICH_THREADLEVEL_DEFAULT 環境変数と等価です。
2.6.2. 設定ファイル
$HOME/.mpd.conf
このオプションの設定ファイルは、mpd デーモンのパスワードを含んでいます。mpd デーモンを起動する前に
作成してください。これにより、さまざまなインテル® MPI ライブラリーのユーザーからデーモンを制御できる
ようになります。
構文
このファイルは 1 行で次のいずれかの形式です。
secretword=<mpd password>
または
MPD_SECRETWORD=<mpd password>
91
コマンド・リファレンス
説明
任意の <mpd password> 文字列を使用して、さまざまなクラスターユーザーによる MPD デーモンへのアクセ
スを制御します。ここでは、Linux* のログインパスワードを使用しないでください。
$HOME/.mpd.conf ファイルをマウントされたネットワーク・ファイル・システムに配置するか、クラスター
のすべてのノード上で $HOME/.mpd.conf としてアクセスできるようにします。
mpdboot が root 権限を持たない <user> によって実行される場合、このファイルは対応するユーザー
<user> と <<user>’s group> の所有権を持っている必要があります。
アクセス権限は 600 (ユーザーの読み書き可能) に設定される必要があります。
注意
MPD_SECRETWORD は、secretword と同義です。
mpd.hosts
このファイルには、mpdboot コマンドが mpd デーモンを起動する際に使用するノード名のリストを記述しま
す。このファイルは、mpdboot コマンドを実際に起動するノード上で、mpdboot を実行するユーザーがアク
セス可能であることを確認してください。
構文
mpd.hosts ファイルの形式は、ノード名のリストを 1 行に 1 つ定義します。空白行と # に続く行は無視され
ます。
2.6.3. 環境変数
I_MPI_JOB_CONFIG_FILE (I_MPI_MPD_CONF)
mpd 設定ファイルのパス/名前を設定します。
構文
I_MPI_JOB_CONFIG_FILE=<path/name>
廃止された構文
I_MPI_MPD_CONF=<path/name>
引数
<path/name>
説明
MPD 設定ファイルへの絶対パス。
この環境変数には、デフォルトの ${HOME}/.mpd.conf に代わって、mpdboot スクリプトが使用するファイ
ルのフルパスを定義します。
I_MPI_JOB_CONTEXT (MPD_CON_EXT)
mpd コンソールファイルの一意な名前を設定します。これにより、同じユーザーアカウントで、複数の mpd リ
ングを実行することが可能になります。
構文
I_MPI_JOB_CONTEXT=<tag>
92
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
廃止された構文
MPD_CON_EXT=<tag>
引数
<tag>
一意な MPD 識別子。
説明
複数の mpd リングが共存できるよう、異なる固有値にこの環境変数を設定します。それぞれの MPD リングは、
異なる I_MPI_JOB_CONTEXT 値に関連付けられます。この環境変数が一度設定されると、1 つの MPD リング
を開始でき、その他の MPD リングの影響を受けずに動作します。特定の MPD リングで動作するよう、
I_MPI_JOB_CONTEXT に適切な値を設定します。複数のインテル® MPI ライブラリーのジョブを一度に起動す
る方法は、「簡素化されたジョブ起動コマンド」をご覧ください。
I_MPI_JOB_TAGGED_PORT_OUTPUT
タグ付きの mpd ポート出力を on/off にします。
構文
I_MPI_JOB_TAGGED_PORT_OUTPUT=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
タグの出力を on にします。これは、デフォルト値です。
タグの出力を off にします
出力形式のタグ付けは mpdbot ステージで動作し、起動時に ssh などのリモートシェルからの予期しない出力
を分かりやすくできます。mpdboot は、この環境変数を自動的に 1 に設定します。この機能を必要としない場
合、I_MPI_JOB_TAGGED_PORT_OUTPUT に disable を設定します。
I_MPI_MPD_CHECK_PYTHON
MPD リング開始時に Python* のバージョン・チェックを on/off します。
構文
I_MPI_MPD_CHECK_PYTHON=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
Python* バージョンの互換性をチェックします。
Python* バージョンの互換性をチェックしません。これは、デフォル
ト値です。
93
コマンド・リファレンス
説明
クラスターのノードにインストールされている Python* のバージョン互換性チェックを有効にするには、この
環境変数を設定します。これにより、MPD リングの起動時間が長くなります。互換性のないバージョンの
Python* がクラスターにインストールされている場合、MPD の動作は未定義です。
I_MPI_MPD_CHECK_PYTHON が、enable に設定され、互換性チェックに失敗すると、mpdboot は異常終了
して診断メッセージを出力します。MPD リングは開始されません。
I_MPI_MPD_RSH
mpd デーモンを起動するリモートシェルを設定します。
構文
I_MPI_MPD_RSH =<arg>
引数
<arg>
<remote shell>
説明
文字列パラメーター。
リモートシェルを使用します。
この環境変数を設定して、–rshmpdboot オプションに適用されるデフォルトの値を定義します。コマンドラ
インで -rsh オプションが指定されると、I_MPI_MPD_RSH 環境変数は無視されます。-rsh オプションが指定
されない場合、I_MPI_MPD_RSH 環境変数の値が想定されます。
I_MPI_MPD_TMPDIR
TMPDIR
MPD サブシステムの一時ディレクトリーを設定します。
構文
I_MPI_MPD_TMPDIR=<arg>
TMPDIR=<arg>
引数
<arg>
<directory name>
説明
文字列パラメーター。
一時ディレクトリーの場所を指す文字列デフォルト値は /tmp です。
代替の一時ディレクトリーの場所を指定するには、これらの環境変数のいずれかを設定します。MPD サブシス
テムは、これらの環境変数で指定されたディレクトリーにファイルを作成します。2 つの環境変数が異なる場
所を指す場合、TMPDIR 環境変数の値は無視されます。
注意
一部のオペレーティング・システムでは、mpd2.console_* ファイルパスの長さが制限されます。次のような
診断メッセージが表示された場合、問題を回避するには <directory name> の文字列長を減らしてください:
socket.error: AF_UNIX path too long。
94
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
<arg> が、分散ファイルシステム (PANFS、PVFS など) を示す場合、mpd デーモンは開始されません。この問
題が生じた場合、ext2、ext3、NFS などの標準ファイルシステムを指すように I_MPI_MPD_TMPDIR と
TMPDIR を設定してください。
I_MPI_MPD_CLEAN_LOG
MPD デーモン終了時のログファイルの削除を制御します。
構文
I_MPI_MPD_CLEAN_LOG=<value>
引数
<value>
enable | yes | on | 1
disable| no|off| 0
説明
値を定義します。
ログファイルを削除します。
ログファイルを保持します。これは、デフォルト値です。
この環境変数を設定して、mpdallexit の動作を定義します。この環境変数を enable に設定すると、
mpdallexit は実行中に作成したログファイルを削除します。この環境変数を disable に設定すると、
mpdallexit は実行中に作成したログファイルを保持します。
2.7. プロセッサー情報ユーティリティー
cpuinfo
cpuinfo ユーティリティーは、プロセッサーのアーキテクチャー情報を表示します。
構文
cpuinfo [[-]<options>]]
引数
<options>
g
1 文字のオプションシーケンスそれぞれのオプションは、出力データ
の特定の情報を制御します。
単一クラスターノードの一般的な情報を表示します。
•
•
•
•
プロセッサーの製品名
ノード上のパッケージ/ソケット数
ノードと各パッケージ内のコアとスレッド数
SMT モードの有効化
95
コマンド・リファレンス
i
論理プロセッサー特定テーブルは、各論理プロセッサーのスレッド、
コア、およびパッケージに応じて識別されます。
•
•
•
•
d
•
•
•
f
A
gidc
?
説明
Core Id - パッケージ内の一意なコア識別子。
Package Id - ノード内の一意なパッケージ識別子。
Package Id - 物理パッケージの識別子。
Cores Id - このパッケージ内のコア識別子のリスト。
Processors Id - このパッケージ内のプロセッサー識別子の
リスト。このリストの順番は、コアリストに対応します。括弧
で囲まれたプロセッサー・グループは、1 つのコアに属しま
す。
論理プロセッサーのキャッシュ共有は、特定のキャッシュレベルで共
有されるサイズとプロセッサー・グループの情報を表示します。
•
s
Thread Id - コア内の一意なプロセッサー識別子。
ノード分解テーブルは、ノードの内容を示します。各エントリーは、
パッケージ、コア、および論理プロセッサーに関する情報を含みま
す。
•
c
Processor - 論理プロセッサー番号。
Size - キャッシュサイズ (バイト)。
Processors - 括弧で囲まれたプロセッサー・リストは、この
キャッシュを共有するか、共有しないかを示します。
マイクロプロセッサーの署名 16 進フィールド (インテルのプラット
フォーム表記) は、署名値を示します。
•
extended family (拡張ファミリー)
•
extended model (拡張モデル)
•
family (ファミリー)
•
model (モデル)
•
type (タイプ)
•
stepping (ステッピング)
マイクロプロセッサー機能フラグは、マイクロプロセッサーでサポー
トされる機能を示します。インテルのプラットフォーム表記が使用さ
れます。
gidcsf に相当します。
デフォルトシーケンス。
ユーティリティーの使い方情報。
cpuinfo ユーティリティーは、適切なプロセスのピニング設定を定義する際に使用する、プロセッサー・アー
キテクチャーの情報を表示します。出力はいくつかのテーブルで構成されます。各テーブルは、引数テーブル
にリストされる 1 つのオプションに対応します。
96
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
アーキテクチャー情報は、インテル® 64 アーキテクチャー・ベースのシステムで利用できます。
cpuinfo ユーティリティーは、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能
ですが、非インテル製マイクロプロセッサーでは一部の情報のみを取得できます。
例
インテル® Xeon® プロセッサー E5-2697 v2 製品ファミリー上で cpuinfo を実行した例:
$ cpuinfo A
97
コマンド・リファレンス
98
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
3. チューニング・リファレンス
インテル® MPI ライブラリーは、多くの環境変数の適切な値の選択を支援する実行時のプログラムの動作やパ
フォーマンスを自動的に調整する自動チューニング・ユーティリティーとを提供しています。
3.1. mpitune ユーティリティーを使用
mpitune
クラスター構成やアプリケーションに関連するインテル® MPI ライブラリーの最適な設定を見つけるため、
mpitune ユーティリティーを使用します。
構文
mpitune [ -a \"<application command line>\" ] [ -of <file-name> ] \
[ -t \"<test_cmd_line>\" ] [-cm ] [ -d ] [ -D] \
[ -dl [d1[,d2...[,dN]]] ] [ -fl [f1[,f2…[,fN]]] ] [ -er ] \
[ -hf <hostsfile> ] [ -h ] [ -hr {min:max|min:|:max} ] \
[ -i <count> ] [ -mr {min:max|min:|:max}] [ -od <outputdir> ] \
[ -odr <outputdir> ] [ -r <rshcmd>] [ -pr {min:max|min:|:max}] \
[ -sf [file-path] ] [ -ss ] [ -s ] [ -td <dir-path> ] \
[ -tl <minutes>] [ -mh ] [ -os <opt1,...,optN> ] \
[ -oe <opt1,...,optN> ] [ -V ] [ -vi {percent} | -vix {X factor} ]\
[ - zb ] [ -t ] [ -so ] [ -ar \"reg-expr\" ] [ -trf <appoutfile> ]\
[ -m {base|optimized} ] [ -avd {min|max} ][ -pm {mpd|hydra} ]\
[ -co ] [ -sd ] [ -soc ]
または
mpitune [ --application \"<app_cmd _ line>\" ] [ --output-file <file-name> ]\
[ --test \"<test_cmd_line>\" ] [ --cluster-mode ] [ --debug ] \
[ --distinct ] [ --device-list [d1[,d2,… [,dN]]] ] \
[ --fabric-list [f1[,f2...[,fN]]] ][ --existing-ring ]\
[ --host-file <hostsfile> ] [ --help ] \
[ --host-range {min:max|min:|:max} ] [ --iterations <count> ] \
[ --message-range {min:max|min:|:max} ] \
[ --output-directory <outputdir> ] \
[ --output-directory-results <outputdir> ] [ --rsh <rshcmd> ] \
[ --ppn-range {min:max|min:|:max} | --perhost-range {min:max|min:|:max} ] \
[ --session-file [file-path] ] [ --show-session ] [ --silent ] \
[--temp-directory <dir-path> ] [ --time-limit <minutes> ] \
[ --master-host ] [ --options-set <opt1,...,optN> ] \
[ --options-exclude <opt1,...,optN> ] [ --version ] \
[ --valuable-improvement | --valuable-improvement-x {X factor} ]\
[ --zero-based ] [ --trace] [ --scheduler-only ] \
[ --application-regexp \"reg-expr\" ] \
[ --test-regexp-file <appoutfile> ] [ --model {base|optimized} ] \
[ --application-value-direction {min|max} ] \
[ --process-manager {mpd|hydra} ] [ -co ] [ -sd ] [ -soc ]
99
チューニング・リファレンス
引数
-a \"<app_ cmd_line>\"|
--application
\"<app_cmd_line>\"
-of <file-name> |
--output-file <filename>
-t \"<test_cmd_line>\" |
--test
\"<test_cmd_line>\"
-cm {exclusive|full} |
--cluster-mode
{exclusive|full}
アプリケーション固有モードに切り替えます。バックスラッシュを含
む完全なコマンドラインを入力します。
アプリケーション固有モードで生成される、アプリケーション構成
ファイル名を指定します。デフォルトのファイル名は、
$PWD/app.conf です。
クラスター固有モードで指定するベンチマーク・プログラムを、
インテル® MPI Benchmarks と入れ替えます。バックスラッシュを
含む完全なコマンドラインを入力します。
クラスター利用モードを設定します。
•
•
-d | --debug
-D | --distinct
full - 最大数のタスクが実行されます。これはデフォルトの
モードです。
exclusive - クラスター上で 1 つのタスクのみが同時実行さ
れます。
デバッグ情報を表示します。
すべてのオプションを個別にチューニングします。この引数はクラス
ター固有モードでのみ有効です。
-dl [d1[,d2...[,dN]]] |
--devicelist[d1[,d2,…[,dN]]]
チューニングするデバイスを選択します。以前に設定したデバイスは
無視されます。
-fl [f1[,f2...[,fN]]] |
--fabric-list
[f1[,f2…[,fN]]]
チューニングするファブリックを選択します。以前に設定したファブ
リックは無視されます。
-er | --existing-ring
-hf <hostsfile> |
--host-file <hostsfile>
-h | --help
-hr {min:max|min:|:max}
| --host-range
{min:max|min:|:max}
-i <count> |
--iterations <count>
デフォルトでは、<installdir>/<arch>/etc/devices.xml
ファイルにリストされるすべてのデバイスを使用します。
デフォルトでは、<installdir>/<arch>/etc/fabrics.xml
ファイルにリストされるすべてのファブリックを使用します。
既存の MPD リングを使用します。デフォルトでは、新しい MPD リ
ングが作成されます。この引数は、I_MPI_PROCESS_MANAGER 環境
変数に mpd が設定されている場合にのみ有効です。
代替のホストファイル名を指定します。
デフォルトは、$PWD/mpd.hosts です。
ヘルプメッセージを表示します。
テストに使用するホストの範囲を設定します。デフォルトの min 値
は 1 です。デフォルトの max 値は、mpd.hosts に定義されるホスト
数か既存の MPD リング数です。min: または :max 形式は、必要に
応じてデフォルト値を取ります。
各チューニング過程での実行回数を定義します。
カウント数を大きくすると、チューニングにかかる時間が増えます
が、結果の精度は高まります。デフォルト値は 3 です。
100
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-mr {min:max|min:|:max}
| --message-range
{min:max|min:|:max}
-od <outputdir> |
--output-directory
<outputdir>
-odr <outputdir> |
--output-directoryresults<outputdir>
メッセージサイズの範囲を設定します。デフォルトの min 値は 0 で
す。デフォルトの max 値は 4194304 です (4mb)。デフォルトの値の
単位はバイトです。次の形式で変更できます: 16kb、8mb または
2gb。min: または :max 形式は、必要に応じてデフォルト値を取り
ます。
すべての出力ファイルへのディレクトリー名を指定します: ログファ
イル、セッションファイル、ローカルホスト・ファイル、レポート
ファイル。デフォルトは、カレント・ディレクトリーです。このディ
レクトリーは、すべてのホストがアクセスできる必要があります。
結果として生成される構成ファイルのディレクトリー名を指定します。
デフォルトは、アプリケーション固有モードではカレント・ディレクト
リーで、クラスター固有モードでは <installdir>/<arch>/etc で
す。
クラスター固有モードで、<installdir>/<arch>/etc が利用でき
ない場合、$PWD が選択されます。
-r <rshcmd> |
--rsh <rshcmd>
-pr {min:max|min:|:max}
| --ppn-range
{min:max|min:|:max} |
--perhost-range
{min:max|min:|:max}
-sf [file-path] |
--session-file [filepath]
-ss |
--show-session
-s | --silent
-td <dir-path> |
--temp-directory <dirpath>
-tl <minutes> |
--time-limit <minutes>
-mh |
--master-host
-os <opt1,...,optN> |
--options-set
<opt1,...,optN>
-oe <opt1,...,optN> |
--options-exclude
<opt1,...,optN>
デーモン (必要であれば) とジョブを開始するリモートシェルを指定し
ます。デフォルト値は ssh です。
ホストごとの最大プロセッサー数を設定します。デフォルトの min
値は 1 です。デフォルトの max 値は、プロセッサーのコア数です。
min: または :max 形式は、必要に応じてデフォルト値を取ります。
[file-path] セッション・ファイルに保存されている状態から、
チューニングを再開します。
セッションファイルと終了に関する情報を表示します。このオプショ
ンは、-sf オプションと併用する場合にのみ効果があります。
すべての診断を抑制します。
一時データが使用するディレクトリー名を指定します。
デフォルトで、$PWD/mpitunertemp を使用します。このディレク
トリーは、すべてのホストがアクセスできる必要があります。
mpitune を実行する制限時間を分単位で指定します。デフォルト値
は 0 で、制限はありません。
mpitune を単一ホストで実行します。
指定されたオプション値のみをチューニングします。
チューニング・プロセスから指定されたインテル® MPI ライブラリー
のオプション設定を除外します。
101
チューニング・リファレンス
-V | --version
-vi {percent} |
--valuable-improvement
{percent} -vix{X factor}
| --valuableimprovement- x {X
factor}
-zb | --zero-based
-t | --trace
-so | --scheduler-only
-ar \"reg-expr\" |
--application-regexp
\"reg-expr\"
-trf <appoutfile> |
--test-regexp-file
<appoutfile>
-m {base|optimized} |
--model {base|optimized}
バージョン情報を表示します。
パフォーマンス向上のしきい値を制御します。デフォルトのしきい値
は 3% です。
チューニングの前に、すべてのオプションの基準として 0 を設定しま
す。この引数はクラスター固有モードでのみ有効です。
エラー番号やチューナーのトラックバックなどのエラー情報を表示し
ます。
実行すべきタスクのリストを作成し、タスクを表示して、実行を終了
します。タスクを実行せず、スケジュールのみを行います。
アプリケーションのパフォーマンス期待値を決定するため正規表現を
使用します。この引数はクラスター固有モードでのみ有効です。
reg-expr (正規表現) の文字列は、mpitune が解析に使用する 1 つ
の数値グループのみを含めすことができます。オペレーティング・シ
ステムの要求に応じて、引数の値を設定する際シンボルにバックス
ラッシュを使用してください。
reg-expr (正規表現) の正当性を確認するため、テスト出力ファイル
を使用します。-ar オプションを使用する場合、引数はクラスター固
有モードにのみ有効です。
検索モデルを指定します。
•
•
-avd {min|max} |
--application-valuedirection {min|max}
古いモデルを使用するには base に設定します。
新しい高速な検索モデルを使用するには、optimized に設定
します。これは、デフォルト値です。
値に最適化の方向性を指定します。
•
•
下位が良好である場合、min に設定します。例えば、実行時間を
最適化する場合この値を使用します。
上位が良好である場合、max に設定します。例えば、解決率を最
適化する場合この値を使用します。
-pm {mpd|hydra} |
--process-manager
{mpd|hydra}
ベンチマークの実行に使用するプロセス管理を指定します。デフォル
トは hydra です。
-co |
--collectives- only
集合操作のみをチューニングします。
-sd | --save-defaults
-soc |
--skip-options- check
インテル® MPI ライブラリーのデフォルト値を保存するため mpitune
を使用します。
コマンドライン・オプションを確認するかどうか指定します。
102
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
廃止されたオプション
廃止されたオプション
新しいオプション
--outdir
-od |--output-directory
--verbose
-d | --debug
--file
-hf |--host-file
--logs
-lf |--log-file
--app
-a |--application
説明
特定のクラスターやアプリケーション向けの最適な設定が含まれる、インテル® MPI ライブラリーの設定ファイ
ルを作成するため、mpitune ユーティリティーを使用します。mpiexec でジョブを起動する際に、-tune オ
プションを使用してこのファイルを再利用することができます。以前の mpitune セッションの設定ファイルが
存在する場合、mpitune は実行を開始する前に既存のファイルのコピーを作成します。
MPI tuner ユーティリティーは、次の 2 つのモードで操作します。
•
•
クラスター固有、インテル® MPI ライブラリー向けの最適な設定を見つけるため、インテル® MPI
Benchmarks やユーザーから提供されるベンチマーク・プログラムを使用して、クラスター環境を評
価します。このオプションはデフォルトで使用されます。
アプリケーション固有、特定のアプリケーション向けにインテル® MPI ライブラリーの最適な設定を見
つけるため、MPI アプリケーションの性能を評価します。アプリケーションのチューニングには、
--application コマンドライン・オプションを指定します。
3.1.1. クラスター固有のチューニング
クラスターをチューニングして最適な設定を見つけるため、インテル® MPI ライブラリーのインストール後
mpitune ユーティリティーを実行し、すべてのクラスターを再構成します (プロセッサーやメモリーのアップ
グレード、ネットワークの再構成、など)。設定リストを取得するには、インテル® MPI ライブラリーをインス
トールしたアカウントでユーティリティーを実行するか、--output-directory オプションでチューナーの
データ・ディレクトリーと --output-directory-results オプションで結果の出力ディレクトリーを指定
してユーティリティーを実行します。
<installdir>/<arch>/etc ディレクトリーに設定ファイルが存在する場合、mpiexec に -tune オプショ
ンを指定すると記録されているインテル® MPI ライブラリーの構成設定が自動的に使用されます。
次に例を示します。
•
インテル® MPI Benchmarks によって使用される ./mpd.hosts ファイルに含まれるクラスターホス
ト向けに構成の設定を収集します。
$mpitune
•
クラスター上で実行する場合、記録された設定ファイルを使用します。
$mpirun -tune -n 32 ./myprog
ジョブランチャーは、通信ファブリック、ホストとプロセス数などの実行条件に基づいて適切な設定オプショ
ンを検索します。<installdir>/<arch>/etc への書き込み権限がある場合、すべてのファイルはこのディ
レクトリーに保存されます。そうでない場合、現在の作業ディレクトリーに保存されます。
103
チューニング・リファレンス
注意
クラスター固有モードで -tune オプションを使用する場合 (チューニング設定ファイル名を指定せず)、明示的
に通信デバイスやファブリック、ノードごとのプロセス数、およびプロセス数の合計を指定する必要がありま
す。次に例を示します。
$ mpirun -tune -genv I_MPI_FABRICS shm:dapl -ppn 8 -n 32 ./myprog
デフォルトのベンチマークを置き換え
このチューニング機能は、クラスター固有モードの拡張であり、チューニングに使用するベンチマーク・アプ
リケーションを指定することができます。
インテル® MPI Benchmarks の実行可能ファイルは、デフォルトで非インテル互換プロセッサーよりもインテル®
マイクロプロセッサーに最適化されています。そのため、インテル® マイクロプロセッサーと非インテル互換プ
ロセッサーでは、チューニングの設定が異なることがあります。
次に例を示します。
1.
要求されるベンチマーク・プログラムによって使用される .\mpd.hosts ファイルに含まれるクラス
ターホスト向けに構成の設定を収集します。
$mpitune --test \"benchmark -param1 -param2\"
2.
クラスター上で実行する場合、記録された設定ファイルを使用します。
$mpirun -tune -n 32 ./myprog
3.1.2. アプリケーション固有のチューニング
チューナーにコマンドラインを指定することで、任意のアプリケーションのチューニングを実行します。パ
フォーマンスは、指定されたアプリケーションの逆実行時間として計測されます。全体のチューニング時間を
短縮するため、設定 (ファブリック、ランクの配置など) を適用可能な、もっとも典型的なアプリケーションの
ワークロードを使用します。
注意
アプリケーション固有モードでは、同様なコマンドラインと環境を使用して最も適切なチューニング結果を得
ることができます。
次に例を示します。
指定されたアプリケーションの構成設定を収集します。
$mpitune --application \"mpirun -n 32 ./myprog\" -of ./myprog.conf
アプリケーションを実行する場合、記録された設定ファイルを使用します。
$mpirun -tune ./myprog.conf -n 32 ./myprog
デフォルトのチューニング規則に基づき、自動化されたチューニング・ユーティリティーは、アプリケーショ
ンの実行時間を最小化するため、すべてのライブラリーを構成するパラメーターを評価します。デフォルトで
は、生成されたファイルはすべてカレント・ワーキング・ディレクトリーに保存されます。
アプリケーションの設定ファイルには、そのアプリケーションと構成のみに最適なインテル® MPI ライブラリー
のパラメーターが含まれます。インテル® MPI ライブラリーを同じアプリケーションの異なる構成 (ホスト数、
ワークロードなど) にチューニングする場合、対象の構成で自動チューニング・ユーティリティーを再実行して
ください。
104
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
デフォルトでは、自動チューニング・ユーティリティーは既存のアプリケーション向けの設定ファイルを上書
きします。アプリケーションの設定ファイルを保持したい場合、異なる名前で保存し、必要な時にすぐに選択
できるように、名前を付ける必要があります。
高速チューニング
ここでは、インテル® MPI ライブラリー向けの最適な設定を見つけるため mpitune ユーティリティーを使用す
る方法を説明します。
構文
--fast [<value>] または –f [<value>]
または
I_MPI_TUNE_FAST=<value>
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
高速アプリケーション・チューニングを有効にします。この値は、ア
プリケーションのチューニングモードでのみ有効です。
高速アプリケーション・チューニングを無効にします。これは、デ
フォルト値です。
I_MPI_TUNE_FAST を enable に設定すると、mpitune ユーティリティーは代替の高速アプリケーション・
チューニング手順を実行します。高速アプリケーション・チューニングは、前回のチューニングに使用した設
定ファイルを使用します。
例1
$ mpitune --application \”mpirun …\” --fast
例2
$ export I_MPI_TUNE_FAST=enable
$ mpitune --application \”mpirun …\”
注意
-help と -fast オプションを指定すると、app_tune に関するヘルプが表示されます。
トポロジーを考慮したアプリケーションのチューニング
ここでは、mpitune ユーティリティーを使用してトポロジーを考慮したチューニングを行う方法を説明します。
ダイナミック・メソッドでこのチューニングを行う場合、「-use-app-topology」と
「I_MPI_HYDRA_USE_APP_TOPOLOGY」の説明をご覧ください。
105
チューニング・リファレンス
I_MPI_TUNE_RANK_PLACEMENT
構文
--rank-placement [<value>] または -rp [<value>]
または
I_MPI_TUNE_RANK_PLACEMENT=<value>
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
mpitune ユーティリティーをトポロジー・チューニング・ツールに
切り替えます。この値は、アプリケーションのチューニング・モード
でのみ有効です。例えば、–application オプションもしくはアプ
リケーション通信グラフ (ACG) とオプションのハードウェア・トポロ
ジー/グラフ (HTG) は、追加オプション -acg と -htg で渡されま
す。
トポロジー・チューニング・ツールを off に切り替えます。これ
は、デフォルト値です。
I_MPI_TUNE_RANK_PLACEMENT を enable に設定すると、mpitune ラッパーは代替トポロジーツール
(mpitune_rank_placement) を実行します。
例
$ mpitune --application \”mpirun … \” --rank-placement
$ mpitune --application \”mpirun … \” --rank-placement enable
$ mpitune --application \”mpirun … \” -rp -acg <path to acg_file> -htg <path to
htg_file>
結果は、host ファイルと host ファイルを使用して自動的に記録される設定ファイルです。
注意
--help と --rank-placement オプションを指定すると、mpitune_rank_placement に関するヘルプが表
示されます。
I_MPI_TUNE_APPLICATION_STATISTICS
構文
--application-statistics [<value>] または -s [<value>]
または
I_MPI_TUNE_APPLICATION_STATICSTICS=<value>
引数
<value>
インテル® MPI ライブラリーのネイティブ統計ファイルのレベル 1 以
上へのパス。この設定は、--rank-placement オプションと同時に
指定された場合にのみ適用されます。
106
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
インテル® MPI ライブラリーの統計ファイルを mpitune (mpitune_rank_placement) へ渡すと、チューニン
グ時間を短縮できます。
例
$ mpitune -rp -s <path to statistics file>
I_MPI_TUNE_APPLICATION_COMMUNICATION_GRAPH
構文
--application-communication-graph [<value>] または -acg [<value>]
または
I_MPI_TUNE_APPLICATION_COMMUNICATION_GRAPH=<value>
引数
<value>
説明
ACG ファイルへのパス。この設定は、--rank-placement オプショ
ンと同時に指定された場合にのみ適用されます。
ACG ファイルを mpitune (mpitune_rank_placement) へ渡すと、チューニング時間を短縮できます。
例
$ mpitune -rp -acg <path to acg_file>
I_MPI_TUNE_HARDWARE_TOPOLOGY_GRAPH
構文
--hardware-topology-graph [<value>] または -htg [<value>]
または
I_MPI_TUNE_HARDWARE_TOPOLOGY_GRAPH=<value>
引数
<value>
説明
ハードウェア・トポロジー・グラフが記述されたファイルへのパス。
この設定は、--rank-placement オプションと同時に指定された場
合にのみ適用されます。
HTG ファイルを mpitune (mpitune_rank_placement) へ渡すと、チューニング時間を短縮できます。
例
$ mpitune -rp -acg <path to acg_file> -htg <path to htg_file>
3.1.3. チューニング・ユーティリティーの出力
チューニング・プロセスが完了すると、インテル® MPI ライブラリーのチューニング・ユーティリティーは、次
の形式で選択された値を記録します。
-genv I_MPI_DYNAMIC_CONNECTION 1
-genv I_MPI_ADJUST_REDUCE 1:0-8
107
チューニング・リファレンス
インテル® MPI ライブラリーのチューニング・ユーティリティーは、調査した差がノイズレベル (1%) である場
合、アプリケーションに影響しない環境変数を無視します。この場合、ユーティリティーは、環境変数を設定
せずデフォルトのライブラリーのヒューリスティックを保持します。
実行するたびにアプリケーションのパフォーマンスが変動する場合、インテル® MPI ライブラリーのチューニン
グ・ユーティリティーは、同じ条件下で同じ環境変数に異なる値を選択することがあります。決定精度を向上
するため、-iterations コマンドライン・オプションを使用してそれぞれのテスト実行の反復回数を増やし
ます。デフォルトの反復回数は 3 です。
3.2. プロセスのピニング (固定)
MPI プロセスをノード内のプロセッサーにピニング (固定) し、望ましくないプロセスのマイグレーションを避
けるため、このオプションを使用します。この機能は、オペレーティング・システムがカーネル・インター
フェイスを提供する場合に利用できます。
3.2.1. プロセスピニングのデフォルト設定
環境変数にプロセスピニングが指定されていない場合、次のデフォルト設定が使用されます。この設定の詳細
は、「環境変数」と「OpenMP* API との相互利用」をご覧ください。
•
I_MPI_PIN=on
•
I_MPI_PIN_MODE=pm
•
I_MPI_PIN_RESPECT_CPUSET=on
•
I_MPI_PIN_RESPECT_HCA=on
•
I_MPI_PIN_CELL=unit
•
I_MPI_PIN_DOMAIN=auto:compact
•
I_MPI_PIN_ORDER=compact
3.2.2. プロセッサーの識別
システムの論理プロセッサーを特定するため次のスキームが適用されます。
•
•
システム定義の論理列挙値
トリプレット (パッケージ/ソケット、コア、スレッド) を介した 3 レベルの階層型識別に基づくトポロ
ジーの列挙
論理 CPU 番号は、カーネルのアフィニティー・ビット・マスクでその CPU ビットに対応する位置として定義
されます。インテル® MPI ライブラリーで提供される cpuinfo ユーティリティーを使用するか、論理 CPU 番
号を特定するため cat /proc/cpuinfo コマンドを実行します。
3 レベルの階層構造による識別は、プロセッサーの場所とその並びに関連する情報を提供するトリプレットを
採用しています。トリプレットは階層構造です (パッケージ、コア、スレッド)。
2 ソケット、4 コア (ソケットあたり 2 コア)、8 論理プロセッサー (コアあたり 2 プロセッサー)におけるプロ
セッサー番号の例をご覧ください。
注意
論値とトポロジーの列挙によるプロセッサーは、同一ではありません。
108
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
表 3.2-1 論理一覧
0
4
1
5
2
6
3
7
表 3.2-2 階層レベル
ソケット
0
0
0
0
1
1
1
1
コア
0
0
1
1
0
0
1
1
スレッド
0
1
0
1
0
1
0
1
表 3.2-3 トポロジー一覧
0
1
2
3
4
5
6
7
cpuinfo ユーティリティーを使用して、論理とトポロジー列挙の間の対応関係を特定します。詳細は、「プロ
セッサー情報ユーティリティー」をご覧ください。
3.2.3. 環境変数
I_MPI_PIN
プロセスのピニングを on/off にします。
構文
I_MPI_PIN=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
プロセスのピニングを有効にします。これは、デフォルト値です。
プロセスのピニングを無効にします。
インテル® MPI ライブラリーのプロセスピニング機能を制御するには、この環境変数を設定します。
I_MPI_PIN_MODE
ピニングの方式を選択します。
構文
I_MPI_PIN_MODE=<pinmode>
109
チューニング・リファレンス
引数
<pinmode>
mpd|pm
CPU ピニングモードを選択します。
関連するプロセス管理 (多目的デーモン/MPD や Hydra) 内部のプロセ
スをピニングします。これは、デフォルト値です。
インテル® MPI ライブラリー内部でプロセスをピニングします。
lib
説明
ピニング方式を選択するには、I_MPI_PIN_MODE 環境変数を設定します。この環境変数は、I_MPI_PIN が有
効なときにのみ効果があります。
mpd デーモンや Hydra プロセスランチャーがシステムで提供される方法でプロセスをピニングするようにする
には (可能な場合)、I_MPI_PIN_MODE 環境変数を mpd または pm に設定します。ピニングは、MPI プロセスが
起動される前に行います。これにより、CPU とメモリーにプロセスを配置できます。ピニングは、Altix* など
の非均一メモリー・アーキテクチャー (NUMA) システムでは利点があります。NUMA 環境では、プロセッサー
は自身のローカルメモリーに高速にアクセスできます。
I_MPI_PIN_MODE 環境変数を lib に設定すると、インテル® MPI ライブラリーはプロセスをピニングします。
このモードは、CPU とメモリーの同じ場所に配置されたプロセスには機能しません。
I_MPI_PIN_PROCESSOR_LIST (I_MPI_PIN_PROCS)
プロセッサー・サブセットとこのサブセット内の MPI プロセスのマッピング規則を定義します。
構文
I_MPI_PIN_PROCESSOR_LIST=<value>
I_MPI_PIN_DOMAIN 環境変数には以下の構文があります。
1.
<proclist>
2.
[<procset>][:[grain=<grain>][,shift=<shift>][,preoffset=<preoffset>][,postof
fset =<postoffset>]
3.
[<procset>][:map=<map>]
次の段落でこれらの構文の詳しい値を説明します。
廃止された構文
I_MPI_PIN_PROCS=<proclist>
注意
postoffset キーワードは offset をエリアスします。
注意
ピニング手順の 2 番目の形式には、次の 3 つの手順があります。
1.
2.
3.
preoffset*grain 値で、ソース・プロセッサー・リストを循環シフトします
shift*grain 値 で最初のステップから派生したリストをラウンドロビンでシフトします。
postoffset*grain 値 で 2 番目のステップから派生したリストを循環シフトします。
110
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
grain、shift、preoffset および postoffset パラメーターは、統一された定義スタイルを持ちます。
この環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテ
ル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
構文
I_MPI_PIN_PROCESSOR_LIST=<proclist>
引数
<proclist>
<l>
<l>-<m>
<k>,<l>-<m>
構文
論理プロセッサー番号および (または)、プロセッサーの範囲をカンマ
で区切ったリスト。i 番目のランクのプロセスは、リスト内の i 番目
のプロセッサーにピニング (固定) されます。番号は、ノード内のプロ
セッサー数を越えてはいけません。
論理番号<l> のプロセッサー。
論理番号 <l> から <m> の範囲のプロセッサー。
論理番号 <k> と <l> から <m> までのプロセッサー。
I_MPI_PIN_PROCESSOR_LIST=[<procset>][:[grain=<grain>][,shift=<shift>][,preoffset
=<preoffset>][,postoffset=<postoffset>]
引数
<procset>
all
allcores
トポロジーによる算出法に基づいて、プロセッサー・サブセットを指
定します。デフォルト値は、allcores です。
すべての論理プロセッサー。ノード上の CPU 番号を定義するために
このサブセットを指定します。
すべてのコア (物理 CPU)ノード上のコア番号を定義するためにこのサ
ブセットを指定します。これは、デフォルト値です。
インテル® ハイパースレッディング・テクノロジーが無効の場合、
allcores は、all と等価です。
allsocks
<grain>
すべてのパッケージ/ソケット。ノード上のソケット番号を定義する
ためにこのサブセットを指定します。
定義された <procset> に、セルをピニング (固定)する粒度を指定し
ます。最小 <grain> 値は、<procset> の単一要素です。最大
<grain> 値は、ソケットの <procset> 要素の数です。<grain> 値
は、<procset> 値の倍数でなければいけません。
そうでない場合、最小 <grain> 値が想定されます。デフォルトは、
最小 <grain> 値です。
111
チューニング・リファレンス
<shift>
<procset> のセルをラウンドロビン・スケジューリングする際のシ
フトの粒度を指定します。
<shift> は、定義された <grain> ユニットを基準とします。
<shift> 値は、は正の整数でなければなりません。そうでない場
合、シフトは行われません。デフォルトはシフトなしで、1 つインク
リメントするのに相当します。
<preoffset>
<preoffset> 値をラウンドロビン・シフトする前に定義された、プ
ロセッサー・サブセット <procset> の巡回シフトを指定します。値
は、定義された <grain> ユニットを基準とします。
<preoffset> 値は、は正の整数でなければなりません。そうでない
場合、シフトは行われません。デフォルトはシフトなしです。
<postoffset>
<postoffset> 値をラウンドロビン・シフトした後に誘導された、
プロセッサー・サブセット <procset> の巡回シフトを指定します。
値は、定義された <grain> ユニットを基準とします。
<postoffset> 値は、は正の整数でなければなりません。そうでな
い場合、シフトは行われません。デフォルトはシフトなしです。
次の表は、<grain>、<shift>、<preoffset> および <postoffset> 向けの値を示します。
<n>
fine
core
cache1
cache2
cache3
cache
socket | sock
half | mid
third
quarter
octavo
対応するパラメーターの明示的な値を指定します。<n> は、正の整数
値です。
対応するパラメーターの最小値を指定します。
1 つのコアに含まれるパラメータユニットと同じ数のパラメータ値を
指定します。
L1 キャッシュを共有するパラメータユニットと同じ数のパラメータ
値を指定します。
L2 キャッシュを共有するパラメータユニットと同じ数のパラメータ
値を指定します。
L3 キャッシュを共有するパラメータユニットと同じ数のパラメータ
値を指定します。
cache1、cache2 および cache3 中の最大値。
1 つの物理パッケージ/ソケットに含まれるパラメータユニットと同
じ数のパラメータ値を指定します。
socket/2 と等しいパラメーター値を指定します。
socket/3 と等しいパラメーター値を指定します。
socket/4 と等しいパラメーター値を指定します。
socket/8 と等しいパラメーター値を指定します。
112
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
構文
I_MPI_PIN_PROCESSOR_LIST=[<procset>][:map=<map>]
引数
プロセスの配置に使用するマッピングのパターン。
<map>
プロセスをソケット上で可能な限り隣接してマップします。
bunch
共有リソース (FSB、キャッシュおよびコア) を共有しないように、プ
ロセスは可能な限り離れてマップされます。
scatter
共有リソースを共有しないように、プロセスは可能な限り連続して
マップされます。
spread
説明
プロセッサー配置を設定するには、I_MPI_PIN_PROCESSOR_LIST 環境変数を設定します。別シェルとの競合
を避けるため、環境変数の値は引用符で囲む必要があります。
注意
この環境変数は、I_MPI_PIN が有効なときにのみ効果があります。
I_MPI_PIN_PROCESSOR_LIST 環境変数には次の異なる構文があります。
•
明示的なプロセッサー・リスト。論理プロセッサー番号が定義されるカンマで区切られたリスト。プ
ロセスの相対ノードランクは、i 番目のプロセスは i 番目のリスト番号へピニングするなど、プロ
セッサー・リストへのインデックスとなります。CPU 上で任意のプロセス配置を定義することを許可
します。
例えば、I_MPI_PIN_PROCESSOR_LIST=p0,p1,p2,..., pn というプロセスマッピングは、次の
ように展開されます。
ノードのランク
論理 CPU
•
凡例:
0
1
2
...
n-1
N
p0
p1
p2
...
pn-1
Pn
grain/shift/offset マッピング。この方式は、<shift>*<grain> に等しいステップと、末端が
<offset>*<grain> の単一シフトによる、プロセッサー・リストに沿って定義された粒度の巡回シ
フトを行います。このシフト動作は、<shift> 回繰り返されます。
例: grain = 2、論理プロセッサー、shift = 2 grains、offset = 0。
灰色 - MPI プロセスの粒度
A)
B)
C)
D)
赤色 - 最初のパスで選択されたプロセッサー粒度
水色 - 2 番目のパスで選択されたプロセッサー粒度
緑色 - 最後の 3 番目のパスで選択されたプロセッサー粒度
MPI ランクによる並びの最終的なマップテーブル
113
チューニング・リファレンス
A)
01
23
45
67
89
10 11
...
2n-2
2n-1
...
6n-6
6n-5
01
23
01
2n 2n+1
01
23
01
2n
2n+1
4n
4n+1
23
2n+2
2n+3
4n+2
4n+3
...
01
23
45
67
89
10 11
...
6n-4
6n-3
6n-2
6n-1
B)
45
23
2n+2
2n+3
67
89
10 11
...
2n-2
2n-1
4n-2
4n-1
...
6n-6
6n-5
6n-4
6n-3
6n-2
6n-1
2n-2
2n-1
4n-2
4n-1
6n-2
6n-1
6n-6
6n-5
6n-4
6n-3
6n-2
6n-1
C)
D)
01
23
…
2n-2
2n-1
2n
2n+1
2n+2
2n+3
…
4n-2
4n-1
4n
4n+1
4n+2
4n+3
…
6n-2
6n-1
01
67
…
6n-6
6n-5
23
89
…
6n-4
6n-3
45
10
11
…
6n-2
6n-1
•
事前定義マッピング。この場合、大部分のプロセスのピニングは、実行時に選択できるキーワードと
して定義されます。2 つのシナリオがあります: bunch と scatter。
bunch シナリオでは、プロセスは可能な限り近いソケットにマッピングされます。このマッピングは、部分的
なプロセッサー負荷に適しています。この場合、プロセス数はプロセッサー数よりも少なくなります。
scatter シナリオでは、プロセスは共有リソース (FSB、キャッシュおよびコア) を共有しないように可能な限
り離れてにマッピングされます。
114
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
例えば、2 ソケット、ソケットごとに 4 コア、コアあたり 1 論理 CPU では、2 つのコアごとにキャッシュを共
有します。
凡例:
灰色 - MPI プロセス
水色 - 最初のソケットのプロセッサー
緑色 -2 番目のソケットのプロセッサー
同じ色は、キャッシュを共有するプロセッサーのペアを定義します
0
1
2
0
1
2
3
4
3
4
5
6
7
5 プロセスでの bunch シナリオ
0
4
2
6
1
5
3
7
0
1
2
3
4
5
6
7
すべてを使用する scatter シナリオ
例
ノード全体でプロセスを CPU0 と CPU3 にピニングするには、次のコマンドを使用します。
$ mpirun -genv I_MPI_PIN_PROCESSOR_LIST 0,3 \
-n <# of processes> <executable>
各ノードで個別に異なる CPU にプロセスをピニング (host1 で CPU0 と CPU3、host2 で CPU0、CPU1 および
CPU3) するには、次のコマンドを使用します。
$ mpirun -host host1 -env I_MPI_PIN_PROCESSOR_LIST 0,3 \
-n <# of processes> <executable> : \
-host host2 -env I_MPI_PIN_PROCESSOR_LIST 1,2,3 \
-n <# of processes> <executable>
プロセスのピニングに関する拡張デバッグ情報を表示するには、次のコマンドを使用します。
$ mpirun -genv I_MPI_DEBUG 4 -m -host host1 \
-env I_MPI_PIN_PROCESSOR_LIST 0,3 -n <# of processes> <executable> :\
-host host2 -env I_MPI_PIN_PROCESSOR_LIST 1,2,3 \ -n <# of processes> <executable>
注意
プロセス数がピニングする CPU 数よりも大きい場合、プロセスリストはプロセッサー・リストの先頭にラップ
アラウンドします。
115
チューニング・リファレンス
I_MPI_PIN_PROCESSOR_EXCLUDE_LIST
意図するホスト上でピニングを使用するため、除外する論理プロセッサーのサブセットを定義します。
構文
I_MPI_PIN_PROCESSOR_LIST=<proclist>
引数
<proclist>
論理プロセッサー番号および (または)、プロセッサーの範囲をカンマ
で区切ったリスト。
論理番号 <l> のプロセッサー。
<l>
論理番号 <l> から <m> の範囲のプロセッサー。
<l>-<m>
<k>,<l>-<m>
説明
論理番号 <k> と <l> から <m> までのプロセッサー。
意図するホスト上でインテル® MPI ライブラリーがピニングに使用しない論理プロセッサーを定義するには、こ
の環境変数を設定します。論理プロセッサーは、/proc/cpuinfo のように番号付けされます。
I_MPI_PIN_CELL
ピニングの解像度を定義します。I_MPI_PIN_CELL は、MPI プロセスを実行する際に、最小のプロセッサー・
セルを指定します。
構文
I_MPI_PIN_CELL=<cell>
引数
<cell>
粒度の解像度を指定します。
基本プロセッサー・ユニット (論理 CPU)。
unit
物理プロセッサーコア。
core
説明
この環境変数を設定して、プロセスが実行される際に使用するプロセッサー・サブセットを定義します。2 つ
のシナリオを選択できます。
•
ノード内のすべての利用可能な CPU (unit)
•
ノード内のすべての利用可能なコア (core)
•
I_MPI_PIN_PROCESSOR_LIST 環境変数を介した 1 対 1 のピニング
この環境変数は、どちらのピニングにも影響します
•
I_MPI_PIN_DOMAIN 環境変数を介した 1 対多数 のピニング
•
I_MPI_PIN_DOMAIN を使用する場合、セルの粒度は unit です。
デフォルト値は以下のようになります。
•
I_MPI_PIN_PROCESSOR_LIST を使用する場合、次の規則が適用されます。


プロセス数がコア数よりも多い場合、セルの粒度は unit です。
プロセス数がコア数以下の場合、セルの粒度は core です。
116
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
システムでインテル® ハイパースレッディング・テクノロジーの有効/無効を切り替えても core 値は影響を受
けません。
I_MPI_PIN_RESPECT_CPUSET
プロセスのアフィニティー・マスクが順守されます。
構文
I_MPI_PIN_RESPECT_CPUSET=<value>
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
プロセスのアフィニティー・マスクを順守します。これは、デフォル
ト値です。
プロセスのアフィニティー・マスクを順守しません。
I_MPI_PIN_RESPECT_CPUSET=enable に設定すると、Hydra プロセスランチャーは、インテル® MPI ライブ
ラリーのピニングに適用する各ホスト上の論理プロセッサーを決定するため、プロセス・アフィニティー・マ
スクを使用します。
I_MPI_PIN_RESPECT_CPUSET=disable に設定すると、Hydra プロセスランチャーは、インテル® MPI ライ
ブラリーのピニングに適用する各ホスト上の論理プロセッサーを決定するため、プロセス・アフィニティー・
マスクを使用しません。
I_MPI_PIN_RESPECT_HCA
Infiniband* アーキテクチャーのホスト・チャネル・アダプター (IBA* HCA*) が存在する場合、IBA HCA の位置
に応じてピニングを調整します。
構文
I_MPI_PIN_RESPECT_HCA=<value>
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
可能であれば、IBA HCA の位置を使用します。これは、デフォルト値
です。
IBA HCA の位置を使用しません。
I_MPI_PIN_RESPECT_HCA=enable に設定すると、Hydra プロセスランチャーは、インテル® MPI ライブラ
リーのピニングに適用するため、各ホスト上の IBA HCA を位置を使用します。
I_MPI_PIN_RESPECT_HCA=disable に設定すると、Hydra プロセスランチャーは、インテル® MPI ライブラ
リーのピニングに適用するため、各ホスト上の IBA HCA を位置を使用しません。
117
3.2.4. OpenMP* API との相互利用
チューニング・リファレンス
I_MPI_PIN_DOMAIN
インテル® MPI ライブラリーは、MPI/OpenMP* ハイブリッド・アプリケーションのプロセスピニングを制御す
る追加の環境変数を提供します。この環境変数は、ノード上の論理プロセッサーがオーバーラップしないサブ
セット (ドメイン) を定義し、ドメインあたり 1 つの MPI プロセスにすることで、ドメインへ MPI プロセスをバ
インドするルールを設定することができます。図を参照してください。
図 3.2-1 ドメインの例
各 MPI プロセスは、対応するドメイン内で実行する子スレッドを作成できます。プロセススレッドは、ドメイ
ン内の論理プロセッサーからほかの論理プロセッサーへ自由に移行できます。
I_MPI_PIN_DOMAIN 環境変数が定義されている場合、I_MPI_PIN_PROCESSOR_LIST 環境変数の設定は無視
されます。
I_MPI_PIN_DOMAIN 環境変数が定義されない場合、MPI プロセスは I_MPI_PIN_PROCESSOR_LIST 環境変数
の値に従ってピニングされます。
I_MPI_PIN_DOMAIN 環境変数には、次の構文があります。
•
•
•
マルチコア用語 <mc-shape> を介したドメイン定義
ドメインサイズとドメイン・メンバー・レイアウト <size>[:<layout>] を介したドメイン定義
ビットマスク <masklist> を介したドメイン定義
118
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
次の表で構文形式を説明します。
マルチコアの形態
I_MPI_PIN_DOMAIN=<mc-shape>
<mc-shape>
Core
socket | sock
Node
cache1
cache2
cache3
cache
明示的な形態
マルチコア用語を介してドメインを定義します。
各ドメインは、特定のコアを共有する論理プロセッサーで構成されま
す。ノードのドメイン数はノードのコア数と等しくなります。
各ドメインは、特定のソケットを共有する論理プロセッサーで構成さ
れます。ノードのドメイン数はノードのソケット数と等しくなりま
す。これは、推奨値です。
ノード上のすべての論理プロセッサーは、単一のドメインに配置され
ます。
特定のレベル 1 キャッシュを共有する論理プロセッサーは、単一ドメ
インに配置されます。
特定のレベル 2 キャッシュを共有する論理プロセッサーは、単一ドメ
インに配置されます。
特定のレベル 3 キャッシュを共有する論理プロセッサーは、単一ドメ
インに配置されます。
cache1、cache2 および cache3 中の最大のドメインが選択されま
す。
I_MPI_PIN_DOMAIN=<size>[:<layout>]
<size>
omp
auto
<n>
各ドメインの論理プロセッサー数を定義します (ドメインサイズ)。
ドメインサイズは、OMP_NUM_THREADS 環境変数の値を同じです。
OMP_NUM_THREADS 環境変数が定義されていない場合、各ノードは
個別のドメインとして扱われます。
ドメインサイズは、サイズ=#cpu/#proc の式で定義されます。ここ
で、#cpu は、ノード上の論理プロセッサー数で、#proc は、ノード
上の MPI プロセス数です。
正の 10 進数 <n> でドメインサイズを指定します。
119
チューニング・リファレンス
<layout>
platform
compact
scatter
明示的なドメインマスク
ドメインメンバーの順番。デフォルト値は compact です。
ドメインのメンバーは、BIOS で定義される番号付け (プラットフォー
ム固有の番号) に従って並べられます。
ドメインのメンバーは、リソース (コア、キャッシュ、ソケットなど)
を共有するように可能な限り近く並べられます。これは、デフォルト
値です。
ドメインのメンバーは、リソース (コア、キャッシュ、ソケットなど)
を共有しないように可能な限り離れて並べられます。
I_MPI_PIN_DOMAIN=<マスクリスト>
<masklist>
[m1,...,mn]
カンマで区切られた 16 進数でドメインを定義します (ドメインマス
ク)。
<masklist> の各 mi は個別のドメインを定義する 16 進数のビット
マスクです。次の規則が適用されます。対応する mi ビットが 1 であ
れば、i 番目の論理プロセッサーは、ドメインに含まれます。その他
のプロセッサーは、異なるドメインに配置されます。BIOS のナンバ
リングが使用されます。
注意
<masklist> の設定が正しく解釈されることを確実にするため、
<masklist> で指定するドメインを括弧で囲みます。次に例を示し
ます。
I_MPI_PIN_DOMAIN=[0x55,0xaa]
注意
これらのオプションはインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、
インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
注意
ドメイン内で OpenMP* プロセスやスレッドをピニングするには、OpenMP* でサポートされる機能 (インテル®
コンパイラーの KMP_AFFINITY 環境変数など) を使用します。
120
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
次の設定は、ピニングが行われていない場合と同じ効果を持ちます。
•
•
I_MPI_PIN_DOMAIN=auto に設定し、ノードで単一プロセスが実行されている場合 (例えば、
I_MPI_PERHOST=1 によって)
I_MPI_PIN_DOMAIN=node
マルチソケット・プラットフォーム上でソケット間でプロセスを移行させたくない場合、
I_MPI_PIN_DOMAIN=socket または小さな値にドメインサイズを設定します。
また、各ランク (アフィニティー・マスクは自動的に IBA* HCA に調整されます) に単一の CPU プロセスのア
フィニティー・マスクを生成するため I_MPI_PIN_PROCESSOR_LIST を使用できます。
SMP ノードのモデルを以下に示します。
図 3.2-2 ノードのモデル
121
チューニング・リファレンス
図 3.2-3 mpirun -n 2 -env I_MPI_PIN_DOMAIN socket ./a.out
図 3.2-3 では、ソケット数に応じて 2 つのドメインが定義されます。プロセスランク 0 は、0 番目のソケット
のすべてのコアに移行できます。プロセスランク 1 は、1 番目のソケットのすべてのコアに移行できます。
122
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
図 3.2-4 mpirun -n 4 -env I_MPI_PIN_DOMAIN cache2 ./a.out
図 3.2-4 では、共有 L2 キャッシュの量に応じて 4 つのドメインが定義されます。プロセスランク 0 は、L2
キャッシュを共有するコア {0,4} で実行されます。プロセスランク 1 は、同様に L2 キャッシュを共有するコア
{1,5} で実行されます。
123
チューニング・リファレンス
図 3.2-5 mpirun -n 2 -env I_MPI_PIN_DOMAIN 4:platform ./a.out
図 3.2-5 では、サイズ=4 の 2 つのドメインが定義されます。最初のドメインはコア {0,1,2,3} を含み、2 番目の
ドメインはコア {4,5,6,7} を含みます。platform オプションで定義されるドメインメンバー (コア) は、連続す
る番号になります。
124
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
図 3.2-6 mpirun -n 4 -env I_MPI_PIN_DOMAIN auto:scatter ./a.out
図 3.2-6 では、ドメイン サイズ=2 (CPU 数 = 8 / プロセス数 = 4 で定義される)、scatter レイアウト。4 つの
ドメイン {0,2}、{1,3}、{4,6}、{5,7} が定義されます。ドメインのメンバーは、いかなるリソースも共有しませ
ん。
125
チューニング・リファレンス
図 3.2-7 setenv OMP_NUM_THREADS=2
mpirun -n 4 -env I_MPI_PIN_DOMAIN omp:platform ./a.out
図 3.2-7 では、ドメイン サイズ=2 (OMP_NUM_THREADS=2 で定義される)、platform レイアウト。4 つのド
メイン {0,1}、{2,3}、{4,5}、{6,7} が定義されます。ドメインメンバー (コア) は、連続する番号になります。
126
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
図 3.2-8 mpirun -n 2 -env I_MPI_PIN_DOMAIN [0x55,0xaa] ./a.out
図 3.2-8 (I_MPI_PIN_DOMAIN=<masklist> の例) では、最初のドメインは 0x55 マスクで定義されます。偶
数番号 {0,2,4,6} を持つすべてのコアが含まれます。2 番目のドメインは 0xAA マスクで定義されます。奇数番
号 {1,3,5,7} を持つすべてのコアが含まれます。
I_MPI_PIN_ORDER
I_MPI_PIN_DOMAIN 環境変数の値で指定されたドメインへ MPI プロセスの順番割り当てを定義します。
構文
I_MPI_PIN_ORDER=<order>
引数
<order>
range
scatter
compact
spread
bunch
ランクの順番を指定します。
ドメインは、プロセッサーの BIOS 番号付けに従って配置されます。
これはプラットフォーム固有の番号付けです。
隣接するドメインが共有リソースを最小限に共有するようにドメイン
が配置されます。
隣接するドメインが共有リソースを最大限に共有するようにドメイン
が配置されます。これは、デフォルト値です。
共有リソースを共有しないように、ドメインは可能な限り連続配置さ
れます。
プロセスはソケットに応じてマッピングされ、ドメインはソケット上
で可能な限り隣接して配置されます。
127
チューニング・リファレンス
説明
この環境変数はオプションで、アプリケーション固有です。隣接するプロセスが、コア、キャッシュ、ソケッ
ト、FSB などのリソースを共有する場合、compact または bunch に設定します。
そうでない場合は、scatter または spread にします。必要に応じて range 値を使用します。これらの値に
関する詳しい説明と例は、この章の I_MPI_PIN_ORDER の引数テーブルと例をご覧ください。
scatter、compact、spread および bunch オプションは、インテル製マイクロプロセッサーおよび互換マ
イクロプロセッサーで利用可能ですが、インテル製マイクロプロセッサーにおいてより多くの最適化が行われ
る場合があります。
例
次の構成の場合:
•
•
4 コアと対応するコアのペアが L2 キャッシュを共有する 2 つのソケットノード。
4 つの MPI プロセスを次の設定でノードで実行するとします。

compact の場合:
I_MPI_PIN_DOMAIN=2 I_MPI_PIN_ORDER=compact
図 3.2-9 Compact オーダーの例
128
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル

scatter の場合:
I_MPI_PIN_DOMAIN=2 I_MPI_PIN_ORDER=scatter
図 3.2-10 Scatter オーダーの例
129
チューニング・リファレンス

spread の場合:
I_MPI_PIN_DOMAIN=2 I_MPI_PIN_ORDER=spread
図 3.2-11 Spread オーダーの例
130
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル

bunch の場合:
I_MPI_PIN_DOMAIN=2 I_MPI_PIN_ORDER=bunch
図 3.2-12 Bunch オーダーの例
3.3. ファブリック制御
ここでは、以下のファブリックを制御するため環境変数をどのように使用するか説明します。
•
•
•
•
•
•
•
•
通信ファブリック
共有メモリー・ファブリック
DAPL ネットワーク・ファブリック
DAPL UD ネットワーク・ファブリック
TCP ネットワーク・ファブリック
TMI ネットワーク・ファブリック
OFA* ネットワーク・ファブリック
OFI ネットワーク・ファブリック
3.3.1. 通信ファブリック制御
I_MPI_FABRICS (I_MPI_DEVICE)
特定のファブリックを選択します。
131
チューニング・リファレンス
構文
I_MPI_FABRICS=<fabric>|<intra-node fabric>:<inter-nodes fabric>
<fabric> := {shm, dapl, tcp, tmi, ofa, ofi}
<intra-node fabric> := {shm, dapl, tcp, tmi, ofa, ofi}
<inter-nodes fabric>:= {dapl, tcp, tmi, ofa, ofi}
廃止された構文
I_MPI_DEVICE=<device>[:<provider>]
引数
<fabric>
shm
dapl
tcp
tmi
ofa
ofi
I_MPI_DEVICE に対応
ネットワーク・ファブリックを定義します。
共有メモリー。
InfiniBand*、iWarp*、Dolphin* や XPMEM* (DAPL* を介して) などの
DAPL ネットワーク・ファブリック。
イーサーネットや InfiniBand* (IPoIB* を介して) のような TCP/IP ネット
ワーク・ファブリック。
インテル® True Scale や Myrinet* (タグマッチ・インターフェイスを介
して) を含む、TMI ネットワーク・ファブリック。
InfiniBand* (OFED* を介して) を含む OFA ネットワーク・ファブリッ
ク。
インテル® True Scale ファブリックと TCP (OFI* API を介した) を含む
OFI (OpenFabrics Interfaces*) ネットワーク・ファブリック。
<device>
<fabric>
sock
tcp
shm
shm
ssm
shm:tcp
rdma
dapl
rdssm
shm:dapl
<provider>
オプションの DAPL* プロバイダー名 (rdma と rdssm)。
I_MPI_DAPL_PROVIDER=<provider> または
I_MPI_DAPL_UD_PROVIDER=<provider>
{rdma,rdssm} デバイス向けにのみ <provider> 指定を使用します。
例えば、winOFED* InfiniBand* デバイスを選択するには、次のコマンドを使用します。
$ mpiexec -n <# of processes> \
-env I_MPI_DEVICE rdssm:OpenIB-cma <executable>
132
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
これらのデバイスは、<provider> が指定されていない場合、/etc/dat.conf ファイルの最初の DAPL* プロ
バイダーが使用されます。
説明
特定のファブリックを選択するため、この環境変数を設定します。要求するファブリックが利用できない場合、
インテル® MPI ライブラリーはほかのファブリックにフォールバックします。詳細については、
「I_MPI_FALLBACK」を参照してください。I_MPI_FABRICS 環境変数が定義されていない場合、インテル®
MPI ライブラリーは、最も適切なファブリックの組み合わせを自動的に選択します。
ファブリックの実際の組み合わせは、ノードごとに開始されたプロセス数によって異なります。
•
•
•
1 つのノードですべてのプロセスが開始された場合、ライブラリーは shm ノード内通信を使用します。
開始されたプロセス数が利用可能なノード数以下の場合、ライブラリーは、ノード間通信にファブ
リック・リストから利用可能な最初のファブリックを選択します。
例えば、ライブラリーは、ノード内通信に shm を使用し、ノード間通信にファブリック・リストの最
初の利用可能なファブリックを使用します。詳細については、「I_MPI_FABRICS_LIST」をご覧くださ
い。
shm ファブリックは、インテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、
インテル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
注意
選択されたファブリックの組み合わせでジョブが実行されることは保証されますが、その組み合わせがクラス
ター構成の最高のパフォーマンスを提供するとは限りません。
例えば、ファブリックに共有メモリーを選択するには、次のコマンドを使用します。
$ mpirun -n <# of processes> -env I_MPI_FABRICS shm <executable>
ファブリック通信に共有メモリーと DAPL ネットワーク・ファブリックを使用するには、次のコマンドを使用
します。
$ mpirun -n <# of processes> -env I_MPI_FABRICS shm:dapl <executable>
インテル® MPI ライブラリーが適切なファブリック通信を自動選択するようにするには、次のコマンドを使用し
ます。
$ mpirun -n <# of procs> -perhost <# of procs per host> <executable>
デバッグ情報のレベルに 2 以上を設定すると、初期化されたファブリックをチェックできます。
詳細については、「I_MPI_DEBUG」をご覧ください。次に例を示します。
[0] MPI startup(): shm and dapl data transfer modes
または
[0] MPI startup(): tcp data transfer mode
I_MPI_FABRICS_LIST
ファブリック・リストを定義します。
構文
I_MPI_FABRICS_LIST=<fabrics list>
ここで、<fabrics list>:= <fabric>,...,<fabric> は次のとおりです。
<fabric> := {dapl, tcp, tmi, ofa, ofi}
133
チューニング・リファレンス
引数
<fabrics list>
dapl,ofa,tcp,tmi,ofi
dapl,tcp,ofa,tmi,ofi
tmi,dapl,tcp,ofa,ofi
説明
ファブリックのリストを指定します。
これは、デフォルト値です。
I_MPI_WAIT_MODE=enable に設定した場合、これはデフォルト値
です。
これは、インテル® True Scale ファブリックを持ち、それ以外のイン
ターコネクト・カードを持たない場合のデフォルトです。ホストが複
数の HCA タイプを持つ場合、これは適用されません。
この環境変数を設定して、ファブリックのリストを定義します。ライブラリーは、自動的に適切なファブリッ
クの組み合わせを選択するため、ファブリック・リストを使用します。ファブリックの組み合わせに関する詳
細は、「I_MPI_FABRICS」をご覧ください。
例えば、I_MPI_FABRICS_LIST=dapl,tcp が設定され、I_MPI_FABRICS が定義されていない場合、DAPL
ネットワーク・ファブリックの初期化に失敗すると、ライブラリーは TCP ネットワーク・ファブリックに
フォールバックします。フォールバックに関する詳細は、「I_MPI_FALLBACK」をご覧ください。
I_MPI_FALLBACK (I_MPI_FALLBACK_DEVICE)
最初に利用可能なファブリックへのフォールバックドを有効にするには、この環境変数を設定します。
構文
I_MPI_FALLBACK=<arg>
廃止された構文
I_MPI_FALLBACK_DEVICE=<arg>
引数
<arg>
enable| yes| on|1
disable | no | off | 0
説明
バイナリー・インジケーター。
最初に利用可能なファブリックにフォールバックします。これは、
I_MPI_FABRICS (I_MPI_DEVICE) 環境変数が定義されていない場
合のデフォルトです。
MPI は、I_MPI_FABRICS 環境変数で選択されているファブリック
の 1 つの初期化に失敗すると、ジョブを強制終了します。これは、
I_MPI_FABRICS (I_MPI_DEVICE) 環境変数が定義されていない場
合のデフォルトです。
最初に利用可能なファブリックへのフォールバックドを制御するには、この環境変数を設定します。
I_MPI_FALLBACK 環境変数が enable に設定され、指定されたファブリックの初期化に失敗すると、ライブ
ラリーはファブリック・リストを参照し、最初に利用可能なファブリックを使用します。詳細については、
「I_MPI_FABRICS_LIST」をご覧ください。
I_MPI_FALLBACK 環境変数が disable に設定され、指定されたファブリックの初期化に失敗すると、ライブ
ラリーは MPI ジョブを強制終了します。
134
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
I_MPI_FABRICS を設定し I_MPI_FALLBACK=enable にすると、ライブラリーはファブリック・リストの最
上位の番号のファブリックへフォールバックします。例えば、I_MPI_FABRICS=dapl、
I_MPI_FABRICS_LIST=dapl,tcp、I_MPI_FALLBACK=enable が設定されると、DAPL ネットワーク・
ファブリックの初期化に失敗すると、ライブラリーは TCP ネットワーク・ファブリックにフォールバックしま
す。
I_MPI_LARGE_SCALE_THRESHOLD
スケーラブルな最適化を有効にするしきい値を変更します。
構文
I_MPI_LARGE_SCALE_THRESHOLD=<arg>
引数
<nprocs>
スケールのしきい値を定義します。
デフォルト値は 4096 です。
> 0
説明
この環境変数は、DAPL UD IB 拡張が自動的に有効になっている場合、プロセス数を定義します。
I_MPI_EAGER_THRESHOLD
すべてのデバイスの eager/rendezvous メッセージサイズのしきい値を変更します。
構文
I_MPI_EAGER_THRESHOLD=<nbytes>
引数
<nbytes>
> 0
説明
eager/rendezvous メッセージサイズのしきい値を設定します。
デフォルトの <nbytes> 値は、262144 バイトです。
この環境変数は、ポイントツーポイント通信に使用されるプロトコルを制御します。
•
•
メッセージが、<nbytes> 以下の場合、eager プロトコルが使用されます。
メッセージが、<nbytes> より長い場合、rendezvous プロトコルが使用されます。rendezvous プロ
トコルは、メモリーを効率良く使用します。
I_MPI_INTRANODE_EAGER_THRESHOLD
ノード内通信の eager/rendezvous メッセージサイズのしきい値を変更します。
構文
I_MPI_INTRANODE_EAGER_THRESHOLD=<nbytes>
135
チューニング・リファレンス
引数
<nbytes>
ノード内通信の eager/rendezvous メッセージサイズのしきい値を設
定します。
すべてのファブリックのデフォルトの <nbytes> 値は、262144 バ
イトです。shm の場合、カットオーバー・ポイントは、
I_MPI_SHM_CELL_SIZE 環境変数の値と等しくなります。
> 0
説明
この環境変数は、ノード内での通信に使用されるプロトコルを変更します。
•
•
メッセージが、<nbytes> 以下の場合、eager プロトコルが使用されます。
メッセージが、<nbytes> より長い場合、rendezvous プロトコルが使用されます。rendezvous プロ
トコルは、メモリーを効率良く使用します。
I_MPI_INTRANODE_EAGER_THRESHOLD が設定されていない場合、I_MPI_EAGER_THRESHOLD の値が使用さ
れます。
I_MPI_SPIN_COUNT
スピンカウント値を制御します。
構文
I_MPI_SPIN_COUNT=<scount>
引数
<scount>
> 0
説明
ファブリックをポーリングする際のループのスピンカウントを定義し
ます。
プロセッサー/コアごとに複数のプロセスが実行されている場合、デ
フォルトの <scount> は 1 です。それ以外のデフォルトは、250 に
なります。最大値は、2147483647 です。
スピンカウントの上限を設定します。処理するメッセージを受信していない場合、ライブラリーがプロセスを
開放する前にファブリックのポーリングに、<scount> で指定される回数だけループします。それぞれのスピ
ンループ内で、shm ファブリック (有効であれば) は、I_MPI_SHM_SPIN_COUNT 回だけ余分にポーリングしま
す。<scount> に小さな値を設定すると、インテル® MPI ライブラリーは頻繁にプロセッサーを開放します。
アプリケーションのパフォーマンスをチューニングするには、I_MPI_SPIN_COUNT 環境変数を使用します。
<scount> の最適な値の選択は、経験に依存します。それは、計算環境やアプリケーションに依存します。
I_MPI_SCALABLE_OPTIMIZATION
ネットワーク・ファブリック通信のスケーラブルな最適化を on/off にします。
構文
I_MPI_SCALABLE_OPTIMIZATION=<arg>
136
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
ネットワーク・ファブリック通信のスケーラブルな最適化を on にし
ます。これは、16 プロセッサー以上のデフォルトです。
ネットワーク・ファブリック通信のスケーラブルな最適化を off に
します。これは、16 プロセッサー以下のデフォルトです。
ネットワーク・ファブリック通信のスケーラブルな最適化を有効にするには、この環境変数を設定します。多
くの場合、最適化を使用するとレイテンシーが増え、大規模なプロセスではバンド幅が増加します。
I_MPI_WAIT_MODE
待機モードを on/off にします。
構文
I_MPI_WAIT_MODE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
待機モードを on にします。
待機モードを off にします。これはデフォルトです。
説明
待機モードを制御するには、この環境変数を設定します。このモードを有効にすると、プロセスはファブリッ
クをポーリングすることなくメッセージの受信を待ちます。このモードは、ほかのタスクに CPU 時間を温存で
きます。
shm 通信には、ネイティブ POSIX* スレッド・ライブラリーを待機モードで使用します。
注意
次のコマンドを使用して、インストールされているスレッド・ライブラリーのバージョンを確認できます。
$ getconf GNU_LIBPTHREAD_VERSION
I_MPI_DYNAMIC_CONNECTION (I_MPI_USE_DYNAMIC_CONNECTIONS)
ダイナミック接続確立を制御します。
構文
I_MPI_DYNAMIC_CONNECTION=<arg>
廃止された構文
I_MPI_USE_DYNAMIC_CONNECTIONS=<arg>
137
チューニング・リファレンス
引数
バイナリー・インジケーター。
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
ダイナミック接続確立を on にします。これは、64 プロセッサー以
上のデフォルトです。
ダイナミック接続確立を off にします。これは、64 プロセッサー未
満のデフォルトです。
ダイナミック接続確立を制御するには、この環境変数を設定します。
•
•
このモードが有効な場合、すべての接続は各プロセスのペア間で最初の通信時に確立されます。
このモードが無効な場合、すべての接続は事前に確立されます。
デフォルトの値は、MPI ジョブのプロセス数に依存します。ダイナミック接続確立は、プロセス数が 64 未満の
場合 off です。
3.3.2. 共有メモリー制御
I_MPI_SHM_CACHE_BYPASS (I_MPI_CACHE_BYPASS)
共有メモリー向けのメッセージ転送のアルゴリズムを制御します。
構文
I_MPI_SHM_CACHE_BYPASS=<arg>
廃止された構文
I_MPI_CACHE_BYPASS=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
メッセージ転送バイパスキャッシュを有効にします。これは、デ
フォルト値です。
メッセージ転送バイパスキャッシュを無効にします。
共有メモリー向けのメッセージ転送のバイパスキャッシュを有効/無効にするには、この環境変数を設定します。
この機能を有効にすると、MPI はバイパスキャッシュを介して、I_MPI_SHM_CACHE_BYPASS_THRESHOLD 環
境変数に設定される値と同じか、大きなサイズのメッセージを送信します。この機能は、デフォルトで有効に
なっています。
I_MPI_SHM_CACHE_BYPASS_THRESHOLDS (I_MPI_CACHE_BYPASS_THRESHOLDS)
メッセージコピーのアルゴリズムのしきい値を設定します。
構文
I_MPI_SHM_CACHE_BYPASS_THRESHOLDS=<nb_send>,<nb_recv>[,<nb_send_pk>,<nb_recv_pk>]
廃止された構文
I_MPI_CACHE_BYPASS_THRESHOLDS=<nb_send>,<nb_recv>[,<nb_send_pk>,<nb_recv_pk>]
138
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<nb_send>
次の状況で送信するメッセージのしきい値を設定します。
•
•
<nb_recv>
•
<nb_recv_pk>
説明
プロセスはピニングされていない
次の状況で受信するメッセージのしきい値を設定します。
•
<nb_send_pk>
プロセスは、同じ物理プロセッサー・パッケージ内にないコア
にピニングされている
プロセスは、同じ物理プロセッサー・パッケージ内にないコア
にピニングされている
プロセスはピニングされていない
プロセスが、同じ物理プロセッサー・パッケージ内のコアにピニング
されている場合に、送信するメッセージのしきい値を設定します。
プロセスが、同じ物理プロセッサー・パッケージ内のコアにピニング
されている場合に、受信するメッセージのしきい値を設定します。
メッセージコピーのアルゴリズムのしきい値を制御するには、この環境変数を設定します。インテル® MPI ライ
ブラリーは、異なるメモリー階層レベルで動作するように最適化されたメッセージコピーの実装を使用します。
インテル® MPI ライブラリーは、離れたメモリーアクセスに最適化されたコピー・アルゴリズムを使用して、定
義されたしきい値以上のサイズのメッセージをコピーします。-1 を設定すると、これらのアルゴリズムの使用
を無効にします。デフォルトの値は、アーキテクチャーとインテル® MPI ライブラリーのバージョンに依存しま
す。この環境変数は、I_MPI_SHM_CACHE_BYPASS が有効なときにのみ効果があります。
この環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテ
ル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
I_MPI_SHM_FBOX
共有メモリーのファストボックスを制御します。
構文
I_MPI_SHM_FBOX=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
ファストボックスの利用を on にします。これは、デフォルト値で
す。
ファストボックスの利用を off にします。
ファストボックスを制御するには、この環境変数を設定します。同一ノード上の MPI プロセスのペアは、
eager メッセージを送受信するため 2 つの共有メモリー・ファストボックスの持っています。
アプリケーションが、ブロック化されていない短いメッセージを大量に転送する場合、メッセージ同期のオー
バーヘッドを避けるためファストボックスの利用を off にします。
139
チューニング・リファレンス
I_MPI_SHM_FBOX_SIZE
共有メモリーのファストボックスのサイズを設定します。
構文
I_MPI_SHM_FBOX_SIZE=<nbytes>
引数
<nbytes>
> 0
説明
共有メモリーのファストボックスのサイズをバイト単位で指定しま
す。
デフォルトの <nbytes> は、プラットフォームに依存します。値の
範囲は、一般的に 8K から 64K です。
共有メモリー・ファストボックスのサイズを定義するには、この環境変数を設定します。
I_MPI_SHM_CELL_NUM
共有メモリー受信キューのセル数を変更するには、この環境変数を設定します。
構文
I_MPI_SHM_CELL_NUM=<num>
引数
<num>
> 0
説明
共有メモリーセルの数。
デフォルト値は 128 です。
共有メモリー受信キューのセル数を定義するには、この環境変数を設定します。各 MPI プロセスは、ほかのプ
ロセスが eager メッセージを送信できる独自の共有メモリー受信キューを持っています。共有メモリー・ファ
ストボックスがほかの MPI 要求でブロックされると、このキューが使用されます。
I_MPI_SHM_CELL_SIZE
共有メモリーセルのサイズを変更します。
構文
I_MPI_SHM_CELL_SIZE=<nbytes>
引数
<nbytes>
> 0
説明
共有メモリーセルのサイズをバイト単位で指定します。
デフォルトの <nbytes> は、プラットフォームに依存します。値の
範囲は、一般的に 8K から 64K です。
共有メモリーセルのサイズを定義するにはこの環境変数を設定します。
この環境変数を設定すると、I_MPI_INTRANODE_EAGER_THRESHOLD も同時に変更され、設定された値に等
しくなります。
140
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_SHM_LMT
共有メモリー向けのラージメッセージ転送 (LMT) のメカニズムを制御します。
構文
I_MPI_SHM_LMT=<arg>
引数
バイナリー・インジケーター。
<arg>
共有メモリーコピー LMT メカニズムを on にします。
shm
direct
disable | no | off | 0
説明
直接コピー LMT メカニズムを on にします。これは、デフォルト値で
す。
LMT メカニズムを off にします。
ラージメッセージ転送 (LMT) の使用法を制御するには、この環境変数を設定します。rendezvous メッセージを
転送するには、次のどちらかの方法で LMT メカニズムを使用します。
•
•
メッセージを送信するため、中間共有メモリーキューを使用します。
Linux* カーネルのバージョンが、クロスメモリーアタッチ (CMA) 機能をサポートする 3.2 以降の場合、
中間バッファーなしでメッセージをコピーする直接コピーメカニズムを使用します。
I_MPI_SHM_LMT 環境変数を direct に設定し、オペレーティング・システムが CMA をサポートしていない
場合、shm LTM メカニズムが使用されます。
I_MPI_SHM_LMT_BUFFER_NUM (I_MPI_SHM_NUM_BUFFERS)
ラージメッセージ転送 (LMT) メカニズム向けの共有メモリーバッファーの数を変更します。
構文
I_MPI_SHM_LMT_BUFFER_NUM=<num>
廃止された構文
I_MPI_SHM_NUM_BUFFERS=<num>
引数
<num>
> 0
説明
プロセスの各ペア向けの共有メモリーバッファーの数。
デフォルト値は 8 です。
ペアの各プロセッサー間の共有メモリーバッファー数を定義するには、この環境変数を設定します。
I_MPI_SHM_LMT_BUFFER_SIZE (I_MPI_SHM_BUFFER_SIZE)
LMT メカニズム向けの共有メモリーバッファーのサイズを制御します。
構文
I_MPI_SHM_LMT_BUFFER_SIZE=<nbytes>
141
チューニング・リファレンス
廃止された構文
I_MPI_SHM_BUFFER_SIZE=<nbytes>
引数
<nbytes>
> 0
説明
共有メモリーバッファーのサイズをバイト単位で指定します。
デフォルトの <nbytes> 値は、32768 バイトです。
ペアの各プロセッサー間の共有メモリーバッファーのサイズを定義するには、この環境変数を設定します。
I_MPI_SSHM
スケーラブルな共有メモリーメカニズムを制御します。
構文
I_MPI_SSHM =<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
このメカニズムを on にします。
このメカニズムを off にします。これは、デフォルト値です。
代替共有メモリーメカニズムの使用法を制御するには、この環境変数を設定します。このメカニズムは、共有
メモリー・ファストボックス、受信キュー、および LMT メカニズムを置き換えます。
この環境変数を設定すると、I_MPI_INTRANODE_EAGER_THRESHOLD 環境変数も変更され、262,144 バイト
に等しくなります。
I_MPI_SSHM_BUFFER_NUM
代替共有メモリー向けの共有メモリーバッファー数を制御します。
構文
I_MPI_SSHM_BUFFER_NUM=<num>
引数
<num>
> 0
説明
プロセスの各ペア向けの共有メモリーバッファーの数。
デフォルト値は 4 です。
ペアの各プロセッサー間の共有メモリーバッファー数を定義するには、この環境変数を設定します。
142
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_SSHM_LMT_BUFFER_SIZE
代替共有メモリー向けの共有メモリーバッファーのサイズを制御します。
構文
I_MPI_SSHM_BUFFER_SIZE=<nbytes>
引数
<nbytes>
共有メモリーバッファーのサイズをバイト単位で指定します。
デフォルトの <nbytes> は、プラットフォームに依存します。値の
範囲は、一般的に 8K から 64K です。
> 0
説明
ペアの各プロセッサー間の共有メモリーバッファーのサイズを定義するには、この環境変数を設定します。
I_MPI_SSHM_DYNAMIC_CONNECTION
代替の共有メモリーメカニズム向けのダイナミック接続確立を制御します。
構文
I_MPI_SSHM_DYNAMIC_CONNECTION=<arg>
引数
バイナリー・インジケーター。
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
ダイナミック接続確立を on にします。
ダイナミック接続確立を off にします。これは、デフォルト値で
す。
ダイナミック接続確立を制御するには、この環境変数を設定します。
•
•
このモードが有効な場合、すべての接続は各プロセスのペア間で最初の通信時に確立されます。
このモードが無効な場合、すべての接続は事前に確立されます。
I_MPI_SHM_BYPASS
(I_MPI_INTRANODE_SHMEM_BYPASS、I_MPI_USE_DAPL_INTRANODE)
shm によるネットワーク・ファブリックを介したノード内通信モードを on/off にします。
構文
I_MPI_SHM_BYPASS=<arg>
廃止された構文
I_MPI_INTRANODE_SHMEM_BYPASS=<arg>
I_MPI_USE_DAPL_INTRANODE=<arg>
143
チューニング・リファレンス
引数
バイナリー・インジケーター。
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
ネットワーク・ファブリックを介したノード内通信モードを on にし
ます。
ネットワーク・ファブリックを介したノード内通信モードを off に
します。これはデフォルトです。
この環境変数は、ノード内での通信モードを設定します。ネットワーク・ファブリックを介してノード内の通
信モードが有効にされている場合、データ転送メカニズムは次のスキームに従って選択されます。
•
•
注意
メッセージのサイズが、I_MPI_INTRANODE_EAGER_THRESHOLD 環境変数に設定されるしきい値以
下の場合、共有メモリーを使用して転送されます。
メッセージが、I_MPI_INTRANODE_EAGER_THRESHOLD 環境変数に設定されるしきい値より大きい
場合、ネットワーク・ファブリック・レイヤーを使用して転送されます。
この環境変数は、共有メモリーを有効にし、I_MPI_FABRICS 環境変数をデフォルトもしくは shm:<fabric>
に設定するか、I_MPI_DEVICE 環境変数を同様に設定することでネットワーク・ファブリックが指定される場
合にのみ有効になります。このモードは、dapl と tcp ファブリックでのみ利用できます。
I_MPI_SHM_SPIN_COUNT
共有メモリーファブリック向けのスピンカウントを制御します。
構文
I_MPI_SHM_SPIN_COUNT=<shm_scount>
引数
<scount>
> 0
shm ファブリックをポーリングする際の、ループのスピンカウントを
定義します。
ノード間通信に tcp ファブリックを使用する場合、デフォルトの
<shm_scount> 値は 100 スピンルールと等価です。
ノード間通信に ofa、tmi、ofi、または dapl ファブリックを使用
する場合、デフォルトの <shm_scount> 値は 10 スピンルールと等
価です。
説明
デフォルト値は、2147483647 と等価です。
ポーリングの頻度を高めるため、共有メモリー・ファブリックのスピンカウントの上限を設定します。この構
成は、制御が全体のネットワーク・ファブリックのポーリングメカニズムに渡される前に、shm ファブリック
のポーリングを <shm_scount> 回許可します。
アプリケーションのパフォーマンスをチューニングするには、I_MPI_SHM_SPIN_COUNT 環境変数を使用しま
す。<shm_scount> の最適な値の選択は、経験に依存します。これは、アプリケーションと計算環境に大きく
依存します。アプリケーションがメッセージパッシングにトポロジー的なアルゴリズムを使用する場合、
<shm_scount> の値を大きくすることでマルチコア・プラットフォームに利点があります。
144
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
3.3.3. DAPL ネットワーク・ファブリック制御
I_MPI_DAPL_PROVIDER
ロードする DAPL プロバイダーを定義します。
構文
I_MPI_DAPL_PROVIDER=<name>
引数
<name>
説明
ロードする DAPL プロバイダーの名前を定義します。
ロードする DAPL プロバイダーの名前を定義するには、この環境変数を設定します。この名前は、dat.conf
設定ファイルでも定義されています。
I_MPI_DAT_LIBRARY
DAPL* プロバイダーで使用する DAT ライブラリーを選択します。
構文
I_MPI_DAT_LIBRARY=<library>
引数
<library>
説明
DAPL* プロバイダーで使用する DAT ライブラリーを指定します。デ
フォルト値は、DAPL* 1.2 プロバイダーには libdat.so または
libdat.so.1、DAPL* 2.0 プロバイダーには libdat2.so または
libdat2.so.2 です。
DAPL プロバイダーで使用する特定の DAT ライブラリーを選択するには、この環境変数を設定します。ライブ
ラリーが、ダイナミック・ローダーの検索パスに配置されていない場合、DAT ライブラリーへのフルパスを指
定します。この環境変数は、DAPL と DAPL UD ファブリックにのみ有効です。
I_MPI_DAPL_TRANSLATION_CACHE (I_MPI_RDMA_TRANSLATION_CACHE)
DAPL パスのメモリー登録キャッシュを on/off にします。
構文
I_MPI_DAPL_TRANSLATION_CACHE=<arg>
廃止された構文
I_MPI_RDMA_TRANSLATION_CACHE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
メモリー登録キャッシュを on にします。これはデフォルトです。
メモリー登録キャッシュを off にします。
145
チューニング・リファレンス
説明
DAPL パスのメモリー登録キャッシュを on/off にするため、この環境変数を使用します。
キャッシュはパフォーマンスを大幅に向上しますが、特定の状況で正当性の問題を引き起こす可能性がありま
す。詳細については、製品のリリースノートをご覧ください。
I_MPI_DAPL_TRANSLATION_CACHE_AVL_TREE
DAPL パスの RDMA 変換キャッシュの AVL tree ベースの実装を有効/無効にします。
構文
I_MPI_DAPL_TRANSLATION_CACHE_AVL_TREE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
AVL tree ベースの RDMA 変換キャッシュを on にします。
AVL tree ベースの RDMA 変換キャッシュを off にします。これは、
デフォルト値です。
この環境変数を設定して、OFA パスの RDMA 変換キャッシュの AVL tree ベースの実装を有効にします。RDMA
変換キャッシュが 10,000 を超える要素を処理する場合、AVL tree ベースの RDMA 変換キャッシュの方がデ
フォルト実装より高速です。
I_MPI_DAPL_DIRECT_COPY_THRESHOLD
(I_MPI_RDMA_EAGER_THRESHOLD、RDMA_IBA_EAGER_THRESHOLD)
DAPL 直接コピープロトコルのしきい値を変更します。
構文
I_MPI_DAPL_DIRECT_COPY_THRESHOLD=<nbytes>
廃止された構文
I_MPI_RDMA_EAGER_THRESHOLD=<nbytes>
RDMA_IBA_EAGER_THRESHOLD=<nbytes>
引数
<nbytes>
> 0
説明
DAPL 直接コピープロトコルのしきい値を定義します。
デフォルトの <nbytes> は、プラットフォームに依存します。
DAPL 直接コピープロトコルのしきい値を制御するため、この環境変数を設定します。DAPL ネットワーク・
ファブリック向けのデータ転送アルゴリズムは、次のスキームに従って選択されます。
•
•
メッセージが <nbytes> 以下の場合、内部事前登録バッファーを介して eager プロトコルを使用して
送信します。このアプローチは、ショートメッセージでは高速です。
メッセージが、<nbytes> より長い場合、直接コピープロトコルが使用されます。これはバッファー
を使用しませんが、送信側と受信側でメモリーの登録が必要です。このアプローチは、ラージメッ
セージでは高速です。
146
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
この環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル
製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
注意
インテル® Xeon Phi™ コプロセッサー向けの等価な変数は、I_MIC_MPI_DAPL_DIRECT_COPY_THRESHOLD で
す。
I_MPI_DAPL_EAGER_MESSAGE_AGGREGATION
MPI の送信要求を延期するため、連結を使用して制御します。延期された MPI 送信要求は、すぐに送信できま
せん。
構文
I_MPI_DAPL_EAGER_MESSAGE_AGGREGATION=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
MPI の送信要求を延期するため連結を有効にします。
MPI の送信要求を延期するため連結を無効にします。これは、デフォ
ルト値です。
同じ MPI ランクへの MPI 送信要求を延期するため連結を使用するには、この環境変数を設定します。このモー
ドは、特定の状況でアプリケーションのパフォーマンスを改善します。例えば、次のように MPI_Isend() が
短いメッセージを同じランクに送信する場合にパフォーマンスが向上します。
for( i = 0; i< NMSG; i++)
{ret = MPI_Isend( sbuf[i], MSG_SIZE, datatype, dest , tag, \
comm, &req_send[i]);
}
I_MPI_DAPL_DYNAMIC_CONNECTION_MODE
(I_MPI_DYNAMIC_CONNECTION_MODE、I_MPI_DYNAMIC_CONNECTIONS_MODE)
DAPL* 接続を確立するアルゴリズムを選択します。
構文
I_MPI_DAPL_DYNAMIC_CONNECTION_MODE=<arg>
廃止された構文
I_MPI_DYNAMIC_CONNECTION_MODE=<arg>
I_MPI_DYNAMIC_CONNECTIONS_MODE=<arg>
引数
<arg>
reject
disconnect
モードセレクター。
2 つの同時接続要求の一方を拒否します。これはデフォルトです。
2 つの接続が確立された後、一方の同時接続要求を拒否します。
147
チューニング・リファレンス
説明
次のスキームに従って、DAPL 対応ファブリックの動的に確立された接続を制御するには、この環境変数を設
定します。
•
•
reject モードでは、2 つのプロセスが同時に接続を開始すると、一方の要求が拒否されます。
disconnect モードでは、両方の接続が確立されますが、その後一方が切断されます。このモードは、
特定の DAPL* プロバイダーのバグを回避するため設けられています。
I_MPI_DAPL_SCALABLE_PROGRESS (I_MPI_RDMA_SCALABLE_PROGRESS)
DAPL 読み込み向けのスケーラブルなアルゴリズムを on/off にします。
構文
I_MPI_DAPL_SCALABLE_PROGRESS=<arg>
廃止された構文
I_MPI_RDMA_SCALABLE_PROGRESS=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
スケーラブルなアルゴリズムを on にします。プロセス数が 128 より
多い場合、これがデフォルトになります。
スケーラブルなアルゴリズムを off にします。プロセス数が 128 以
下の場合、これがデフォルトになります
DAPL 読み込みのスケーラブルな最適化を有効にするには、この環境変数を設定します。特定の状況では、こ
れはシステムと多くのプロセスの利点を生かすことが可能です。
I_MPI_DAPL_BUFFER_NUM (I_MPI_RDMA_BUFFER_NUM、NUM_RDMA_BUFFER)
DAPL パスの各プロセスのペア向けに、内部的に事前登録バッファーの数を変更します。
構文
I_MPI_DAPL_BUFFER_NUM=<nbuf>
廃止された構文
I_MPI_RDMA_BUFFER_NUM=<nbuf>
NUM_RDMA_BUFFER=<nbuf>
引数
<nbuf>
> 0
説明
プロセスグループの各ペア向けにバッファー数を定義します。
デフォルト値は、プラットフォームに依存します。
DAPL パスの各プロセスのペア向けに、内部的に事前登録バッファーの数を変更するには、この環境変数を設
定します。
148
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
事前登録バッファーの数が増えると、それぞれ確立された接続ごとのメモリー使用量は増加します。
I_MPI_DAPL_BUFFER_SIZE
(I_MPI_RDMA_BUFFER_SIZE、I_MPI_RDMA_VBUF_TOTAL_SIZE)
DAPL パスの各プロセスのペア向けに、内部的に事前登録バッファーのサイズを変更します。
構文
I_MPI_DAPL_BUFFER_SIZE=<nbytes>
廃止された構文
I_MPI_RDMA_BUFFER_SIZE=<nbytes>
I_MPI_RDMA_VBUF_TOTAL_SIZE=<nbytes>
引数
<nbytes>
> 0
説明
事前定義バッファーのサイズを定義します。
デフォルト値は、プラットフォームに依存します。
DAPL パスの各プロセスのペア向けに、内部的に事前登録バッファーのサイズを変更するには、この環境変数
を設定します。実際のサイズは、<nbytes> を最適値にバッファーをアライメントすることによって求められ
ます。
I_MPI_DAPL_RNDV_BUFFER_ALIGNMENT
(I_MPI_RDMA_RNDV_BUFFER_ALIGNMENT、I_MPI_RDMA_RNDV_BUF_ALIGN)
DAPL 直接コピー転送向けのバッファー送信アルゴリズムを定義します。
構文
I_MPI_DAPL_RNDV_BUFFER_ALIGNMENT=<arg>
廃止された構文
I_MPI_RDMA_RNDV_BUFFER_ALIGNMENT=<arg>
I_MPI_RDMA_RNDV_BUF_ALIGN=<arg>
引数
<arg>
> 0 かつ 2 の累乗
バッファーを送信するアルゴリズムを定義します。
デフォルト値は 64 です。
DAPL 直接コピー転送向けのバッファー送信アルゴリズムを定義するため、この環境変数を設定します。DAPL
操作で指定されるバッファーが適切にアライメントされている場合、データ転送のバンド幅は高まります。
149
チューニング・リファレンス
I_MPI_DAPL_RDMA_RNDV_WRITE
(I_MPI_RDMA_RNDV_WRITE、I_MPI_USE_RENDEZVOUS_RDMA_WRITE)
DAPL パスで RDMA 書き込みベースの rendezvous 直接コピープロトコルを on/off します。
構文
I_MPI_DAPL_RDMA_RNDV_WRITE=<arg>
廃止された構文
I_MPI_RDMA_RNDV_WRITE=<arg>
I_MPI_USE_RENDEZVOUS_RDMA_WRITE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
RDMA 書き込みベースンの rendezvous 直接コピープロトコルを on
にします。
RDMA 書き込みベースの rendezvous 直接コピープロトコルを off に
します。
DAPL パスで RDMA 書き込みベースの rendezvous 直接コピープロトコルを選択するため、この環境変数を設
定します。DAPL* プロバイダーによっては、特定のプラットフォーム向けに低速の RDMA 読み込みが実装され
ます。
その場合、RDMA 書き込み操作で rendezvous 直接コピープロトコルに切り替えると、パフォーマンスを向上
できます。
デフォルト値は、DAPL プロバイダーの属性に依存します。
I_MPI_DAPL_CHECK_MAX_RDMA_SIZE (I_MPI_RDMA_CHECK_MAX_RDMA_SIZE)
DAPL 属性、max_rdma_size の値をチェックします。
構文
I_MPI_DAPL_CHECK_MAX_RDMA_SIZE=<arg>
廃止された構文
I_MPI_RDMA_CHECK_MAX_RDMA_SIZE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
DAPL 属性、max_rdma_size の値をチェックします。
DAPL 属性、max_rdma_size の値をチェックしません。これは、デ
フォルト値です。
150
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
以下のスキームに従ってメッセージの断片化を制御するには、この環境変数を設定します。
•
•
このモードが有効な場合、インテル® ライブラリーは DAPL 属性 max_rdma_size の値よりも大きな
メッセージを断片化します。
このモードが無効な場合、インテル® ライブラリーはメッセージの断片化のため DAPL 属性
max_rdma_size の値を考慮しません。
I_MPI_DAPL_MAX_MSG_SIZE (I_MPI_RDMA_MAX_MSG_SIZE)
メッセージの断片化のしきい値を制御します。
構文
I_MPI_DAPL_MAX_MSG_SIZE=<nbytes>
廃止された構文
I_MPI_RDMA_MAX_MSG_SIZE=<nbytes>
引数
<nbytes>
断片化なしで DAPL を介して送信できる最大メッセージサイズを定義
します。
I_MPI_DAPL_CHECK_MAX_RDMA_SIZE 環境変数が有効に設定され
ていると、デフォルトの <nbytes> の値は DAPL 属性
max_rdma_size と等しくなります。それ以外のデフォルト値は
MAX_INT です。
> 0
説明
以下のスキームに従ってメッセージの断片化サイズを制御するには、この環境変数を設定します。
•
•
I_MPI_DAPL_CHECK_MAX_RDMA_SIZE 環境変数が無効に設定されていると、インテル® MPI ライブ
ラリーはサイズが <nbytes> より大きいメッセージを断片化します。
I_MPI_DAPL_CHECK_MAX_RDMA_SIZE 環境変数が有効に設定されていると、インテル® MPI ライブ
ラリーはサイズが <nbytes> の最小値と DAPL 属性 max_rdma_size より大きいメッセージを断片化
します。
I_MPI_DAPL_CONN_EVD_SIZE
(I_MPI_RDMA_CONN_EVD_SIZE、I_MPI_CONN_EVD_QLEN)
接続のための DAPL イベント・ディスパッチャーのイベントキューのサイズを定義します。
構文
I_MPI_DAPL_CONN_EVD_SIZE=<size>
廃止された構文
I_MPI_RDMA_CONN_EVD_SIZE=<size>
I_MPI_CONN_EVD_QLEN=<size>
引数
<size>
> 0
イベントキューの長さを定義します。
デフォルトの値は、MPI ジョブの 2 * プロセス数 + 32 です。
151
チューニング・リファレンス
説明
接続に関連するイベントを処理する DAPL イベント・ディスパッチャーのイベントキューのサイズを定義する
ため、この環境変数を設定します。この環境変数が設定されると、<size> とプロバイダーから取得した値の
最小値がイベントキューのサイズとして使用されます。プロバイダーは、計算された値以上のキューサイズを
供給する必要があります。
I_MPI_DAPL_SR_THRESHOLD
DAPL 待機モード用の RDMA パスに送受信を切り替えるしきい値を変更します。
構文
I_MPI_DAPL_SR_THRESHOLD=<arg>
引数
rdma へ送受信を切り替えるメッセーサイズのしきい値を定義しま
す。
<nbytes>
デフォルトの <nbytes> 値は、256 バイトです。
>= 0
説明
DAPL 待機モードでのポイントツーポイント通信に使用されるプロトコルを制御するため、この環境変数を設
定します。
•
•
DAPL 送信/受信データ転送操作で使用して送信される、<nbytes> 以下のメッセージ。
メッセージ・サイズが <nbytes> より大きいと、DAPL RDMA WRITE または RDMA WRITE 即時デー
タ転送操作を使用して送信されます。
I_MPI_DAPL_SR_BUF_NUM
送受信パスで DAPL 待機モードの各プロセスのペア向が使用する、内部事前登録バッファーの数を変更します。
構文
I_MPI_DAPL_SR_BUF_NUM=<nbuf>
引数
<nbuf>
> 0
説明
プロセスグループの各ペア向けに送受信バッファーの数を定義しま
す。
デフォルト値は 32 です。
各プロセスのペア向けの内部事前登録バッファーの数を変更するには、この環境変数を設定します。
I_MPI_DAPL_RDMA_WRITE_IMM (I_MPI_RDMA_WRITE_IMM)
DAPL 待機モードで即時データ InfiniBand (IB) 拡張子を持つ RDMA 書き込みを有効/無効にします。
構文
I_MPI_DAPL_RDMA_WRITE_IMM=<arg>
廃止された構文
I_MPI_RDMA_WRITE_IMM=<arg>
152
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
即時データ IB 拡張子を持つ RDMA 書き込みを有効にします。
即時データ IB 拡張子を持つ RDMA 書き込みを無効にします。
即時データ IB 拡張子を持つ RDMA 書き込みを利用するには、この環境変数を設定します。この環境変数が設定
されてアルゴリズムが有効になると、特定の DAPL プロバイダーの属性は即時データ IB 拡張を持つ RDMA 書き
込みがサポートされることを示します。
I_MPI_DAPL_DESIRED_STATIC_CONNECTIONS_NUM
同時に DAPL スタティック接続を確立するプロセス数を定義します。
構文
I_MPI_DAPL_DESIRED_STATIC_CONNECTIONS_NUM=<num_procesess>
引数
<num_procesess>
> 0
説明
同時に DAPL スタティック接続を確立するプロセス数を定義します。
デフォルトの <num_procesess> 値は 256 です。
DAPL スタティック接続確立のアルゴリズムを制御するには、この環境変数を設定します。
MPI ジョブのプロセス数が、<num_procesess> 以下の場合、すべての MPI プロセスは同時にスタティック接
続を確立します。それ以外の場合、プロセスはいくつかのグループに分散されます。各グループのプロセス数
は、<num_procesess> に近くなるように計算されます。その後、スタティック接続は (グループ間の接続設
定を含む) いくつかの反復で確立されます。
I_MPI_CHECK_DAPL_PROVIDER_COMPATIBILITY
すべてのランクで同じ DAPL プロバイダーが選択されているかチェックするのを有効/無効にします。
構文
I_MPI_CHECK_DAPL_PROVIDER_COMPATIBILITY=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
すべてのランクで同じ DAPL プロバイダーが選択されているかチェッ
クします。これは、デフォルト値です。
すべてのランクで同じ DAPL プロバイダーが選択されているかチェッ
クしません。
153
チューニング・リファレンス
説明
すべての MPI ランクで DAPL プロバイダーが選択されているかどうかチェックするには、この環境変数を設定
します。このチェックが有効になっていると、インテル® MPI ライブラリーは DAPL プロバイダーの名前とバー
ジョンをチェックします。
すべてのランクでこの設定が同一でない場合、インテル® MPI ライブラリーは RDMA パスを選択せずにソケッ
トにフォールバックすることがあります。チェックを無効にすると、MPI_Init() の実行時間を短縮できます。
これは、多数プロセスによる MPI ジョブで顕著です。
3.3.4. DAPL UD ネットワーク・ファブリック制御
I_MPI_DAPL_UD
DAPL UD パスの使用を有効/無効にします。
構文
I_MPI_OFA_USE_XRC=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
DAPL UD IB 拡張の使用を on にします。
DAPL UD IB 拡張の使用を off にします。これは、デフォルト値で
す。
データを転送するため DAPL UD 経路を有効にするには、この環境変数を設定します。この環境変数が設定され
てアルゴリズムが有効になると、特定の DAPL プロバイダーの属性は UD IB 拡張がサポートされることを示し
ます。
I_MPI_DAPL_UD_PROVIDER
IB UD トランスポートと動作する DAPL プロバイダーを定義します。
構文
I_MPI_DAPL_UD_PROVIDER=<name>
引数
<name>
> 0
説明
ロードする DAPL プロバイダーの名前を定義します。
デフォルトの <nbytes> 値は、16456 バイトです。
ロードする DAPL プロバイダーの名前を定義するには、この環境変数を設定します。この名前は、dat.conf
設定ファイルでも定義されています。
指定する DAPL プロバイダーが UD IB 拡張をサポートすることを確認してください。
154
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_DAPL_UD_DIRECT_COPY_THRESHOLD
DAPL UD 直接コピープロトコルのしきい値を変更します。
構文
I_MPI_DAPL_UD_DIRECT_COPY_THRESHOLD=<nbytes>
引数
<nbytes>
DAPL UD 直接コピープロトコルのしきい値を定義します。
デフォルトの <nbytes> 値は、16456 バイトです。
> 0
説明
DAPL UD 直接コピープロトコルのしきい値を制御するため、この環境変数を設定します。DAPL ネットワー
ク・ファブリック向けのデータ転送アルゴリズムは、次のスキームに従って選択されます。
•
•
メッセージが <nbytes> 以下の場合、内部事前登録バッファーを介して eager プロトコルを使用して
送信します。このアプローチは、ショートメッセージでは高速です。
メッセージが、<nbytes> より長い場合、直接コピープロトコルが使用されます。これはバッファー
を使用しませんが、送信側と受信側でメモリーの登録が必要です。このアプローチは、ラージメッ
セージでは高速です。
この環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル
製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
I_MPI_DAPL_UD_RECV_BUFFER_NUM
サービスメッセージを受信するための内部事前登録バッファーの数を変更するには、この環境変数を設定しま
す。
構文
I_MPI_DAPL_UD_RECV_BUFFER_NUM=<nbuf>
引数
<nbuf>
> 0
説明
メッセージを受信するバッファーの数を定義します。
デフォルト値は、16 + n*4 です。n は、MPI ジョブの合計プロセス
数です。
サービスメッセージを受信するための内部事前登録バッファーの数を変更するには、この環境変数を設定しま
す。これらのバッファーは、すべての接続やプロセスペアで共通です。
注意
事前定義バッファーはメモリーを使用しますが、パケットの損失を回避するのに役立ちます。
I_MPI_DAPL_UD_SEND_BUFFER_NUM
メッセージを送信するための内部事前登録 UD バッファーの数を変更するには、この環境変数を設定します。
構文
I_MPI_DAPL_UD_SEND_BUFFER_NUM=<nbuf>
155
チューニング・リファレンス
引数
<nbuf>
> 0
説明
メッセージを送信するバッファーの数を定義します。
デフォルト値は、16 + n*4 です。n は、MPI ジョブの合計プロセス
数です。
サービスメッセージを送信するための内部事前登録バッファーの数を変更するには、この環境変数を設定しま
す。これらのバッファーは、すべての接続やプロセスペアで共通です。
注意
事前定義バッファーはメモリーを使用しますが、パケットの損失を回避するのに役立ちます。
I_MPI_DAPL_UD_ACK_SEND_POOL_SIZE
メッセージを送信するための ACK UD バッファーの数を変更するには、この環境変数を設定します。
構文
I_MPI_DAPL_UD_ACK_SEND_POOL_SIZE=<nbuf>
引数
<nbuf>
> 0
説明
メッセージを送信するための ACK UD バッファーの数を変更するに
は、この環境変数を設定します。
デフォルト値は 256 です。
サービスメッセージを送信するための内部事前登録 ACK バッファーの数を変更するには、この環境変数を設定
します。これらのバッファーは、すべての接続やプロセスペアで共通です。
I_MPI_DAPL_UD_ACK_RECV_POOL_SIZE
メッセージを受信するための ACK UD バッファーの数を変更するには、この環境変数を設定します。
構文
I_MPI_DAPL_UD_ACK_RECV_POOL_SIZE=<nbuf>
引数
<nbuf>
> 0
説明
メッセージを受信するための ACK UD バッファーの数を変更するに
は、この環境変数を設定します。
デフォルト値は、512 + n*4 です。n は、MPI ジョブの合計プロセ
ス数です。
サービスメッセージを受信するための内部事前登録 ACK バッファーの数を変更するには、この環境変数を設定
します。これらのバッファーは、すべての接続やプロセスペアで共通です。
156
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_DAPL_UD_TRANSLATION_CACHE
DAPL UD パスのメモリー登録キャッシュを on/off にします。
構文
I_MPI_DAPL_UD_TRANSLATION_CACHE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
メモリー登録キャッシュを on にします。これはデフォルトです。
メモリー登録キャッシュを off にします。
DAPL UD パスのメモリー登録キャッシュを on/off にするため、この環境変数を使用します。
キャッシュを使用すると、パフォーマンスが向上します。詳細については、製品のリリースノートをご覧くだ
さい。
I_MPI_DAPL_UD_TRANSLATION_CACHE_AVL_TREE
DAPL UD パスの RDMA 変換キャッシュの AVL tree ベースの実装を有効/無効にします。
構文
I_MPI_DAPL_UD_TRANSLATION_CACHE_AVL_TREE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
AVL tree ベースの RDMA 変換キャッシュを on にします。
AVL tree ベースの RDMA 変換キャッシュを off にします。これは、
デフォルト値です。
この環境変数を設定して、DAPL UD パスの RDMA 変換キャッシュの AVL tree ベースの実装を有効にします。
RDMA 変換キャッシュが 10,000 を超える要素を処理する場合、AVL tree ベースの RDMA 変換キャッシュの方
がデフォルト実装より高速です。
I_MPI_DAPL_UD_REQ_EVD_SIZE
データ転送操作を送信するための DAPL UD イベント・ディスパッチャーのイベントキューのサイズを定義しま
す。
構文
I_MPI_DAPL_UD_REQ_EVD_SIZE=<size>
引数
<size>
> 0
イベントキューの長さを定義します。
デフォルト値は 2,000 です。
157
チューニング・リファレンス
説明
DAPL UD データ転送操作 (DTO) の送信完了を処理する DAPL イベント・ディスパッチャーのイベントキューの
サイズを定義するため、この環境変数を設定します。この環境変数が設定されると、<size> とプロバイダー
から取得した値の最小値がイベントキューのサイズとして使用されます。プロバイダーには、少なくとも計算
された値に等しいキューサイズを提供する必要がありますが、大きなキューサイズを提供することもできます。
I_MPI_DAPL_UD_CONN_EVD_SIZE
接続のための DAPL UD イベント・ディスパッチャーのイベントキューのサイズを定義します。
構文
I_MPI_DAPL_UD_CONN_EVD_SIZE=<size>
引数
<size>
> 0
説明
イベントキューの長さを定義します。
デフォルトの値は、MPI ジョブの 2 * プロセス数 + 32 です。
接続に関連するイベントを処理する DAPL イベント・ディスパッチャーのイベントキューのサイズを定義する
ため、この環境変数を設定します。この環境変数が設定されると、<size> とプロバイダーから取得した値の
最小値がイベントキューのサイズとして使用されます。プロバイダーには、少なくとも計算された値に等しい
キューサイズを提供する必要がありますが、大きなキューサイズを提供することもできます。
I_MPI_DAPL_UD_RECV_EVD_SIZE
接続のための DAPL UD イベント・ディスパッチャーのイベントキューのサイズを定義します。
構文
I_MPI_DAPL_UD_RECV_EVD_SIZE=<size>
引数
<size>
> 0
説明
イベントキューの長さを定義します。
デフォルトの値は、UD と ACK バッファー数に依存します。
DAPL UD データ転送操作 (DTO) の受信完了を処理する DAPL イベント・ディスパッチャーのイベントキューの
サイズを定義するため、この環境変数を設定します。この環境変数が設定されると、<size> とプロバイダー
から取得した値の最小値がイベントキューのサイズとして使用されます。プロバイダーには、少なくとも計算
された値に等しいキューサイズを提供する必要がありますが、大きなキューサイズを提供することもできます。
I_MPI_DAPL_UD_RNDV_MAX_BLOCK_LEN
DAPL UD 直接コピープロトコルの 1 反復で渡される最大ブロックサイズを定義します。
構文
I_MPI_DAPL_UD_RNDV_MAX_BLOCK_LEN=<nbytes>
158
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<arg>
> 0
DAPL UD 直接コピープロトコルの 1 反復で渡される最大ブロックサ
イズを定義します。
デフォルト値は 1,048,576 です。
DAPL UD 直接コピープロトコルの 1 反復で渡される最大ブロックサイズを定義するには、この環境変数を設定
します。直接コピープロトコル内のメッセージサイズが、指定された値よりも大きい場合、メッセージは複数
のブロックに分割され、複数の操作で渡されます。
I_MPI_DAPL_UD_RNDV_BUFFER_ALIGNMENT
DAPL 直接コピー転送向けの送信バッファーのアライメントを定義します。
構文
I_MPI_DAPL_UD_RNDV_BUFFER_ALIGNMENT=<arg>
引数
<arg>
> 0 かつ 2 の累乗
送信バッファーのアライメントを定義します。
デフォルト値は 16 です。
DAPL 直接コピー転送向けのバッファー送信アルゴリズムを定義するため、この環境変数を設定します。DAPL
操作で指定されるバッファーが適切にアライメントされている場合、データ転送のバンド幅は高まります。
I_MPI_DAPL_UD_RNDV_COPY_ALIGNMENT_THRESHOLD
DAPL 直接コピー転送向けの送信バッファーのアライメントのしきい値を定義します。
構文
I_MPI_DAPL_UD_RNDV_COPY_ALIGNMENT_THRESHOLD=<nbytes>
引数
<nbytes>
> 0 かつ 2 の累乗
送信バッファーのアライメントのしきい値を定義します。
デフォルト値は 32768 です。
DAPL 直接コピー転送向けの送信バッファーのアライメントのしきい値を定義するため、この環境変数を設定
します。DAPL 操作で指定されるバッファーが適切にアライメントされている場合、データ転送のバンド幅は
高まります。
I_MPI_DAPL_UD_RNDV_DYNAMIC_CONNECTION
直接コピープロトコルで使用される DAPL UD 終了ポイントのダイナミック接続確立のアルゴリズムを制御しま
す。
構文
I_MPI_DAPL_UD_RNDV_DYNAMIC_CONNECTION=<arg>
159
チューニング・リファレンス
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
ダイナミック接続を on にします。これは、デフォルト値です。
ダイナミック接続を off にします。
直接コピープロトコルで使用される DAPL UD 終了ポイントのダイナミック接続確立のアルゴリズムを制御する
には、この環境変数を設定します。
ダイナミック接続モードを無効にした場合、すべての接続は MPI 起動時に確立されます。
このモードを有効にすると、アプリケーションが 1 つのプロセスから別のプロセスへデータを渡すため MPI 関
数を呼び出した時に、接続が確立されます。
注意
RNDV ダイナミック接続モードでは、データ中の渡されるメッセージサイズは、
I_MPI_DAPL_UD_DIRECT_COPY_THRESHOLD 環境変数に設定された値よりも大きくなります。
I_MPI_DAPL_UD_EAGER_DYNAMIC_CONNECTION
eager プロトコルで使用される DAPL UD 終了ポイントのダイナミック接続確立のアルゴリズムを制御します。
構文
I_MPI_DAPL_UD_EAGER_DYNAMIC_CONNECTION=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
バイナリー・インジケーター。
ダイナミック接続を on にします。プロセス数が 64 より多い場合、
これがデフォルトになります。
ダイナミック接続を off にします。
eager プロトコルで使用される DAPL UD 終了ポイントのダイナミック接続確立のアルゴリズムを制御するには、
この環境変数を設定します。eager プロトコルは、内部の事前定義バッファーを介してメッセージを転送する
際に使用されます。
このモードを無効にした場合、すべての接続は MPI 起動時に確立されます。
このモードを有効にすると、アプリケーションが 1 つのプロセスから別のプロセスへデータを渡すため MPI 関
数を呼び出した時に、接続が確立されます。
注意
eager ダイナミック接続モードでは、データ中の渡されるメッセージサイズは、
I_MPI_DAPL_UD_DIRECT_COPY_THRESHOLD 環境変数に設定された値と等しいか小さくなります。
160
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_DAPL_UD_DESIRED_STATIC_CONNECTIONS_NUM
同時に DAPL スタティック接続を確立するプロセス数を定義します。
構文
I_MPI_DAPL_UD_DESIRED_STATIC_CONNECTIONS_NUM=<num_procesess>
引数
<num_procesess>
同時に DAPL UD スタティック接続を確立するプロセス数を定義しま
す。
デフォルト値は、200 と等価です。
> 0
説明
DAPL UD スタティック接続確立のアルゴリズムを制御するには、この環境変数を設定します。
MPI ジョブのプロセス数が、<num_procesess> 以下の場合、すべての MPI プロセスは同時にスタティック接
続を確立します。それ以外の場合、プロセスはいくつかのグループに分散されます。各グループのプロセス数
は、<num_procesess> に近くなるように計算されます。その後、スタティック接続は (グループ間の接続設
定を含む) いくつかの反復で確立されます。
I_MPI_DAPL_UD_RDMA_MIXED
DAPL UD/RDMA の混在通信を制御します。
構文
I_MPI_DAPL_UD_RDMA_MIXED =<arg>
引数
バイナリー・インジケーター。
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
DAPL UD/RDMA の混在通信を有効にします。
DAPL UD/RDMA の混在通信を無効にします。これは、デフォルト値
です。
データを転送するため DAPL UD/RDMA 混在モードを有効にするには、この環境変数を設定します。DAPL
UD/RDMA 混在モードでは、短いメッセージは UD トランスポート経由で、そして長いメッセージは RDMA ト
ランスポート経由で渡されます。I_MPI_DAPL_UD_RDMA_MIXED 環境変数を設定し、特定の DAPL プロバイ
ダー属性が UD IB 拡張をサポートすることを示す場合、DAPL UD/RDMA 混在モードが有効になります。
次の I_MPI_DAPL_UD 環境変数のセットも同様に DAPL UD/RDMA 混在モードを制御します。
•
I_MPI_DAPL_UD_PROVIDER
•
I_MPI_DAPL_UD_EAGER_DYNAMIC_CONNECTION
•
I_MPI_DAPL_UD_RNDV_DYNAMIC_CONNECTION
•
I_MPI_DAPL_UD_DIRECT_COPY_THRESHOLD
•
I_MPI_DAPL_UD_RECV_BUFFER_NUM
•
I_MPI_DAPL_UD_SEND_BUFFER_NUM
•
I_MPI_DAPL_UD_NUMBER_CREDIT_UPDATE
•
I_MPI_DAPL_UD_ACK_SEND_POOL_SIZE
161
チューニング・リファレンス
•
I_MPI_DAPL_UD_ACK_RECV_POOL_SIZE
•
I_MPI_DAPL_UD_RESENT_TIMEOUT
•
I_MPI_DAPL_UD_MAX_MSG_SIZE
•
I_MPI_DAPL_UD_SEND_BUFFER_SIZE
•
I_MPI_DAPL_UD_REQ_EVD_SIZE
•
I_MPI_DAPL_UD_REQUEST_QUEUE_SIZE
•
I_MPI_DAPL_UD_MULTIPLE_EAGER_SEND
•
I_MPI_DAPL_UD_NA_SBUF_LIMIT
•
I_MPI_DAPL_UD_RECV_EVD_SIZE
•
I_MPI_DAPL_UD_CONNECTION_TIMEOUT
•
I_MPI_DAPL_UD_PORT
•
I_MPI_DAPL_UD_CREATE_CONN_QUAL,
•
I_MPI_DAPL_UD_FINALIZE_RETRY_COUNT
•
I_MPI_DAPL_UD_FINALIZE_TIMEOUT
•
I_MPI_DAPL_UD_TRANSLATION_CACHE
•
I_MPI_DAPL_UD_TRANSLATION_CACHE_AVL_TREE
•
I_MPI_DAPL_UD_TRANSLATION_CACHE_MAX_ENTRY_NUM
•
I_MPI_DAPL_UD_TRANSLATION_CACHE_MAX_MEMORY_SIZE
•
I_MPI_DAPL_UD_PKT_LOSS_OPTIMIZATION
•
I_MPI_DAPL_UD_DFACTOR
•
I_MPI_DAPL_UD_DESIRED_STATIC_CONNECTIONS_NUM
•
I_MPI_DAPL_UD_CONN_EVD_SIZE
•
I_MPI_DAPL_UD_RNDV_BUFFER_ALIGNMENT
•
I_MPI_DAPL_UD_RNDV_COPY_ALIGNMENT_THRESHOLD
•
I_MPI_DAPL_UD_MAX_RDMA_SIZE
•
I_MPI_DAPL_UD_MAX_RDMA_DTOS
DAPL UD/RDMA 混在モード向けに、次の環境変数を設定します。
I_MPI_DAPL_UD_MAX_RDMA_SIZE
DAPL UD/RDMA 混在モード向けの RDMA プロトコルを介して送信できる最大メッセージサイズを制御します。
構文
I_MPI_DAPL_UD_MAX_RDMA_SIZE =<nbytes>
引数
<nbytes>
> 0
断片化なしで RDMA を介して送信できる最大メッセージサイズを定
義します。
デフォルトの <nbytes> 値は、4 バイトです。
162
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
DAPL UD/RDMA 混在モード向けの RDMA プロトコルを介して送信できる最大メッセージサイズを定義するに
は、この環境変数を設定します。
メッセージサイズがこの値よりも大きい場合、メッセージは複数の断片に分割され、複数の RDMA 操作で送信
されます。
I_MPI_DAPL_UD_MAX_RDMA_DTOS
DAPL UD/RDMA 混在モード向けに接続ごとの完了しない RDMA 操作の最大数を制御します。
構文
I_MPI_DAPL_UD_MAX_RDMA_DTOS=<arg>
引数
<arg>
> 0
説明
接続ごとの RDMA 操作の最大数を定義します。
デフォルト <arg> の値は 8 です。
DAPL UD/RDMA 混在モード向けに接続ごとの完了しない RDMA 操作の最大数を定義するには、この環境変数
を設定します。
3.3.5. TCP ネットワーク・ファブリック制御
I_MPI_TCP_NETMASK (I_MPI_NETMASK)
TCP ネットワーク・ファブリック経由の MPI 通信のネットワーク・インターフェイスを選択します。
構文
I_MPI_TCP_NETMASK=<arg>
引数
<arg>
<interface_mnemonic>
ib
eth
ネットワーク・インターフェイスを定義 (文字列)。
ネットワーク・インターフェイスの略: ibor eth。
IPoIB* ネットワーク・インターフェイスを使用します。
Ethernet ネットワーク・インターフェイスを使用します。これは、
デフォルト値です。
<interface_name>
ネットワーク・インターフェイス名。
<network_address>
ネットワーク・アドレス。末尾ゼロはネットマスクを示します。
<network_address/
<netmask>
<list of interfaces>
通常は、UNIX* ドライバー名にユニット番号が続きます。
ネットワーク・アドレス。<netmask> 値には、ネットマスクのレン
グスを指定します。
コロンで区切られたネットワーク・アドレスまたは、インターフェイ
ス名のリスト。
163
チューニング・リファレンス
説明
TCP ネットワーク・ファブリック経由の MPI 通信のネットワーク・インターフェイスを選択するため、この環
境変数を使用します。インターフェイスのリストを指定した場合、ノード上で最初に検出されたインターフェ
イスが通信に使用されます。
例
•
InfiniBand* (IPoIB) ファブリック経由の IP を選択するには、次のように設定します。
I_MPI_TCP_NETMASK=ib
•
ソケット通信に特定のネットワーク・インターフェイスを選択するには、次のように設定します。
I_MPI_TCP_NETMASK=ib0
•
ソケット通信に特定のネットワークを選択するには、次のように設定します。この設定は、
255.255.0.0 ネットマスクを暗示します。
I_MPI_TCP_NETMASK=192.169.0.0
•
ネットマスクが設定されたソケット通信に特定のネットワークを選択するには、次のように設定しま
す。
I_MPI_TCP_NETMASK=192.169.0.0/24
•
ソケット通信に特定のネットワーク・インターフェイスを選択するには、次のように設定します。
I_MPI_TCP_NETMASK=192.169.0.5/24:ib0:192.169.0.0
I_MPI_TCP_BUFFER_SIZE
TCP ソケットバッファーのサイズを変更します。
構文
I_MPI_TCP_BUFFER_SIZE=<nbytes>
引数
<nbytes>
> 0
説明
TCP ソケットバッファーのサイズを定義します。
デフォルトの <nbytes> 値は、使用する Linux* システムの TCP ソ
ケットのデフォルト・バッファー・サイズの値と等価です。
TCP ソケットバッファーのサイズを手動で定義するには、この環境変数を設定します。TCP ソケットのバッ
ファーサイズは、Linux* システム上の既存の TCP の設定によって制限されます。
指定するプロセス数にアプリケーションのパフォーマンスをチューニングするには、
I_MPI_TCP_BUFFER_SIZE 環境変数を使用します。
注意
TCP ソケットのバッファーサイズが大きい場合、プロセス数が多いとアプリケーションはより多くのメモリー
を必要とします。小さなサイズの TCP ソケットバッファーは、特に 10 Gb イーサーネットや IProIB では帯域
幅を大幅に軽減できます (詳細は、「I_MPI_TCP_NETMASK」をご覧ください)。
164
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_TCP_POLLING_MODE
この環境変数を設定して、ポーリングのモードを定義します。
構文
I_MPI_TCP_POLLING_MODE=<mode>
引数
<mode>
ポーリングモードを指定します。
poll() 関数をベースにしたポーリングモード。これは、デフォルト
値です。
poll
epoll[:edge]
epoll:level
エッジトリガー・インターフェイスによる epoll() 関数に基づく
ポーリングモード。
レベルトリガー・インターフェイスによる epoll() 関数に基づく
ポーリングモード。
tcp ファブリックのポーリングモードを選択するには、この環境変数を設定します。
アプリケーションのパフォーマンスをチューニングするには、I_MPI_TCP_POLLING_MODE 環境変数を使用し
ます。経験則に従って、最良のポーリングモードを選択できます。最良のモードは、アプリケーションとプロ
セス数に依存します。epoll ポーリングモードは、次の状況に適しています。
•
•
•
プロセス数が非常に多い
クライアントサーバー型のアプリケーション
MPI_ANY_SOURCE タグマッチング
3.3.6. TMI ネットワーク・ファブリック制御
I_MPI_TMI_LIBRARY
特定の TMI ライブラリーを選択します。
構文
I_MPI_TMI_LIBRARY=<library>
引数
<library>
説明
デフォルトの libtmi.so の代わりに使用する TMI ライブラリーを指
定します。
TMI ライブラリーを選択するため、この環境変数を設定します。検索パスに含まれていない場合、フルパスで
TMI ライブラリーを指定します。
I_MPI_TMI_PROVIDER
ロードする TMI プロバイダーの名前を定義します。
構文
I_MPI_TMI_PROVIDER=<name>
165
チューニング・リファレンス
引数
<name>
説明
ロードする TMI プロバイダーの名前を定義します。
ロードする TMI プロバイダーの名前を定義するには、この環境変数を設定します。この名前は、dat.conf 設
定ファイルでも定義されている必要があります。
I_MPI_TMI_NBITS_RANK
TMI レベルで MPI ランクの値を格納する予約ビット数を定義します。
構文
I_MPI_TMI_NBITS_RANK=<num_bits>
引数
<num_bits>
<=32 および > 0
説明
MPI ランクを保存する予約ビット数。
デフォルト値は 24 です。
I_MPI_TMI_NBITS_RANK の値は、TMI レベルで参照および区分可能な MPI ランク数を指定します。この環境
変数のデフォルト値 I_MPI_TMI_NBITS_RANK=24 を指定すると、ジョブを実行可能なランク数は、224=16M
ランクとなります。
注意
I_MPI_TMI_NBITS_RANK の値は、MPI_TAG_UB に関連します。I_MPI_TMI_NBITS_RANK に大きな値を指
定するほど、MPI_TAG_UB でサポートされるタグ値は少なくなります。I_MPI_TMI_NBITS_RANK に小さな値
を指定するほど、MPI_TAG_UB でサポートされるタグ値は多くなります。通常の MPI アプリケーションは、サ
ポートされる最大タグ値を常に照会する必要があります。
I_MPI_TMI_DSEND
TMI netmod における直接送信機能を制御します。
構文
I_MPI_TMI_DSEND=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
直接送信を有効にします。これは、デフォルト値です。
直接送信を無効にします。
直接送信機能は、ブロック化された MPI_Send 呼び出しにのみ使用します。直接送信機能を使用する前に、シ
ングルスレッドのアプリケーションでネットワーク・ファブリックに TMI が選択されていること
(I_MPI_FABRICS=tmi が設定済みであること) を確認してください。
166
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
注意
直接送信機能は、TMI バージョン 1.1 以降でのみサポートされます。それ以前のバージョンの TMI を使用する
場合、I_MPI_TMI_DSEND に設定された値は無視されます。
I_MPI_TMI_DRECV
TMI ファブリックにおける直接受信機能を制御します。
構文
I_MPI_TMI_DRECV=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
直接受信を有効にします。これは、デフォルト値です。
直接受信を無効にします。
直接受信機能は、ブロック化された MPI_Recv 呼び出しにのみ使用します。直接送信機能を使用する前に、シ
ングルスレッドのアプリケーションでネットワーク・ファブリックに TMI が選択されていること
(I_MPI_FABRICS=tmi が設定済みであること) を確認してください。
3.3.7. OFA ネットワーク・ファブリック制御
I_MPI_OFA_NUM_ADAPTERS
接続アダプターの数を設定します。
構文
I_MPI_OFA_NUM_ADAPTERS=<arg>
引数
<arg>
>0
説明
使用するアダプターの最大数を定義します。
指定されたアダプター数を使用します。デフォルト値は 1 です。
使用するアダプターの数を設定します。利用可能なアダプター数よりも大きな値が指定された場合、すべ
ての利用可能なアダプターが使用されます。
I_MPI_OFA_ADAPTER_NAME
使用するアダプターの名前を設定します。
構文
I_MPI_OFA_ADAPTER_NAME=<arg>
167
チューニング・リファレンス
引数
<arg>
Name
説明
アダプターの名前を定義します。
指定されたアダプターを使用します。デフォルトでは、すべてのアダ
プターが使用できます。
使用するアダプターの名前を設定します。指定されたアダプターが存在しない場合、ライブラリーはエラーを
返します。これは、I_MPI_OFA_NUM_ADAPTERS=1 のときにのみ有効です。
I_MPI_OFA_NUM_PORTS
各アダプターが使用するポート数を設定します。
構文
I_MPI_OFA_NUM_PORTS=<arg>
引数
<arg>
> 0
説明
各アダプター上で使用されるポート数を定義します。
指定されたポート数を使用します。デフォルト値は 1 です。
各アダプターが使用するポート数を設定します。利用可能なポート数よりも大きな値が指定された場合、すべ
ての利用可能なポートが使用されます。
I_MPI_OFA_NUM_RDMA_CONNECTIONS
rdma 交換プロトコルで使用できる接続の最大数を設定します。
構文
I_MPI_OFA_NUM_RDMA_CONNECTIONS=<num_conn>
引数
<num_conn>
>= 0
-1
>= プロセス数
説明
rdma 交換プロトコルで使用できる接続の最大数を定義します。
rdma 交換プロトコルで使用する接続の最大数を指定して作成しま
す。その他のプロセスは、送信/受信交換プロトコルを使用します。
log2(プロセス数) rdma 接続を作成します。
すべてのプロセスに rdma 接続を作成します。これは、デフォルト値
です。
2 つのプロセス間では 2 つのプロトコルが使用できます: 送信/受信と rdma。この環境変数は、rdma プロトコ
ルで使用する接続の最大数を指定します。
RDMA プロトコルは高速ですが多くのリソースを必要とします。大規模なアプリケーション向けに、頻繁に
データ交換を行うプロセスだけが RDMA プロトコルを利用できるよう、RDMA プロトコルを使用する接続数を
制限することができます。
168
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_OFA_SWITCHING_TO_RDMA
プロセスが接続を RDMA 交換プロトコルに切り替える前に受信すべきメッセージ数を設定します。
構文
I_MPI_OFA_SWITCHING_TO_RDMA=<number>
引数
<number>
プロセスが接続を RDMA 交換プロトコルに切り替える前に受信すべ
きメッセージ数を定義します。
プロセスが <number> のメッセージを受信すると、rdma プロトコル
の利用を開始します。
>= 0
説明
特定のプロセスからの受信メッセージをカウントします。接続が指定された数に達した場合、そのプロセスと
交換を行うため rdma プロトコルへの切り替えを試みます。I_MPI_OFA_NUM_RDMA_CONNECTIONS に定義さ
れる RDMA 交換プロトコルを使用する接続の最大数に達した場合は、接続は rmda プロトコルに切り替わりま
せん。
I_MPI_OFA_RAIL_SCHEDULER
短いメッセージ向けのレールを選択する方式を設定します。
構文
I_MPI_OFA_RAIL_SCHEDULER=<arg>
引数
モードセレクター。
<arg>
ROUND_ROBIN
FIRST_RAIL
PROCESS_BIND
説明
次回、次のレールを使用します。
短いメッセージには常に最初のレールを使用します。
プロセス向けに常に特定のレールを使用します。
短いメッセージ向けのレールを選択する方式を設定します。アルゴリズムは次のスキームに従って選択されま
す。
•
•
•
ROUND_ROBIN モード、最初のメッセージは最初のレールを使用して送信され、次のメッセージは 2
番目のレールを使用して送信されます。
FIRST_RAIL モード、短いメッセージには常に最初のレールが使用されます。
PROCESS_BIND モード、プロセスの最小ランクは最初のレールを使用し、次は 2 番目のレールを使用
します。
I_MPI_OFA_TRANSLATION_CACHE
メモリー登録キャッシュを on/off にします。
構文
I_MPI_OFA_TRANSLATION_CACHE=<arg>
169
チューニング・リファレンス
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
メモリー登録キャッシュを on にします。これはデフォルトです。
メモリー登録キャッシュを off にします。
メモリー登録キャッシュを on/off にするため、この環境変数を使用します。
キャッシュはパフォーマンスを大幅に向上しますが、特定の状況で正当性の問題を引き起こす可能性がありま
す。詳細については、製品のリリースノートをご覧ください。
I_MPI_OFA_TRANSLATION_CACHE_AVL_TREE
RDMA 変換キャッシュの AVL tree ベースの実装を有効/無効にします。
構文
I_MPI_OFA_TRANSLATION_CACHE_AVL_TREE=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
AVL tree ベースの RDMA 変換キャッシュを on にします。
AVL tree ベースの RDMA 変換キャッシュを off にします。これは、
デフォルト値です。
この環境変数を設定して、OFA パスの RDMA 変換キャッシュの AVL tree ベースの実装を有効にします。RDMA
変換キャッシュが 10,000 を超える要素を処理する場合、AVL tree ベースの RDMA 変換キャッシュの方がデ
フォルト実装より高速です。
I_MPI_OFA_DYNAMIC_QPS
ライブラリーがキューのペア (QP) を動的に作成するのを制御します。
構文
I_MPI_OFA_DYNAMIC_QPS=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
QP をダイナミックに作成します。プロセス数が 2000 以上のデフォ
ルト値です。
初期ステージですべての QP を作成します。プロセス数が 2000 未満
のデフォルト値です。
QP のダイナミックな作成を on/off にするため、この環境変数を使用します。
170
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_OFA_PACKET_SIZE
送信されるパケットのサイズを設定します。
構文
I_MPI_OFA_PACKET_SIZE=<arg>
引数
<arg>
> 0
説明
パケットのサイズをバイト単位で定義します。
指定されたパケットサイズを使用します。デフォルト値は 8192 で
す。
バイト単位でパケットサイズを設定します。負の値が指定された場合、サイズは 8 に設定されます。
I_MPI_OFA_LIBRARY
使用する OFA ライブラリーの名前を設定します。
構文
I_MPI_OFA_LIBRARY=<arg>
引数
<arg>
Name
説明
ロードする OFA ライブラリーの名前を定義します。
指定されたライブラリーを使用します。デフォルトは、
libibverbs.so です。
使用する InfiniBand* (IB*) ライブラリーの名前を設定します。指定された名前が存在しない場合、ライブラリー
はエラーを返します。
I_MPI_OFA_NONSWITCH_CONF
ポート接続に非標準のテンプレートを定義します。
構文
I_MPI_OFA_NONSWITCH_CONF=<arg>
引数
<arg>
Name
説明
ポート接続にテンプレートを定義します。
指定されたテンプレートを使用します。
クラスター内のノードは、porti のノードがその他のすべてのノードの porti にアクセスできるよう、常に接
続されています。ポートがこの方法で接続されていない場合、この環境変数を使用します。以下にテンプレー
トの例を示します
host1@port11#port12#...#host2@port21#port22....
portij は、hosti から hostj ホストへ送信するために使用するポートを定義します。
171
チューニング・リファレンス
例:
node1@1#1#2#node2@2#1#1#node3@1#2#1#
このサンプルは、次の設定を指定します。
•
•
•
•
•
•
node1 の port1 は node2 の port2 に接続されます。
node1 の port2 は node3 の port1 に接続されます。
node2 の port1 は node3 の port2 に接続されます。
node2 の port2 は node2 の port1 に接続されます。
node3 の port1 は node1 の port2 に接続されます。
node3 の port2 は node2 の port1 に接続されます。
port1 は、常に自身の通信に使用されます (ループバック)。
OFA* デバイスのフェイルオーバーのサポート
インテル® MPI ライブラリーは、ハードウェアの問題を検出するため、次のイベントを認識します。
•
•
•
•
•
•
•
•
IBV_EVENT_QP_FATAL: QP でエラーが発生し、エラー状態へ移行しました。
IBV_EVENT_QP_REQ_ERR: 不正な要求によるローカル・ワーク・キューのエラー。
IBV_EVENT_QP_ACCESS_ERR: ローカルアクセス違反エラー。
IBV_EVENT_PATH_MIG_ERR: 接続が代替パスへの移行に失敗。
IBV_EVENT_CQ_ERR: CQ がエラー状態 (CQ オーバーラン)。
IBV_EVENT_SRQ_ERR: SRQ でエラーが発生。
IBV_EVENT_PORT_ERR: ポートにリンクできません。
IBV_EVENT_DEVICE_FATAL: CA が致命的状態です。
インテル® MPI ライブラリーは、これらの問題を検出すると、ポートの利用またはアダプター自体の利用を停止
します。アプリケーションがマルチレール・モードで実行されている場合、利用可能なポートやアダプターを
介して通信を継続します。利用可能なポートやアダプターがない場合、アプリケーションは異常終了します。
インテル® MPI ライブラリーは、また次のイベントを認識します。
•
IBV_EVENT_PORT_ACTIVE: リンクはポート上でアクティブ
このイベントは、ポートが再び利用可能で通信を確立可能なことを意味します。
3.3.8. OFI* ネットワーク・ファブリック制御
I_MPI_OFI_LIBRARY
特定の OpenFabrics Interfaces* (OFI*) ライブラリーを選択します。
構文
I_MPI_DAT_LIBRARY=<library>
引数
<library>
デフォルトの libfabric.so の代わりに使用するライブラリー
を指定します。
172
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
OFI ライブラリーを選択するため、この環境変数を設定します。検索パスに含まれていない場合、フルパスで
OFI ライブラリーを指定します。
I_MPI_OFI_PROVIDER
ロードする DAPL プロバイダーの名前を定義します。
構文
I_MPI_OFI_PROVIDER=<name>
引数
<name>
説明
ロードする OFI プロバイダーの名前を定義します。
ロードする OFI プロバイダーの名前を定義するには、この環境変数を設定します。この変数を設定していない
場合、プロバイダーは自動的に OFI ライブラリーを選択します。I_MPI_OFI_PROVIDER_DUMP 環境変数を使
用して、利用可能なすべてのプロバイダーをチェックできます。
I_MPI_OFI_PROVIDER_DUMP
すべての OFI プロバイダーと OFI ライブラリーからそれらの属性に関する情報を表示する機能を制御します。
構文
I_MPI_OFI_PROVIDER_DUMP=<arg>
引数
<arg>
enable | yes | on | 1
disable | no | off | 0
説明
バイナリー・インジケーター。
すべての OFI プロバイダーのリストと OFI ライブラリーからそれら
の属性を表示します。
何もしません。これは、デフォルト値です。
すべての OFI プロバイダーと OFI ライブラリーからそれらの属性に関する情報を表示する機能を制御するには、
この環境変数を設定します。
3.4. 集団操作制御
インテル® MPI ライブラリーの集団操作では、いくつかの通信アルゴリズムがサポートされます。高度に最適化
されたデフォルト設定に加え、ライブラリーは明示的にアルゴリズムを選択する機能 (次の章で説明する
I_MPI_ADJUST 環境変数ファミリー) を提供します。
これら環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテル
製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
インテル® MPI ライブラリーの集団操作では、いくつかの通信アルゴリズムがサポートされます。高度に最適化
されたデフォルト設定に加え、ライブラリーはアルゴリズムの選択を明示的に制御する方法 (I_MPI_ADJUST
環境変数ファミリーと廃止された I_MPI_MSG 環境変数ファミリー) を提供します。これらについては、次の章
で説明します。
この環境変数はインテル製マイクロプロセッサーおよび互換マイクロプロセッサーで利用可能ですが、インテ
ル製マイクロプロセッサーにおいてより多くの最適化が行われる場合があります。
173
チューニング・リファレンス
3.4.1. I_MPI_ADJUST ファミリー
I_MPI_ADJUST_<opname>
集団操作のアルゴリズムを設定します。
構文
I_MPI_ADJUST_<opname>="<algid>[:<conditions>][;<algid>:<conditions>[...]]"
引数
<algid>
>= 0
<conditions>
<l>
<l>-<m>
<l>@<p>
<l>-<m>@<p>-<q>
説明
アルゴリズムの識別子。
デフォルトの 0 は、最適なデフォルト設定を選択します。
カンマで区切った条件。空のリストは、すべてのメッセージとプロセ
スの組み合わせを選択します。
サイズ <l> のメッセージ。
<l> 以上 <m> 以下のメッセージサイズ。
<l> のメッセージサイズと <p> のプロセス数。
<l> 以上 <m> 以下のメッセージサイズと <p> 以上 <q> 以下のプロセ
ス数。
特定の条件下で、集団操作 <opname> で必要とするアルゴリズムを選択するには、この環境変数を設定します。
それぞれの集団操作は、個別の環境変数とアルゴリズムを持ちます。
表 3.4-1 環境変数、集団操作、およびアルゴリズム
環境変数
集団操作
アルゴリズム
I_MPI_ADJUST_ALLGATHER
MPI_Allgather
1.
2.
3.
4.
I_MPI_ADJUST_ALLGATHERV
MPI_Allgatherv
二重再帰
Bruck
リング
トポロジーを意識した Gatherv +
Bcast
5.
Knomial
1.
二重再帰
2.
3.
4.
Bruck
リング
トポロジーを意識した Gatherv +
Bcast
174
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_ADJUST_ALLREDUCE
MPI_Allreduce
1.
2.
Rabenseifner
3.
Reduce + Bcast
4.
5.
6.
7.
8.
9.
I_MPI_ADJUST_ALLTOALL
MPI_Alltoall
二項 gather + scatter
トポロジーを意識二項 gather +
scatter
Shumilin のリング
リング
Knomial
Bruck
2.
Isend/Irecv + waitall
4.
MPI_Alltoallv
トポロジーを意識した Reduce +
Bcast
1.
3.
I_MPI_ADJUST_ALLTOALLV
二重再帰
ペアごとの交換
Plum
1.
Isend/Irecv + waitall
2.
Plum
I_MPI_ADJUST_ALLTOALLW
MPI_Alltoallw
Isend/Irecv + waitall
I_MPI_ADJUST_BARRIER
MPI_Barrier
1.
2.
3.
4.
5.
6.
I_MPI_ADJUST_BCAST
MPI_Bcast
1.
2.
3.
4.
5.
6.
7.
I_MPI_ADJUST_EXSCAN
MPI_Exscan
普及
二重再帰
トポロジーを意識した普及
トポロジーを意識した二重再帰
二項 gather + scatter
トポロジーを意識した二項 gather
+ scatter
二項
二重再帰
リング
トポロジーを意識した二項
トポロジーを意識した二重再帰
トポロジーを意識したリング
Shumilin
8.
Knomial
1.
部分的な結果収集
2.
プロセスのレイアウトに関連する
部分的な結果収集
175
チューニング・リファレンス
I_MPI_ADJUST_GATHER
MPI_Gather
1.
2.
3.
I_MPI_ADJUST_GATHERV
MPI_Gatherv
1.
2.
3.
I_MPI_ADJUST_REDUCE_SCATTE
R
MPI_Reduce_scatte
r
1.
2.
3.
4.
I_MPI_ADJUST_REDUCE
MPI_Reduce
二項
トポロジーを意識した Shumilin
トポロジーを意識した二項
Rabenseifner
部分的な結果収集
1.
1.
1.
3.
MPI_Iallgatherv
Reduce + Scatterv
1.
2.
I_MPI_ADJUST_IALLGATHERV
二重再帰
Knomial
2.
MPI_Iallgather
ペアごとの交換
7.
3.
I_MPI_ADJUST_IALLGATHER
二分再帰
トポロジーを意識した
Rabenseifner
2.
MPI_Scatterv
Knomial
6.
2.
I_MPI_ADJUST_SCATTERV
トポロジーを意識した線形
Shumilin
5.
MPI_Scatter
線形
1.
4.
I_MPI_ADJUST_SCATTER
Shumilin
トポロジーを意識した Reduce +
Scatterv
3.
MPI_Scan
トポロジーを意識した二項
5.
2.
I_MPI_ADJUST_SCAN
二項
1.
2.
3.
トポロジーを意識した部分的な結
果収集
二項
トポロジーを意識した二項
Shumilin
線形
トポロジーを意識した線形
二重再帰
Bruck
リング
二重再帰
Bruck
リング
176
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_ADJUST_IALLREDUCE
MPI_Iallreduce
1.
2.
Rabenseifner
3.
Reduce + Bcast
4.
5.
I_MPI_ADJUST_IALLTOALL
MPI_Ialltoall
MPI_Ialltoallv
リング (patarasuk)
Knomial
6.
二項
1.
Bruck
2.
Isend/Irecv + Waitall
3.
I_MPI_ADJUST_IALLTOALLV
二重再帰
ペアごとの交換
Isend/Irecv + Waitall
Isend/Irecv + Waitall
I_MPI_ADJUST_IALLTOALLW
MPI_Ialltoallw
I_MPI_ADJUST_IBARRIER
MPI_Ibarrier
普及
I_MPI_ADJUST_IBCAST
MPI_Ibcast
1.
2.
3.
4.
二項
二重再帰
リング
Knomial
I_MPI_ADJUST_IEXSCAN
MPI_Iexscan
二重再帰
I_MPI_ADJUST_IGATHER
MPI_Igather
1.
2.
I_MPI_ADJUST_IGATHERV
MPI_Igatherv
I_MPI_ADJUST_IREDUCE_SCATT
ER
MPI_Ireduce_scatt
er
線形
1.
2.
3.
I_MPI_ADJUST_IREDUCE
MPI_Ireduce
1.
2.
3.
二項
Knomial
二分再帰
ペアごと
二重再帰
Rabenseifner
二項
Knomial
I_MPI_ADJUST_ISCAN
MPI_Iscan
二重再帰
I_MPI_ADJUST_ISCATTER
MPI_Iscatter
1.
2.
I_MPI_ADJUST_ISCATTERV
MPI_Iscatterv
二項
Knomial
線形
177
チューニング・リファレンス
集団操作のメッセージサイズを算出する規則は、表に記載されています。次の表で、「n/a」は、対応する間隔
<l>-<m> は省略されることを意味します。
表 3.4-2 メッセージ集団関数
集団操作
メッセージサイズ式
MPI_Allgather
recv_count*recv_type_size
MPI_Allgatherv
total_recv_count*recv_type_size
MPI_Allreduce
count*type_size
MPI_Alltoall
send_count*send_type_size
MPI_Alltoallv
n/a
MPI_Alltoallw
n/a
MPI_Barrier
n/a
MPI_Bcast
count*type_size
MPI_Exscan
count*type_size
MPI_Gather
MPI_IN_PLACE が使用される場合 recv_count*recv_type_size
それ以外は send_count*send_type_size
MPI_Gatherv
n/a
MPI_Reduce_scatter
total_recv_count*type_size
MPI_Reduce
count*type_size
MPI_Scan
count*type_size
MPI_Scatter
MPI_Scatterv
MPI_IN_PLACE が使用される場合 send_count*send_type_size
それ以外は recv_count*recv_type_size
n/a
例
MPI_Reduce 操作向けの第二のアルゴリズムを選択するには、次のように設定します。
I_MPI_ADJUST_REDUCE=2
MPI_Reduce_scatter 操作向けのアルゴリズムを定義するには、次のように設定します。
I_MPI_ADJUST_REDUCE_SCATTER="4:0-100,5001-10000;1:101-3200,2:3201-5000;3"
この場合、アルゴリズム 4 はメッセージサイズ 0 から 100 バイトおよび 5001 から 10000 バイトを使用し、
アルゴリズム 1 はメッセージサイズ 101 から 3200 バイトを使用し、アルゴリズム 2 はメッセージサイズ
3201 から 5000 バイトを使用し、アルゴリズム 3 がそれ以外のメッセージを処理します。
178
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_ADJUST_REDUCE_SEGMENT
構文
I_MPI_ADJUST_REDUCE_SEGMENT=<block_size>|<algid>:<block_size>[,<algid>:<block_si
ze>[...]]
引数
<algid>
1
3
<block_size>
> 0
説明
アルゴリズムの識別子。
Shumilin アルゴリズム。
トポロジーを意識した Shumilin アルゴリズム。
メッセージセグメントのサイズをバイト単位で指定します。
デフォルト値は 14000 です。
指定されたアルゴリズム向けの MPI_Reduce メッセージのセグメント化を制御するため、内部ブロックサイズ
を設定します。
<algid> 値が設定されていなければ、<block_size> 値は関連するすべてのアルゴリズムに適用されます。
注意
この環境変数は、Shumilin とトポロジーを意識した Shumilin アルゴリズムにのみ関連します (アルゴリズム
N1 とアルゴリズム N3 相当)。
I_MPI_ADJUST_BCAST_SEGMENT
構文
I_MPI_ADJUST_BCAST_SEGMENT=<block_size>|<algid>:<block_size>[,<algid>:<block_siz
e>[...]]
引数
<algid>
1
4
7
8
<block_size>
> 0
説明
アルゴリズムの識別子。
二項アルゴリズム。
トポロジーを意識した二項アルゴリズム。
Shumilin アルゴリズム。
Knomial アルゴリズム。
メッセージセグメントのサイズをバイト単位で指定します。
デフォルト値は 12288 です。
指定されたアルゴリズム向けの MPI_Bcast メッセージのセグメント化を制御するため、内部ブロックサイズ
を設定します。
179
チューニング・リファレンス
<algid> 値が設定されていなければ、<block_size> 値は関連するすべてのアルゴリズムに適用されます。
注意
この環境変数は、二項、トポロジーを意識した二項、Shumilin、および Knomial アルゴリズムにのみ関連しま
す。
I_MPI_ADJUST_ALLGATHER_KN_RADIX
構文
I_MPI_ADJUST_ALLGATHER_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Allgather アルゴリズムで Knomial 通信ツリーの構
築に使用される基数を指定する整数値。
デフォルト値は 2 です。
この環境変数を I_MPI_ADJUST_ALLGATHER=5 とともに設定し、対応する MPI_Allgather アルゴリズム向
けの Knomial ツリーの基数を選択します。
I_MPI_ADJUST_BCAST_KN_RADIX
構文
I_MPI_ADJUST_BCAST_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Bcast アルゴリズムで Knomial 通信ツリーの構築に使
用される基数を指定する整数値。
デフォルト値は 4 です。
この環境変数を I_MPI_ADJUST_BCAST=8 とともに設定し、対応する MPI_Bcast アルゴリズム向けの
Knomial ツリーの基数を選択します。
I_MPI_ADJUST_ALLREDUCE_KN_RADIX
構文
I_MPI_ADJUST_ALLREDUCE_KN_RADIX=<radix>
引数
<radix>
> 1
Knomial MPI_Allreduce アルゴリズムで Knomial 通信ツリーの構
築に使用される基数を指定する整数値。
デフォルト値は 4 です。
180
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
この環境変数を I_MPI_ADJUST_ALLREDUCE=9 とともに設定し、対応する MPI_Allreduce アルゴリズム向
けの Knomial ツリーの基数を選択します。
I_MPI_ADJUST_REDUCE_KN_RADIX
構文
I_MPI_ADJUST_REDUCE_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Reduce アルゴリズムで Knomial 通信ツリーの構築に使
用される基数を指定する整数値。
デフォルト値は 4 です。
この環境変数を I_MPI_ADJUST_REDUCE=7 とともに設定し、対応する MPI_Reduce アルゴリズム向けの
Knomial ツリーの基数を選択します。
I_MPI_ADJUST_GATHERV_KN_RADIX
構文
I_MPI_ADJUST_GATHERV_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Gatherv アルゴリズムで Knomial 通信ツリーの構築に
使用される基数を指定する整数値。
デフォルト値は 2 です。
この環境変数を I_MPI_ADJUST_GATHERV=3 とともに設定し、対応する MPI_Gatherv アルゴリズム向けの
Knomial ツリーの基数を選択します。
I_MPI_ADJUST_IALLREDUCE_KN_RADIX
構文
I_MPI_ADJUST_IALLREDUCE_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Iallreduce アルゴリズムで Knomial 通信ツリーの構
築に使用される基数を指定する整数値。
デフォルト値は 4 です。
この環境変数を I_MPI_ADJUST_IALLREDUCE=5 とともに設定し、対応する MPI_Iallreduce アルゴリズム
向けの Knomial ツリーの基数を選択します。
181
チューニング・リファレンス
I_MPI_ADJUST_IBCAST_KN_RADIX
構文
I_MPI_ADJUST_IBCAST_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Ibcast アルゴリズムで Knomial 通信ツリーの構築に
使用される基数を指定する整数値。
デフォルト値は 4 です。
この環境変数を I_MPI_ADJUST_IBCAST=4 とともに設定し、対応する MPI_Ibcast アルゴリズム向けの
Knomial ツリーの基数を選択します。
I_MPI_ADJUST_IREDUCE_KN_RADIX
構文
I_MPI_ADJUST_IREDUCE_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Ireduce アルゴリズムで Knomial 通信ツリーの構築に
使用される基数を指定する整数値。
デフォルト値は 4 です。
この環境変数を I_MPI_ADJUST_IREDUCE=3 とともに設定し、対応する MPI_Ireduce アルゴリズム向けの
Knomial ツリーの基数を選択します。
I_MPI_ADJUST_IGATHER_KN_RADIX
構文
I_MPI_ADJUST_IGATHER_KN_RADIX=<radix>
引数
<radix>
> 1
説明
Knomial MPI_Igather アルゴリズムで Knomial 通信ツリーの構築に
使用される基数を指定する整数値。
デフォルト値は 4 です。
この環境変数を I_MPI_ADJUST_IGATHER=2 とともに設定し、対応する MPI_Igather アルゴリズム向けの
Knomial ツリーの基数を選択します。
I_MPI_ADJUST_ISCATTER_KN_RADIX
構文
I_MPI_ADJUST_ISCATTER_KN_RADIX=<radix>
182
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<radix>
Knomial MPI_Iscatter アルゴリズムで Knomial 通信ツリーの構築
に使用される基数を指定する整数値。
デフォルト値は 4 です。
> 1
説明
この環境変数を I_MPI_ADJUST_ISCATTER=2 とともに設定し、対応する MPI_Iscatter アルゴリズム向け
の Knomial ツリーの基数を選択します。
3.4.2. I_MPI_MSG ファミリー
これらの環境変数は廃止されており、下位互換性を提供するためにのみサポートされます。
可能な限り I_MPI_ADJUST 環境変数ファミリーを使用します。
I_MPI_FAST_COLLECTIVES
適切な集団アルゴリズムを選択する際のデフォルトのライブラリーの動作を制御します。
構文
I_MPI_FAST_COLLECTIVES=<arg>
引数
バイナリー・インジケーター。
<arg>
enable| yes | on|1
disable| no|off| 0
説明
高速集団アルゴリズムが使用されます。これは、デフォルト値です。
低速で安全な集団アルゴリズムが使用されます。
インテル® MPI ライブラリーは、デフォルトでアプリケーションのパフォーマンス向けの設計された、高度な集
団操作アルゴリズムを使用します。実装は次のことを前提とします。
•
•
プロセスのレイアウトやほかの可能性を活用するため、集団操作の実行の順番に関して、MPI 標準の
柔軟性を利用しても安全であること。
追加の内部バッファーを割り当てるため、十分なメモリーが利用可能なこと。
物理プロセスのレイアウトやその他の要因に依存しない結果を得るには、I_MPI_FAST_COLLECTIVE 環境変
数を無効に設定します。
注意
この環境変数によって制御される最適化のいくつかは、試行錯誤的なものです。障害が発生した場合、集団操
作の最適化を off にして再度実行してください。
I_MPI_BCAST_NUM_PROCS
MPI_Bcast アルゴリズムのしきい値を制御します。
構文
I_MPI_BCAST_NUM_PROCS=<nproc>
183
チューニング・リファレンス
引数
<nproc>
> 0
MPI_Bcast アルゴリズムを選択するプロセス数のしきい値を定義し
ます。
デフォルト値は 8 です。
I_MPI_BCAST_MSG
MPI_Bcast アルゴリズムのしきい値を制御します。
構文
I_MPI_BCAST_MSG=<nbytes1,nbytes2>
引数
<nbytes1,nbytes2>
> 0
MPI_Bcast アルゴリズム を選択するため、メッセージサイズのしき
い値の範囲をバイト単位で定義します。
デフォルト値は 12288,524288 です。
nbytes2 >= nbytes1
説明
以下のスキームに従って、利用可能な 3 つの MPI_Bcast アルゴリズムを選択するには、この環境変数を設定
します (アルゴリズムの詳細は、表 3.4-1 をご覧ください)。
最初のアルゴリズムは、メッセージサイズが <nbytes1> 未満か、操作するプロセス数が <nproc> 未満の場合
に選択されます。
2 番目のアルゴリズムは、メッセージサイズが <nbytes1> 以上 <nbytes2> 未満で、操作するプロセス数が 2
の累乗である場合に選択されます。
上記の条件が満たされない場合、3 番目のアルゴリズムが選択されます。
I_MPI_ALLTOALL_NUM_PROCS
MPI_Alltoall アルゴリズムのしきい値を制御します。
構文
I_MPI_ALLTOALL_NUM_PROCS=<nproc>
引数
<nproc>
> 0
MPI_Alltoall アルゴリズムを選択するプロセス数のしきい値を定
義します。
デフォルト値は 8 です。
I_MPI_ALLTOALL_MSG
MPI_Alltoall アルゴリズムのしきい値を制御します。
構文
I_MPI_ALLTOALL_MSG=<nbytes1,nbytes2>
184
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
引数
<nbytes1,nbytes2>
> 0
MPI_Alltoall アルゴリズム を選択するため、メッセージサイズの
しきい値の範囲をバイト単位で定義します。
デフォルト値は 256,32768 です。
nbytes2 >= nbytes1
説明
以下のスキームに従って、利用可能な 3 つの MPI_Alltoall アルゴリズムを選択するには、この環境変数を
設定します (アルゴリズムの詳細は、表 3.4-1 をご覧ください)。
最初のアルゴリズムは、メッセージサイズが <nbytes1> 以上で、操作するプロセス数が <nproc> 未満でない
場合に選択されます。
2 番目のアルゴリズムは、メッセージサイズが <nbytes1> より大きく <nbytes2> 以下の場合、またはメッ
セージサイズが <nbytes2> 未満で操作するプロセス数が <nproc> 未満の場合に選択されます。
上記の条件が満たされない場合、3 番目のアルゴリズムが選択されます。
I_MPI_ALLGATHER_MSG
MPI_Allgather アルゴリズムのしきい値を制御します。
構文
I_MPI_ALLGATHER_MSG=<nbytes1,nbytes2>
引数
<nbytes1,nbytes2>
> 0
MPI_Allgather アルゴリズム を選択するため、メッセージサイズ
のしきい値の範囲をバイト単位で定義します。
デフォルト値は 81920,524288 です。
nbytes2 >= nbytes1
説明
以下のスキームに従って、利用可能な 3 つの MPI_Allgather アルゴリズムを選択するには、この環境変数を
設定します (アルゴリズムの詳細は、表 3.4-1 をご覧ください)。
最初のアルゴリズムは、メッセージサイズが <nbytes2> 未満で、操作するプロセス数が 2 の累乗の場合に選
択されます。
2 番目のアルゴリズムは、メッセージサイズが <nbytes1> 未満で、操作するプロセス数が 2 の累乗でない場
合に選択されます。
上記の条件が満たされない場合、3 番目のアルゴリズムが選択されます。
I_MPI_ALLREDUCE_MSG
MPI_Allreduce アルゴリズムのしきい値を制御します。
構文
I_MPI_ALLREDUCE_MSG=<nbytes>
185
チューニング・リファレンス
引数
<nbytes>
> 0
説明
MPI_Allreduce アルゴリズム を選択するため、メッセージサイズ
のしきい値の範囲をバイト単位で定義します。
デフォルト値は 2048 です。
以下のスキームに従って、利用可能な 2 つの MPI_Allreduce アルゴリズムを選択するには、この環境変数を
設定します (アルゴリズムの詳細は、表 3.4-1 をご覧ください)。
最初のアルゴリズムは、メッセージサイズが <nbytes> 以下の場合、ユーザー定義のリダクション操作が使用
されている場合、または <count> 引数がプロセス数以下の 2 の累乗の近似値より小さい場合に選択されます。
上記の条件が満たされない場合、2 番目のアルゴリズムが選択されます。
I_MPI_REDSCAT_MSG
MPI_Reduce_scatter アルゴリズムのしきい値を制御します。
構文
I_MPI_REDSCAT_MSG=<nbytes1,nbytes2>
引数
<nbytes>
> 0
説明
MPI_Reduce_scatter アルゴリズム を選択するため、メッセージ
サイズのしきい値の範囲をバイト単位で定義します。
デフォルト値は 512,524288 です。
以下のスキームに従って、利用可能な 3 つの MPI_Reduce_scatter アルゴリズムを選択するには、この環境
変数を設定します (アルゴリズムの詳細は、表 3.4-1 をご覧ください)。
リダクション操作が可換であり、メッセージサイズが、<nbytes2> 未満の場合、最初のアルゴリズムが選択さ
れます。
2 番目のアルゴリズムは、リダクション操作が可換であり、メッセージサイズが <nbytes2> 以上の場合、ま
たはリダクション操作が可換でなく、メッセージサイズが <nbytes1> 以上の場合に選択されます。
上記の条件が満たされない場合、3 番目のアルゴリズムが選択されます。
I_MPI_SCATTER_MSG
MPI_Scatter アルゴリズムのしきい値を制御します。
構文
I_MPI_SCATTER_MSG=<nbytes>
引数
<nbytes>
> 0
MPI_Scatter アルゴリズム を選択するため、バッファーサイズのし
きい値の範囲をバイト単位で定義します。
デフォルト値は 2048 です。
186
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
以下のスキームに従って、利用可能な 2 つの MPI_Scatter アルゴリズムを選択するには、この環境変数を設
定します (アルゴリズムの詳細は、表 3.4-1 をご覧ください)。
メッセージサイズが <nbytes> より大きい場合、最初のアルゴリズムがコミュニケーター間で選択されます。
上記の条件が満たされない場合、2 番目のアルゴリズムが選択されます。
I_MPI_GATHER_MSG
MPI_Gather アルゴリズムのしきい値を制御します。
構文
I_MPI_GATHER_MSG=<nbytes>
引数
<nbytes>
MPI_Gather アルゴリズム を選択するため、バッファーサイズのし
きい値の範囲をバイト単位で定義します。
デフォルト値は 2048 です。
> 0
説明
以下のスキームに従って、利用可能な 2 つの MPI_Gather アルゴリズムを選択するには、この環境変数を設定
します (アルゴリズムの詳細は、表 3.4-1 をご覧ください)。
メッセージサイズが <nbytes> より大きい場合、最初のアルゴリズムがコミュニケーター間で選択されます。
上記の条件が満たされない場合、2 番目のアルゴリズムが選択されます。
3.5. その他
このセクションでは、次のような情報を提供します。
•
•
•
•
•
•
•
•
•
タイマー制御
互換性制御
ダイナミック・プロセスのサポート
フォールトトレラント
統計収集モード
ILP64 サポート
ユニファイド・メモリー管理
ファイルシステムのサポート
マルチスレッド化された memcpy のサポート
3.5.1. タイマー制御
I_MPI_TIMER_KIND
MPI_Wtime と MPI_Wtick 呼び出して使用されるタイマーを選択します。
構文
I_MPI_TIMER_KIND=<timername>
187
チューニング・リファレンス
引数
<timername>
gettimeofday
タイマーのタイプを定義します。
この設定を選択した場合、MPI_Wtime と MPI_Wtick 関数は、
gettimeofday(2) 関数を介して動作します。これは、デフォルト
値です。
この設定を選択した場合、MPI_Wtime と MPI_Wtick 関数は、高精
度の RDTSC タイマーを介して動作します。
rdtsc
説明
通常のまたは RDTSC タイマーのいずれかを選択するには、この環境変数を設定します。
デフォルトの gettimeofday(2) タイマーの解像度は、一部のプラットフォームでは十分でない可能性があり
ます。
3.5.2. 互換性制御
I_MPI_COMPATIBILITY
ランタイムの互換性モードを選択します。
構文
I_MPI_COMPATIBILITY=<value>
引数
<value>
定義しない
3
4
説明
互換性モードを定義します。
MPI-3.0 標準互換。これは、デフォルト値です。
インテル® MPI ライブラリー 3.x 互換モード。
インテル® MPI ライブラリー 4.0.x 互換モード。
インテル® MPI ライブラリー・ランタイムの互換性モードを選択するには、この環境変数を設定します。デフォ
ルトでは、ライブラリーは MPI-3.0 標準互換でコンパイルされます。MPI-2.1 の機能を使用している場合は、
I_MPI_COMPATIBILITY 環境変数に 4 に設定します。MPI-2.1 以前の機能を使用している場合は、
I_MPI_COMPATIBILITY 環境変数に 3 に設定します。
3.5.3. ダイナミック・プロセスのサポート
インテル® MPI ライブラリーは、MPI アプリケーションが起動された後に、プロセスの生成と強調終了を可能に
する MPI-2 のプロセスモデルをサポートしています。以下を提供します。
•
•
新規に生成されたプロセスと既存の MPI アプリケーション間の通信を確立するメカニズム
2 つの既存の MPI アプリケーションで一方が他方をスポーンしなくても通信を確立する、プロセスを
アタッチするメカニズム
生成されたプロセスのデフォルトの配置は、ラウンドロビン・スケジュールを使用します。最初にスポーンさ
れたプロセスは、親グループの最後のプロセスの後に配置されます。通常のファブリック選択アルゴリズムを
使用して、特定のネットワーク・ファブリックの組み合わせが選択されます (詳細は、「I_MPI_FABRICS」と
「I_MPI_FABRICS_LIST」をご覧ください)。
188
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
例えば、ダイナミック・アプリケーションを実行するするには、次のコマンドを使用します。
$ mpirun -n 1 -gwdir <path_to_executable> -genv I_MPI_FABRICS shm:tcp <spawn_app>
この例では、spawn_app は 4 つのダイナミック・プロセスをスポーンします。
mpd.hosts が以下を含んでいる場合:
host1
host2
host3
host4
次のようにダイナミックにプロセスが分散されている場合、元のスポーンを行うプロセスは host1 に配置され
ます。
1 - host2、2 - host3、3 - host4、そして 4 - 再び host1
クライアント・サーバー型のアプリケーションを実行するには、サーバーホスト上で次のコマンドラインを実
行します。
$ mpirun -n 1 -genv I_MPI_FABRICS shm:dapl <server_app> > <port_name>
そして、対応するクライアントで次のコマンドを実行します。
$ mpirun -n 1 -genv I_MPI_FABRICS shm:dapl <client_app> < <port_name>
単純な MPI_COMM_JOIN ベースのアプリケーションを実行するには、サーバーホスト上で次のコマンドライン
を実行します。
$ mpirun -n 1 -genv I_MPI_FABRICS shm:ofa <join_server_app> < <port_number>
$ mpirun -n 1 -genv I_MPI_FABRICS shm:ofa <join_client_app> < <port_number>
3.5.4. フォールトトレラント
インテル® MPI ライブラリーは、MPI アプリケーションでフォールトトレラントのサポートを有効にする特別な
機能を提供します。MPI 標準は、MPI アプリケーションの 1 つもしくはいくつかのプロセスが異常終了した際
の MPI 実行の動作を定義していません。デフォルトでは、インテル® MPI ライブラリーは、プロセスが停止す
るとアプリケーション全体を異常終了します。
環境変数 I_MPI_FAULT_CONTINUE を設定すると、この動作を変更できます。
例:
$ mpirun -env I_MPI_FAULT_CONTINUEon -n 2 ./test
MPI プロセスに問題が発生した場合、アプリケーションが処理を継続するには、問題は次の要件を満たす必要
があります。
•
•
•
•
•
•
アプリケーションはエラーハンドラー MPI_ERRORS_RETURN をコミュニケーター MPI_COMM_WORLD
に設定する (すべての新しいコミュニケーターはそこからエラーハンドラーを継承)。
アプリケーションは、マスター・スレーブ・モデルを採用している。この場合、アプリケーションは
マスターが完了した、もしくは反応しないときにのみ停止します。
アプリケーションは、マスターとスレーブ間でポイントツーポイント通信のみを使用します。この場
合、スレーブ間での通信や MPI 集団通信を行いません。
ランクの異なる通信を回避するため、アプリケーションのスレーブランクの特定のエラーとポイント
ツーポイント操作の MPI エラーコードを処理します。スレーブランクは、ブロック/非ブロック送信、
受信、調査、およびテストを行うことができます。
任意の通信操作をサブセット通信システム上で使用できます。集団操作でエラーが発生した場合、こ
のコミュニケーター内部の通信はすべて禁止されます。
マスターの失敗はジョブの停止を意味します。
189
チューニング・リファレンス
フォールトトレラント機能は、スポーンされたプロセスでは利用できません。
•
環境変数
I_MPI_FAULT_CONTINUE
フォールトトレラントのアプリケーションサポートを on/off にします。
構文
I_MPI_FAULT_CONTINUE=<arg>
引数
バイナリー・インジケーター。
<arg>
enable |yes |on|1
disable| no|off| 0
説明
フォールトトレラントのアプリケーションサポートを on にします。
フォールトトレラントのアプリケーションサポートを off にします。これ
は、デフォルト値です。
フォールトトレラント型のアプリケーションをサポートするには、この環境変数を設定します。
使用モデル
アプリケーションは MPI_ERRORS_RETURN エラーハンドラーをセットし、各通信呼び出し後にエラーコードを
チェックします。通信呼び出しが MPI_SUCCESS を返さない場合、送信先のプロセスが到達不能とマークされ、
通信から除外します。次に例を示します。
if(live_ranks[rank]) {
mpi_err = MPI_Send(buf, count, dtype, rank, tag, MPI_COMM_WORLD);
if(mpi_err != MPI_SUCCESS) {
live_ranks[rank] = 0;
}
}
非ブロッキング通信の場合、待機もしくはテスト中にエラーが表示されることがあります。
3.5.5. 統計収集モード
ここでは、インテル® MPI ライブラリーの統計収集モデルと、環境変数を介してどのように収集を行うか説明し
ます。インテル® MPI ライブラリーは、次の統計形式をサポートします。
•
•
ネイティブ統計形式
IPM 統計形式
ネイティブ統計形式については、「ネイティブ統計形式」を、IPM 統計形式については、「IPM 統計形式」を
ご覧ください。両方の統計タイプを収集する可能性もあります。詳細は、「ネイティブと IPM 統計」をご覧く
ださい。
190
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
ネイティブ統計形式
インテル® MPI ライブラリーは、アプリケーションの実行を妨げることなく、パフォーマンス・データを収集す
る組込み統計収集機能を持っています。収集された情報はテキストファイルに書き込まれます。ここでは、組
込み統計収集機能を制御するために利用できる環境変数、およびプロバイダーの出力ファイル例について説明
します。
環境変数を利用するほかにも、MPI Performance Snapshot の -mps オプションを使用して、ネイティブ統計情
報を収集できます。次に例を示します。
$ mpirun -mps –n 2 ./myApp
詳細は、-mps の説明をご覧ください。
I_MPI_STATS
統計収集を制御します。既存の値に加え、I_MPI_STATS 環境変数の値を拡張します。
構文
I_MPI_STATS=[native:][n-] m
引数
n, m
1
2
3
4
10
20
説明
出力情報の統計レベル。
各プロセスが送信したデータ量を出力。
セル数と転送されたデータ量を出力。
統計出力は、実際の引数に応じて組み合わされます。
バケットリストで定義された統計出力。
すべての通信コンテキストの集団操作の統計出力。
すべての MPI 関数の時間情報を追加して出力。
この環境変数は、収集する統計情報の量をとファイルへのログ出力を制御します。統計出力はデフォルトでは
ありません。
注意
n,m は正の整数値です。出力する情報の範囲を定義します。レベル n から m まで (n と m を含む) の統計を出力
します。
n が指定されない場合、デフォルト値は 1 です。
I_MPI_STATS_SCOPE
統計情報を収集するサブシステムを選択します。
構文
I_MPI_STATS_SCOPE="<subsystem>[:<ops>][;<subsystem>[:<ops>][...]]"
191
チューニング・リファレンス
引数
<subsystem>
all
coll
ターゲットのサブシステムを定義します。
すべての操作の統計データを収集します。これは、デフォルト値で
す。
すべての集団操作の統計データを収集します。
p2p
すべてのポイントツーポイント操作の統計データを収集します。
<ops>
カンマで区切られたターゲット操作のリストを定義します。
Allgather
MPI_Allgather
Iallgather
MPI_Iallgather
Allgatherv
MPI_Allgatherv
Iallgatherv
MPI_Iallgatherv
Allreduce
MPI_Allreduce
Iallreduce
MPI_Iallreduce
Alltoall
MPI_Alltoall
Ialltoall
MPI_Ialltoall
Alltoallv
MPI_Alltoallv
Ialltoallv
MPI_Ialltoallv
Alltoallw
MPI_Alltoallw
Ialltoallw
MPI_Ialltoallw
Barrier
MPI_Barrier
Ibarrier
MPI_Ibarrier
Bcast
MPI_Bcast
Ibcast
MPI_Ibcast
Exscan
MPI_Exscan
Iexscan
MPI_Iexscan
Gather
MPI_Gather
Igather
MPI_Igather
192
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
Gatherv
MPI_Gatherv
Igatherv
MPI_Igatherv
Reduce_scatter
MPI_Reduce_scatter
Ireduce_scatter
MPI_Ireduce_scatter
Reduce
MPI_Reduce
Ireduce
MPI_Ireduce
Scan
MPI_Scan
Iscan
MPI_Iscan
Scatter
MPI_Scatter
Iscatter
MPI_Iscatter
Scatterv
MPI_Scatterv
Iscatterv
MPI_Iscatterv
Send
標準転送 (MPI_Send、MPI_Isend、MPI_Send_init)。
Sendrecv
Bsend
Csend
Csendrecv
Rsend
Ssend
説明
送信-受信転送 (MPI_Sendrecv、MPI_Sendrecv_replace)。
バッファー転送 (MPI_Bsend、MPI_Ibsend、MPI_Bsend_init)。
集団内部のポイントツーポイント操作。この内部操作はすべての集団
を扱います。
集団内部のポイントツーポイントの送受信操作。この内部操作はすべ
ての集団を扱います。
レディ転送 (MPI_Rsend、MPI_Irsend、MPI_Rsend_init)。
同時転送 (MPI_Ssend、MPI_Issend、MPI_Ssend_init)。
統計情報を収集するためターゲットのサブシステムを選択するには、この環境変数を設定します。すべての集
団とポイントツーポイント操作は内部的に収集を行うため、デフォルトでカバーされます。
例
デフォルト設定は次と等価です。
I_MPI_STATS_SCOPE="coll;p2p"
MPI_Bcast、MPI_Reduce、そしてすべてのポイントツーポイント操作の統計情報を収集するには、次の設定
を行います。
I_MPI_STATS_SCOPE="p2p;coll:bcast,reduce"
ポイントツーポイント操作内部の統計情報を収集するには、次の設定を行います。
I_MPI_STATS_SCOPE=p2p:csend
193
チューニング・リファレンス
I_MPI_STATS_BUCKETS
統計情報の収集に使用するメッセージのサイズとコミュニケーターのサイズの範囲を示すリストを特定します。
構文
I_MPI_STATS_BUCKETS=<msg>[@<proc>][,<msg>[@<proc>]]...
引数
<msg>
<l>
メッセージサイズの範囲をバイト単位で指定します。
単一のメッセージサイズ。
<l>-<m>
範囲 <l> から <m>。
<proc>
集合操作のプロセス (ランク) 範囲を指定します。
<p>
<p>-<q>
説明
単一のコミュニケーター・サイズ。
範囲 <p> から <q>。
メッセージサイズとコミュニケーター・サイズの範囲を定義するため、I_MPI_STATS_BUCKETS 環境変数を設
定します。
レベル 4 の統計は、これらの範囲のプロファイル情報を提供します。
I_MPI_STATS_BUCKETS 環境変数が設定されていない場合、レベル 4 の統計が収集されます。範囲が指定さ
れていないと、可能な限り最大の範囲が想定されます。
例
短いメッセージ (0 から 1000 バイトまで) と長いメッセージ (50000 から 100000 バイトまで) を指定するには、
次のように設定します。
-env I_MPI_STATS_BUCKETS 0-1000,50000-100000
サイズが 16 バイトで、4 つのプロセス内で循環するメッセージを指定するには、次の設定を行います。
-env I_MPI_STATS_BUCKETS "16@4"
注意
@ シンボルがある場合、環境変数の値は引用符で囲む必要があります。
I_MPI_STATS_FILE
統計出力ファイル名を定義します。
構文
I_MPI_STATS_FILE=<name>
引数
<name>
統計出力ファイル名を定義します。
194
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
この環境変数には統計出力ファイルを設定します。デフォルトでは、stats.txt ファイルはカレント・ディレ
クトリーに作成されます。
この変数が設定されず、統計出力ファイルがすでに存在している場合、ファイル名にインデックスが追加され
ます。例えば、stats.txt が存在すると、stats(2).txt という統計出力ファイルが作成され、
stats(2).txt が存在すれば stats(3).txt が作成されます。
統計データは、MPI_COMM_WORLD コミュニケーターのプロセスランクに応じてブロックおよび順序付けされま
す。
タイミングデータは、マイクロ秒単位で指定します。例えば、次のようなプログラムについて考えてみます。
I_MPI_STATS=4
I_MPI_STATS_SCOPE="p2p;coll:allreduce"
MPI_Allreduce 操作のみを行う簡単なプログラムの統計出力は、次のようになります。
Intel(R) MPI Library Version 5.1
____ MPI Communication Statistics ____
Stats level: 4
P2P scope:< FULL >
Collectives scope:< Allreduce >
~~~~ Process 0 of 2 on node svlmpihead01 lifetime = 414.13
Data Transfers
Src Dst Amount(MB) Transfers
----------------------------------------000 --> 000 0.000000e+00 0
000 --> 001 7.629395e-06 2
=========================================
Totals 7.629395e-06 2
Communication Activity
Operation Volume(MB) Calls
----------------------------------------P2P
Csend 7.629395e-06 2
Csendrecv 0.000000e+00 0
Send 0.000000e+00 0
Sendrecv 0.000000e+00 0
Bsend 0.000000e+00 0
Rsend 0.000000e+00 0
Ssend 0.000000e+00 0
Collectives
Allreduce 7.629395e-06 2
=========================================
Communication Activity by actual args
P2P
Operation Dst Message size Calls
--------------------------------------------Csend
1 1 4 2
Collectives
Operation Context Algo Comm size Message size Calls Cost(%)
-------------------------------------------------------------------------------Allreduce
1 0 1 2 4 2 44.96
============================================================================
~~~~ Process 1 of 2 on node svlmpihead01 lifetime = 306.13
195
チューニング・リファレンス
Data Transfers
Src Dst Amount(MB) Transfers
----------------------------------------001 --> 000 7.629395e-06 2
001 --> 001 0.000000e+00 0
=========================================
Totals 7.629395e-06 2
Communication Activity
Operation Volume(MB) Calls
----------------------------------------P2P
Csend 7.629395e-06 2
Csendrecv 0.000000e+00 0
Send 0.000000e+00 0
Sendrecv 0.000000e+00 0
Bsend 0.000000e+00 0
Rsend 0.000000e+00 0
Ssend 0.000000e+00 0
Collectives
Allreduce 7.629395e-06 2
=========================================
Communication Activity by actual args
P2P
Operation Dst Message size Calls
--------------------------------------------Csend
1 0 4 2
Collectives
Operation Context Comm size Message size Calls Cost(%)
-----------------------------------------------------------------------Allreduce
1 0 2 4 2 37.93
========================================================================
____ End of stats.txt file ____
上の例では:
•
•
•
•
•
すべての時間は、マイクロ秒で計測されています。
メッセージサイズはバイトでカウントされます。MB は、メガバイトの略で、220 もしくは 1 048 576
バイトと等価です。
プロセスのライフタイムは、MPI_Init と MPI_Finalize 間の時間の連続として計算されます。
Algo フィールドは、指定された引数の操作で使用されるアルゴリズムの数を表します。
Cost フィールドは、特定の集合演算の実行時間をプロセスのライフタイムのパーセンテージで表しま
す。
領域制御
インテル® MPI ライブラリーは、またオプションの領域機能をサポートします。領域は、IPM 統計形式です。
IPM に関する詳細は、「IPM 統計形式」をご覧ください。この機能を使用するには、ソースコードを修正する
必要があります。MPI_Pcontrol 関数を使用します。
領域は、標準的な MPI_Pcontrol 関数呼び出しにより、開始と終了ポイントでマークされたソースコードの一
部です。MPI_Pcontrol 関数は、次の特殊パーマネント領域には使用できません。
196
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
•
•
MPI_Init から MPI_Finalize までの、すべての MPI 呼び出しの統計情報を含むメイン領域。IPM
統計出力向けに「*」で命名されたメイン領域。この領域のデフォルト出力ファイルは、ネイティブ統
計形式の stats.txt です。
補足領域は、統計情報を含みますが名前付けされた領域は含まれません。領域は、IPM 統計形式向け
の出力で「ipm_noregion」と命名されます。この領域のデフォルト出力ファイルは、ネイティブ統
計形式の stats_noregion.txt です。
名前付き領域を使用しない場合、メイン領域と補足領域は同一となり、補足領域は無視されます。
各領域は、領域内の MPI 関数呼び出しに関する独立した統計情報を含んでいます。
インテル® MPI ライブラリーは、次の領域タイプをサポートします。
•
Discontiguous (不連続} (いくつかのオープンとクローズ)。
•
Intersected (交差)。
•
MPI プロセスのサブセットをカバーします (MPI_COMM_WORLD 環境変数の一部)。
MPI_Pcontrol(1, <name>) 呼び出しで開かれた領域は、MPI_Pcontrol(-1, <name>) 呼び出しで閉じら
れます。<name> は、NULL で終わる文字列の領域名です。<name> は、IPM 統計形式の出力に使用されます。
この領域のデフォルト出力ファイルは、ネイティブ統計形式の stats_<name>.txt です。
開かれているすべての領域は、MPI_Finalize 関数内で自動的にクローズされます。
IPM 統計形式
インテル® MPI ライブラリーは、前述したように、組込み統計収集メカニズムの一部として、統合パフォーマン
ス・モニタリング (IPM) サマリー形式をサポートしています。この情報を収集するため、ソースコードを変更
したり、アプリケーションを再リンクする必要はありません。
I_MPI_STATS_BUCKETS 環境変数は、IPM 形式には適用されません。
I_MPI_STATS_ACCURACY 環境変数で、特殊機能を制御できます。
I_MPI_STATS
統計データの出力形式を制御します。
構文
I_MPI_STATS=<level>
引数
<level>
ipm
ipm:terse
説明
統計データのレベル。
すべての領域のサマリーデータ。
基本サマリーデータ。
領域のサマリーを含む統計情報を出力するには、この環境変数に ipm を設定します。簡単な統計出力を得るに
は、この環境変数に ipm:terse を設定します。
I_MPI_STATS_FILE
出力ファイル名を定義します。
構文
I_MPI_STATS_FILE=<name>
197
チューニング・リファレンス
引数
<name>
説明
統計データを収集するためのファイル名。
統計情報出力ファイル名のデフォルト stats.ipm を変更するには、この環境変数を設定します。
この変数が設定されず、統計出力ファイルがすでに存在している場合、ファイル名にインデックスが追加され
ます。例えば、stats.ipm が存在すると、stats(2).ipm という統計出力ファイルが作成され、
stats(2).ipm が存在すれば stats(3).ipm が作成されます。
I_MPI_STATS_SCOPE
統計収集のための MPI 関数のサブセットのリストをカンマで区切って定義します。
構文
I_MPI_STATS_SCOPE="<subset>[;<subset>[;…]]」
引数
<subset>
all2all
all2one
attr
comm
err
group
init
io
one2all
recv
req
rma
scan
send
sendrecv
serv
spawn
ターゲットのサブセット。
all to all 関数タイプの統計データを収集します。
all to one 関数タイプの統計データを収集します。
属性制御関数の統計データを収集します。
コミュニケーター制御関数の統計データを収集します。
エラー制御関数の統計データを収集します。
グループサポート関数の統計データを収集します。
イニシャライズとファイナライズ関数の統計データを収集します。
入力/出力サポート関数の統計データを収集します。
one to all 関数タイプの統計データを収集します。
受信関数の統計データを収集します。
要求サポート関数の統計データを収集します。
一方向通信関数の統計データを収集します。
スキャン集団関数の統計データを収集します。
送信関数の統計データを収集します。
送受信関数の統計データを収集します。
追加のサービス関数の統計データを収集します。
ダイナミック・プロセス関数の統計データを収集します。
198
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
status
sync
time
topo
type
説明
ステータス制御関数の統計データを収集します。
バリア同期の統計データを収集します。
タイミングサポート関数の統計データを収集します。
トポロジーサポート関数の統計データを収集します。
データ型サポート関数の統計データを収集します。
次の表で示される統計情報のサブセット、または MPI 関数のサブセットを定義するには、この環境変数を設定
します。すべてのサブセットの統合がデフォルトです。
表 3.5-1 MPI 関数の統計サブセット
all2all
one2all
MPI_Allgather
MPI_Allgatherv
MPI_Allreduce
MPI_Alltoll
MPI_Alltoallv
MPI_Alltoallw
MPI_Reduce_scatter
MPI_Iallgather
MPI_Iallgatherv
MPI_Iallreduce
MPI_Ialltoll
MPI_Ialltoallv
MPI_Ialltoallw
MPI_Ireduce_scatter
MPI_Ireduce_scatter_block
MPI_Bcast
MPI_Scatter
MPI_Scatterv
MPI_Ibcast
MPI_Iscatter
MPI_Iscatterv
all2one
MPI_Gather
MPI_Gatherv
MPI_Reduce
MPI_Igather
MPI_Igatherv
MPI_Ireduce
attr
MPI_Comm_create_keyval
MPI_Comm_delete_attr
MPI_Comm_free_keyval
MPI_Comm_get_attr
MPI_Comm_set_attr
MPI_Comm_get_name
MPI_Comm_set_name
MPI_Type_create_keyval
MPI_Type_delete_attr
MPI_Type_free_keyval
MPI_Type_get_attr
MPI_Type_get_name
recv
MPI_Recv
MPI_Irecv
MPI_Recv_init
MPI_Probe
MPI_Iprobe
req
MPI_Start
MPI_Startall
MPI_Wait
MPI_Waitall
MPI_Waitany
MPI_Waitsome
MPI_Test
MPI_Testall
MPI_Testany
MPI_Testsome
MPI_Cancel
MPI_Grequest_start
MPI_Grequest_complete
MPI_Request_get_status
MPI_Request_free
rma
MPI_Accumulate
MPI_Get
MPI_Put
MPI_Win_complete
MPI_Win_create
199
チューニング・リファレンス
MPI_Type_set_attr
MPI_Type_set_name
MPI_Win_create_keyval
MPI_Win_delete_attr
MPI_Win_free_keyval
MPI_Win_get_attr
MPI_Win_get_name
MPI_Win_set_attr
MPI_Win_set_name
MPI_Get_processor_name
comm
MPI_Comm_compare
MPI_Comm_create
MPI_Comm_dup
MPI_Comm_free
MPI_Comm_get_name
MPI_Comm_group
MPI_Comm_rank
MPI_Comm_remote_group
MPI_Comm_remote_size
MPI_Comm_set_name
MPI_Comm_size
MPI_Comm_split
MPI_Comm_test_inter
MPI_Intercomm_create
MPI_Intercomm_merge
err
MPI_Add_error_class
MPI_Add_error_code
MPI_Add_error_string
MPI_Comm_call_errhandler
MPI_Comm_create_errhandler
MPI_Comm_get_errhandler
MPI_Comm_set_errhandler
MPI_Errhandler_free
MPI_Error_class
MPI_Error_string
MPI_File_call_errhandler
MPI_File_create_errhandler
MPI_File_get_errhandler
MPI_File_set_errhandler
MPI_Win_call_errhandler
MPI_Win_create_errhandler
MPI_Win_get_errhandler
MPI_Win_set_errhandler
group
MPI_Group_compare
MPI_Group_difference
MPI_Group_excl
MPI_Group_free
MPI_Group_incl
MPI_Group_intersection
MPI_Win_fence
MPI_Win_free
MPI_Win_get_group
MPI_Win_lock
MPI_Win_get_accumulate
MPI_Win_fetch_and_op
MPI_Win_compare_and_swap
MPI_Rput
MPI_Rget
MPI_Raccumulate
MPI_Rget_accumulate
MPI_Win_lock_all
MPI_Win_unlock_all
MPI_Win_flush
MPI_Win_flush_all
MPI_Win_flush_local
MPI_Win_flush_local_all
MPI_Win_sync
scan
MPI_Exscan
MPI_Scan
MPI_Iexscan
MPI_Iscan
send
MPI_Send
MPI_Bsend
MPI_Rsend
MPI_Ssend
MPI_Isend
MPI_Ibsend
MPI_Irsend
MPI_Issend
MPI_Comm_connect
MPI_Comm_disconnect
MPI_Comm_get_parent
MPI_Comm_join
MPI_Comm_spawn
MPI_Comm_spawn_multiple
MPI_Lookup_name
MPI_Open_port
MPI_Publish_name
MPI_Unpublish_name
status
MPI_Get_count
MPI_Status_set_elements
MPI_Status_set_cancelled
MPI_Test_cancelled
sync
MPI_Barrier
MPI_Ibarrier
200
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
MPI_Group_range_excl
MPI_Group_range_incl
MPI_Group_rank
MPI_Group_size
MPI_Group_translate_ranks
MPI_Group_union
init
MPI_Init
MPI_Init_thread
MPI_Finalize
io
MPI_File_close
MPI_File_delete
MPI_File_get_amode
MPI_File_get_atomicity
MPI_File_get_byte_offset
MPI_File_get_group
MPI_File_get_info
MPI_File_get_position
MPI_File_get_position_shared
MPI_File_get_size
MPI_File_get_type_extent
MPI_File_get_view
MPI_File_iread_at
MPI_File_iread
MPI_File_iread_shared
MPI_File_iwrite_at
MPI_File_iwrite
MPI_File_iwrite_shared
MPI_File_open
MPI_File_preallocate
MPI_File_read_all_begin
MPI_File_read_all_end
MPI_File_read_all
MPI_File_read_at_all_begin
MPI_File_read_at_all_end
MPI_File_read_at_all
MPI_File_read_at
MPI_File_read
MPI_File_read_ordered_begin
MPI_File_read_ordered_end
MPI_File_read_ordered
MPI_File_read_shared
MPI_File_seek
MPI_File_seek_shared
MPI_File_set_atomicity
MPI_File_set_info
MPI_File_set_size
MPI_File_set_view
MPI_File_sync
MPI_File_write_all_begin
MPI_File_write_all_end
MPI_File_write_all
time
MPI_Wtick
MPI_Wtime
topo
MPI_Cart_coords
MPI_Cart_create
MPI_Cart_get
MPI_Cart_map
MPI_Cart_rank
MPI_Cart_shift
MPI_Cart_sub
MPI_Cartdim_get
MPI_Dims_create
MPI_Graph_create
MPI_Graph_get
MPI_Graph_map
MPI_Graph_neighbors
MPI_Graphdims_get
MPI_Graph_neighbors_count
MPI_Topo_test
type
MPI_Get_address
MPI_Get_elements
MPI_Pack
MPI_Pack_external
MPI_Pack_external_size
MPI_Pack_size
MPI_Type_commit
MPI_Type_contiguous
MPI_Type_create_darray
MPI_Type_create_hindexed
MPI_Type_create_hvector
MPI_Type_create_indexed_block
MPI_Type_create_resized
MPI_Type_create_struct
MPI_Type_create_subarray
MPI_Type_dup
MPI_Type_free
MPI_Type_get_contents
MPI_Type_get_envelope
MPI_Type_get_extent
MPI_Type_get_true_extent
MPI_Type_indexed
MPI_Type_size
MPI_Type_vector
MPI_Unpack_external
MPI_Unpack
201
チューニング・リファレンス
MPI_File_write_at_all_begin
MPI_File_write_at_all_end
MPI_File_write_at_all
MPI_File_write_at
MPI_File_write
MPI_File_write_ordered_begin
MPI_File_write_ordered_end
MPI_File_write_ordered
MPI_File_write_shared
MPI_Register_datarep
I_MPI_STATS_ACCURACY
統計出力を減らすには、I_MPI_STATS_ACCURACY 環境変数を使用します。
構文
I_MPI_STATS_ACCURACY=<percentage>
引数
<percentage>
説明
float のしきい値。
すべての MPI 呼び出し内部で費やされた総時間のパーセンテージで示される、大部分の時間を占める MPI 関数
のデータを収集するには、この環境変数を設定します。
例
次の例は、簡単なアプリケーションのソースと IPM 統計形式のサマリーを示します。
int main (int argc, char *argv[])
{
int i, rank, size, nsend, nrecv; MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank); nsend = rank;
MPI_Wtime();
for (i = 0; i < 200; i++)
{
MPI_Barrier(MPI_COMM_WORLD);
}
/* open "reduce" region for all processes */ MPI_Pcontrol(1, "reduce");
for (i = 0; i < 1000; i++)
MPI_Reduce(&nsend, &nrecv, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);
/* close "reduce" region */ MPI_Pcontrol(-1, "reduce"); if (rank == 0)
{
/* "send" region for 0-th process only */ MPI_Pcontrol(1, "send");
MPI_Send(&nsend, 1, MPI_INT, 1, 1, MPI_COMM_WORLD);
MPI_Pcontrol(-1, "send");
}
if (rank == 1)
{
MPI_Recv(&nrecv, 1, MPI_INT, 0, 1, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
}
/* reopen "reduce" region */ MPI_Pcontrol(1, "reduce"); for (i = 0; i < 1000; i++)
MPI_Reduce(&nsend, &nrecv, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD); MPI_Wtime();
MPI_Finalize (); return 0;
}
202
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
コマンド:
mpiexec -n 4 -env I_MPI_STATS ipm:terse ./a.out
統計出力:
################################################################################
#
# command : ./a.out (completed)
# host : svlmpihead01/x86_64_Linux mpi_tasks : 4 on 1 nodes
# start : 05/25/11/05:44:13 wallclock : 0.092012 sec
# stop : 05/25/11/05:44:13 %comm : 98.94
# gbytes : 0.00000e+00 total gflop/sec : NA
#
################################################################################
コマンド:
mpiexec -n 4 -env I_MPI_STATS ipm ./a.out
統計出力:
################################################################################
#
# command : ./a.out (completed)
# host : svlmpihead01/x86_64_Linux mpi_tasks : 4 on 1 nodes
# start : 05/25/11/05:44:13 wallclock : 0.092012 sec
# stop : 05/25/11/05:44:13 %comm : 98.94
# gbytes : 0.00000e+00 total gflop/sec : NA
#
################################################################################
# region : * [ntasks] = 4
#
# [total] <avg> min max
# entries 4 1 1 1
# wallclock 0.332877 0.0832192 0.0732641 0.0920119
# user 0.047992 0.011998 0.006999 0.019996
# system 0.013997 0.00349925 0.002999 0.004
# mpi 0.329348 0.082337 0.0723064 0.0912335
# %comm 98.9398 98.6928 99.154
# gflop/sec NA NA NA NA
# gbytes 0 0 0 0
#
#
# [time] [calls] <%mpi> <%wall>
# MPI_Init 0.236192 4 71.71 70.95
# MPI_Reduce 0.0608737 8000 18.48 18.29
# MPI_Barrier 0.027415 800 8.32 8.24
# MPI_Recv 0.00483489 1 1.47 1.45
# MPI_Send 1.50204e-05 1 0.00 0.00
# MPI_Wtime 1.21593e-05 8 0.00 0.00
# MPI_Finalize 3.33786e-06 4 0.00 0.00
# MPI_Comm_rank 1.90735e-06 4 0.00 0.00
# MPI_TOTAL 0.329348 8822 100.00 98.94
################################################################################
# region : reduce [ntasks] = 4
#
# [total] <avg> min max
# entries 8 2 2 2
203
チューニング・リファレンス
# wallclock 0.0638561 0.015964 0.00714302 0.0238571
# user 0.034994 0.0087485 0.003999 0.015997
# system 0.003999 0.00099975 0 0.002999
# mpi 0.0608799 0.01522 0.00633883 0.0231845
# %comm 95.3392 88.7417 97.1808
# gflop/sec NA NA NA NA
# gbytes 0 0 0 0
#
#
# [time] [calls] <%mpi> <%wall>
# MPI_Reduce 0.0608737 8000 99.99 95.33
# MPI_Finalize 3.33786e-06 4 0.01 0.01
# MPI_Wtime 2.86102e-06 4 0.00 0.00
# MPI_TOTAL 0.0608799 8008 100.00 95.34
################################################################################
# region : send [ntasks] = 4
#
# [total] <avg> min max
# entries 1 0 0 1
# wallclock 2.89876e-05 7.24691e-06 1e-06 2.59876e-05
# user 0 0 0 0
# system 0 0 0 0
# mpi 1.50204e-05 3.75509e-06 0 1.50204e-05
# %comm 51.8165 0 57.7982
# gflop/sec NA NA NA NA
# gbytes 0 0 0 0
#
#
# [time] [calls] <%mpi> <%wall>
# MPI_Send 1.50204e-05 1 100.00 51.82
################################################################################
# region : ipm_noregion [ntasks] = 4
#
# [total] <avg> min max
# entries 13 3 3 4
# wallclock 0.26898 0.0672451 0.0661182 0.068152
# user 0.012998 0.0032495 0.001 0.004999
# system 0.009998 0.0024995 0 0.004
# mpi 0.268453 0.0671132 0.0659676 0.068049
# %comm 99.8039 99.7721 99.8489
# gflop/sec NA NA NA NA
# gbytes 0 0 0 0
#
#
# [time] [calls] <%mpi> <%wall>
# MPI_Init 0.236192 4 87.98 87.81
# MPI_Barrier 0.027415 800 10.21 10.19
# MPI_Recv 0.00483489 1 1.80 1.80
# MPI_Wtime 9.29832e-06 4 0.00 0.00
# MPI_Comm_rank 1.90735e-06 4 0.00 0.00
# MPI_TOTAL 0.268453 813 100.00 99.80
################################################################################
204
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
ネイティブと IPM 統計
サポートされるぞれぞれの形式は、個別に収集できます。最も詳細なレベルですべての形式の統計情報を収集
するには、I_MPI_STAT 環境変数を使用します。
I_MPI_STATS
構文
I_MPI_STATS=all
注意
両方の形式の統計が収取された場合、I_MPI_STATS_SCOPE 環境変数は適用されません。
統計情報の量を制御するには、I_MPI_STATS にカンマで区切られた値を設定します。
構文
I_MPI_STATS=[native:][n-]m,ipm[:terse]
注意
現在エリアス all は、I_MPI_STATS=native:20,ipm に相当しますが、これは変更できます。
3.5.6. ILP64 サポート
ILP64 は、int、long および ポインターが、すべて 8 バイトであることを意味します。これは、long とポイ
ンターが 8 バイトで、int が 4 バイトである LP64 モデルとは異なります。歴史的背景とプログラミング・モ
デルのフィロソフィーに関する詳細は、http://www.unix.org/version2/whatsnew/lp64_wp.html (英語) などを
ご覧ください。
ILP64 を使用する
ILP64 インターフェイスを使用するには以下のオプションを使用します。
•
分割コンパイル時、Fortran コンパイラー・ドライバーのオプション -i8 を、分割リンクには
-ilp64 オプションを指定します。
例:
$mpiifort -i8 -c test.f
$mpiifort -ilp64 -o test test.o
•
簡単なプログラムでは、コンパイルおよびリンクを行う Fortran コンパイラー・ドライバーに -i8 オ
プションを指定します。-i8 を指定すると、自動的に ILP64 ライブラリーがリンクされます。
例:
$ mpiifort -i8 test.f
•
ILP64 インターフェイスを使用するには、mpirun -ilp64 オプションを使用します。
例:
$mpirun -ilp64 -n 2 ./myprog
205
チューニング・リファレンス
既存の問題と制限事項
•
•
•
•
•
•
•
データ型のカウントとその他の引数では、231-1 を越える値はサポートされません。
特殊な MPI 型、MPI_FLOAT_INT、MPI_DOUBLE_INT、MPI_LONG_INT、MPI_SHORT_INT、MPI_2INT、
MPI_LONG_DOUBLE_INT、MPI_2INTEGER は変更されず、4 バイトの整数フィールドが維持されます。
事前定義されたコミュニケーター属性 MPI_APPNUM、MPI_HOST、MPI_IO、MPI_LASTUSEDCODE、
MPI_TAG_UB、MPI_UNIVERSE_SIZE、および MPI_WTIME_IS_GLOBAL は、4 バイトの整数として
関数 MPI_GET_ATTR および MPI_COMM_GET_ATTR から返されます。これは、ウィンドウやファイル
オブジェクトに結合できる定義済み属性も同様です。
エラー処理関数やユーザー定義リダクション操作など MPI コールバック関数をコンパイルする場合、
-i8 オプションを指定してはいけません。
4 バイトの属性 (MPI_ATTR_GET、MPI_ATTR_PUT など) を保存または取得する非推奨の関数のコンパ
イルに -i8 オプションを指定してはいけません。代わりに推奨される代替手段
(MPI_COMM_GET_ATTR、MPI_COMM_SET_ATTR など) を使用します。
インテル® Trace Collector でインテル® MPI ライブラリーの ILP64 実行形式を扱う場合、特殊なインテ
ル® Trace Collector ライブラリーをリンクする必要があります。必要に応じて、インテル® MPI ライブ
ラリーの mpiifort コンパイラー・ドライバーは自動的に適切なインテル® Trace Collector ライブラ
リーを選択します。
これは、現在 C と C++ アプリケーションをサポートしていません。
3.5.7. ユニファイド・メモリー管理
インテル® MPI ライブラリーは、ユーザー定義のパッケージでメモリー管理サブシステムを交換する機能をサ
ポートしています。状況に応じて次の関数ポインターを設定することがあります。
•
i_malloc
•
i_calloc
•
i_realloc
•
i_free
これらのポインターは、C++ の new と delete 操作に影響します。それぞれ標準 C ライブラリー関数が使用さ
れます。
以下に統合メモリー・サブシステムの使用法を示します。
#include <i_malloc.h>
#include <my_malloc.h>
int main( int argc, int argv )
{
// override normal pointers
i_malloc = my_malloc;
i_calloc = my_calloc;
i_realloc = my_realloc;
i_free = my_free;
#ifdef _WIN32
// also override pointers used by DLLs
i_malloc_dll = my_malloc;
i_calloc_dll = my_calloc;
i_realloc_dll = my_realloc;
i_free_dll = my_free;
#endif
// now start using Intel(R) libraries
}
206
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
3.5.8. ファイルシステムのサポート
インテル® MPI ライブラリーは、次のファイルシステムをサポートするため、ロード可能な共有モジュールを提
供しています。
•
Panasas* ActiveScale* File System (PanFS)
•
Parallel Virtual File System*, Version 2 (Pvfs2)
•
Lustre* File System
•
IBM* General Parallel File System* (GPFS*)
Parallel File System のサポートを有効にするには、I_MPI_EXTRA_FILESYSTEM 環境変数を on に設定します。
特定のファイルシステムのネイティブサポートを要求するには、I_MPI_EXTRA_FILESYSTEM_LIST 環境変数
を設定します。例えば、Panasas* ActiveScale* File System のネイティブサポートを要求するには、次のように
設定します。
$ mpiexec -env I_MPI_EXTRA_FILESYSTEM on \
-env I_MPI_EXTRA_FILESYSTEM_LIST panfs -n 2 ./test
環境変数
I_MPI_EXTRA_FILESYSTEM
ネイティブ parallel file system のサポートを on/off にします。
構文
I_MPI_EXTRA_FILESYSTEM=<arg>
引数
<arg>
enable| yes|on| 1
disable| no|off| 0
説明
バイナリー・インジケーター。
parallel file system 向けのネイティブサポートを on にします。
parallel file system 向けのネイティブサポートを off にします。これ
は、デフォルト値です。
Parallel File System のサポートを有効にするには、この環境変数を設定します。特定のファイルシステムのネ
イティブサポートを要求するには、I_MPI_EXTRA_FILESYSTEM_LIST 環境変数を設定する必要があります。
I_MPI_EXTRA_FILESYSTEM_LIST
特定のファイルシステムのサポートを選択します。
構文
I_MPI_EXTRA_FILESYSTEM_LIST=<fs>[, <fs>, ..., <fs>]
引数
<fs>
ターゲットのファイルシステムを定義します。
panfs
Panasas* ActiveScale* File System。
pvfs2
Parallel Virtual File System, Version 2。
207
チューニング・リファレンス
lustre
Lustre* File System。
gpfs
IBM* General Parallel File System* (GPFS*)。
説明
特定のファイルシステムのネイティブサポートを要求するには、この環境変数を設定します。この環境変数は、
I_MPI_EXTRA_FYLESYSTEM が有効なときにのみ効果があります。インテル® MPI ライブラリーは、
I_MPI_EXTRA_FILESYSTEM_LIST で指定されるファイルシステムをサポートするため、共有モジュールを
ロードしようとします。
3.5.9. マルチスレッド化された memcpy のサポート
ここでは、インテル® Xeon Phi™ コプロセッサー向けのインテル® MPI ライブラリーでマルチスレッド版の
memcpy を使用する方法を説明します。ある種のアプリケーション向けに共有メモリーを介して高いバンド幅
を達成する、この実験的な機能を使用できます。
I_MPI_MT_MEMCPY
マルチスレッド化された memcpy の使用法を制御します。
構文
I_MPI_MT_MEMCPY=<value>
引数
<value>
enable | yes | on | 1
disable | no | off | 0
説明
マルチスレッド化された memcpy の使用法を制御します。
シングルスレッド版のインテル® MPI ライブラリーでマルチスレッド
版の memcpy の利用を有効にします (MPI_THREAD_SINGLE)。この
設定は、スレッドセーフ版のインテル® MPI ライブラリーでは無視さ
れます。
マルチスレッド化された memcpy の使用を無効にします。これは、
デフォルト値です。
ノード内通信向けにマルチスレッド版の memcpy を使用するかどうかを制御するには、この環境変数を設定し
ます。
I_MPI_MT_MEMCPY_NUM_THREADS
マルチスレド版の memcpy を行うために実行されるスレッド数を変更します。
構文
I_MPI_MT_MEMCPY_NUM_THREADS=<num>
引数
<num>
>0
マルチスレド版の memcpy を行うために実行されるスレッド数。
デフォルト値は、8 または MPI プロセスがピニングするドメインの物
理コア数のどちらか小さい値です。
208
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
説明
各 MPI ランクごとに memcpy を実行するスレッド数を設定するには、この環境変数を使用します。値を 1 に設
定すると、I_MPI_MT_MEMCPY=disable にするのと等価です。
I_MPI_MT_MEMCPY_THRESHOLD
マルチスレッド化された memcpy を使用するしきい値を変更します。
構文
I_MPI_MT_MEMCPY_THRESHOLD=<nbytes>
引数
<nbytes>
マルチスレッド化された memcpy を使用するしきい値をバイト単位
で定義します。
デフォルト値は 32768 です。
>0
説明
マルチスレッド版の memcpy の使用を制御するには、この環境変数を設定します。しきい値が、共有メモリー
バッファーのサイズより大きい場合 (例えば、「I_MPI_SHM_LMT_BUFFER_SIZE」もしくは
「I_MPI_SSHM_BUFFER_SIZE」を参照)、マルチスレッド版の memcpy が利用されることはありません。マル
チスレッド版の memcpy の利用は、次のスキームで選択されます。
•
•
バッファーが、<nbytes> より短い場合、シリアル版の memcpy が使用されます。このアプローチは、
ショートバッファーとミディアムバッファーでは高速です。
バッファーが、<nbytes> より長い場合、マルチスレッド版の memcpy が使用されます。このアプ
ローチは、ラージバッファーでは高速です。
I_MPI_MT_MEMCPY_SPIN_COUNT
スピンカウント値を制御します。
構文
I_MPI_MT_MEMCPY_SPIN_COUNT=<scount>
引数
<scount>
>0
説明
スレッドが、データコピーを待機する際にスリープする前のスピンカ
ウントを定義します
デフォルト値は、100000 と等価です。最大値は、2147483647 と等
価です。
スレッドによってデータがコピーされるのを待機するため、ループのスピンカウントを設定します。上限値を
越え、コピーするデータがない場合、スレッドはスリープします。
アプリケーションのパフォーマンスをチューニングするには、I_MPI_MT_MEMCPY_SPIN_COUNT 環境変数を
使用します。<scount> の最適な値の選択は、経験に依存します。それは、計算環境やアプリケーションに依
存します。
209
用語集
4. 用語集
セル
ピニング・プロパティーで記述されるピニングの解像度。
論理プロセッサー
ソフトウェア実行 (OS) が、タスクをディスパッチまたはスレッド・
コンテキストを実行することができる、プロセッサー・ハードウェ
ア・リソースの基本モジュール。各論理プロセッサーは、同時に 1 つ
のスレッド・コンテキストを実行します。
ハイパースレッディング・
テクノロジー
マルチコア・プロセッサー
マルチプロセッサー・
プラットフォーム
プロセッサー・コア
物理パッケージ
プロセッサー・トポロジー
各プロセッサーコアが複数の論理プロセッサーの機能を提供する、
IA-64 とインテル® 64 プロセッサー・ファミリーに備わる機能。
2 つ以上のプロセッサー・コアを集積した物理プロセッサー。
複数の物理パッケージを備えるコンピューター・システム。
命令をデコード、実行し、そして物理パッケージ内のサブシステム間
でデータを転送するための専用の機能を備える回路。プロセッサー・
コアは、1 つもしくは 2 つの論理プロセッサーを含みます。
マイクロプロセッサーの物理パッケージは、1 つ以上のソフトウェ
ア・スレッドを同時に実行することができます。各物理パッケージ
は、物理ソケットに装着されます。各物理パッケージは、1 つ以上の
プロセッサーコアを搭載します。
1 つ以上 のハードウェア・マルチスレッディングが可能なパッケージ
を使用する計算プラットフォーム内の「共有 vs. 専用」ハードウェ
ア・リソースの階層関係。
210
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
5. 索引
$
$HOME/.mpd.conf, 91
{
-{cc,cxx,fc,f77,f90}=<compiler>, 10
A
-a <alias>, 79
B
-binding, 32
-bootstrap <bootstrap server>, 31
-bootstrap jmi, 32
-bootstrap persist, 32
-bootstrap-exec <bootstrap server>, 32
-bootstrap-exec-args <args>, 32
-branch-count <num>, 23
C
-envall, 35, 80
-envexcl <list of env var names>, 80
-envlist <list of env var names>, 36, 80
-envnone, 35, 80
-envuser, 80
F
-f <hostfile>, 20
-fast, 10
G
-g, 9
-g<l-option>, 77
-gcc-version=<nnn>, 11
-gdb, 23, 79
-gdba <jobid>, 79
-gdba <pid>, 24
-check_mpi, 9
-genv <ENVVAR> <value>, 21, 77
-check_mpi [<checking_library>], 22, 78
-genvall, 21, 77
-ckpoint <switch>, 51
-genvlist <list of genv var names>, 21
-ckpoint-interval <sec>, 52
-genvnone, 21, 77
-ckpointlib <lib>, 53
-genvuser, 77
-ckpoint-logfile <file>, 53
-grr <# of processes>, 21, 76
-ckpoint-num <N>, 52
-gtool, 24
-ckpoint-prefix <dir>, 53
-gtoolfile <gtool_config_file>, 27
-ckpoint-preserve <N>, 52
-ckpoint-tmp-prefix <dir>, 53
-cleanup, 30
-compchk, 11
-config=<name>, 8
-configfile <filename>, 22, 77
cpuinfo, 95
D
H
-h, 75
-help, 75
--help, 75
-host <nodename>, 36, 81
-hostfile <hostfile>, 20
-hostos <host OS>, 36
-hosts <nodelist>, 28
-dapl, 37, 74
Hydra, 32
-DAPL, 37, 74
Hydra, 16, 19, 30, 31, 46, 48, 49, 54, 66, 110, 117
-demux <mode>, 28
-disable-x, 28
-dynamic_log, 9
E
I
I_MPI_ HYDRA_JMI_LIBRARY, 46
I_MPI_{CC,CXX,FC,F77,F90}, 13
I_MPI_{CC,CXX,FC,F77,F90}_PROFILE, 12
-ecfn <filename>, 80
I_MPI_ADJUST_<opname>, 174
-echo, 10
I_MPI_ADJUST_ALLGATHER_KN_RADIX, 180
-enable-x, 28
I_MPI_ADJUST_ALLREDUCE_KN_RADIX, 180
-env <ENVVAR> <value>, 35, 80
I_MPI_ADJUST_BCAST_KN_RADIX, 180
211
索引
I_MPI_ADJUST_BCAST_SEGMENT, 179
I_MPI_DAPL_SR_THRESHOLD, 152
I_MPI_ADJUST_GATHERV_KN_RADIX, 181
I_MPI_DAPL_TRANSLATION_CACHE, 145
I_MPI_ADJUST_IALLREDUCE_KN_RADIX, 181
I_MPI_DAPL_TRANSLATION_CACHE_AVL_TREE, 146
I_MPI_ADJUST_IBCAST_KN_RADIX, 182
I_MPI_DAPL_UD, 154
I_MPI_ADJUST_IGATHER_KN_RADIX, 182
I_MPI_DAPL_UD_ACK_RECV_POOL_SIZE, 156
I_MPI_ADJUST_IREDUCE_KN_RADIX, 182
I_MPI_DAPL_UD_CONN_EVD_SIZE, 158
I_MPI_ADJUST_ISCATTER_KN_RADIX, 182
I_MPI_ADJUST_REDUCE_KN_RADIX, 181
I_MPI_DAPL_UD_DESIRED_STATIC_CONNECTIONS_NUM,
161
I_MPI_ADJUST_REDUCE_SEGMENT, 179
I_MPI_DAPL_UD_DIRECT_COPY_THRESHOLD, 155
I_MPI_ALLGATHER_MSG, 185
I_MPI_DAPL_UD_EAGER_DYNAMIC_CONNECTION, 160
I_MPI_ALLREDUCE_MSG, 185
I_MPI_DAPL_UD_MAX_RDMA_DTOS, 163
I_MPI_ALLTOALL_MSG, 184
I_MPI_DAPL_UD_MAX_RDMA_SIZE, 162
I_MPI_ALLTOALL_NUM_PROCS, 184
I_MPI_DAPL_UD_PROVIDER, 154
I_MPI_BCAST_MSG, 184
I_MPI_DAPL_UD_RDMA_MIXED, 161
I_MPI_BCAST_NUM_PROCS, 183
I_MPI_DAPL_UD_RECV_BUFFER_NUM, 155
I_MPI_CACHE_BYPASS, 138
I_MPI_DAPL_UD_RECV_EVD_SIZE, 158
I_MPI_CACHE_BYPASS_THRESHOLDS, 138
I_MPI_DAPL_UD_REQ_EVD_SIZE, 157
I_MPI_CHECK_COMPILER, 13
I_MPI_DAPL_UD_RNDV_BUFFER_ALIGNMENT, 159
I_MPI_CHECK_DAPL_PROVIDER_COMPATIBILITY, 153
I_MPI_DAPL_UD_RNDV_COPY_ALIGNMENT_THRESHOLD,
159
I_MPI_CHECK_PROFILE, 13
I_MPI_CKPOINT, 54
I_MPI_CKPOINT_INTERVAL, 55
I_MPI_CKPOINT_LOGFILE, 55
I_MPI_CKPOINT_NUM, 56
I_MPI_CKPOINT_PREFIX, 54
I_MPI_CKPOINT_PRESERVE, 55
I_MPI_CKPOINT_TMP_PREFIX, 55
I_MPI_CKPOINTLIB, 54
I_MPI_COMPATIBILITY, 188
I_MPI_COMPILER_CONFIG_DIR, 14
I_MPI_CONN_EVD_QLEN, 151
I_MPI_DAPL_BUFFER_NUM, 148
I_MPI_DAPL_BUFFER_SIZE, 149
I_MPI_DAPL_CHECK_MAX_RDMA_SIZE, 150
I_MPI_DAPL_CONN_EVD_SIZE, 151
I_MPI_DAPL_DESIRED_STATIC_CONNECTIONS_NUM, 153
I_MPI_DAPL_DIRECT_COPY_THRESHOLD, 146
I_MPI_DAPL_DYNAMIC_CONNECTION_MODE, 147
I_MPI_DAPL_EAGER_MESSAGE_AGGREGATION, 147
I_MPI_DAPL_LOCALITY_THRESHOLD, 62
I_MPI_DAPL_MAX_MSG_SIZE, 151
I_MPI_DAPL_PROVIDER, 145
I_MPI_DAPL_PROVIDER_LIST, 61
I_MPI_DAPL_RDMA_RNDV_WRITE, 150
I_MPI_DAPL_RDMA_WRITE_IMM, 152
I_MPI_DAPL_RNDV_BUFFER_ALIGNMENT, 149
I_MPI_DAPL_SCALABLE_PROGRESS, 148
I_MPI_DAPL_SR_BUF_NUM, 152
I_MPI_DAPL_UD_RNDV_DYNAMIC_CONNECTION, 159
I_MPI_DAPL_UD_RNDV_MAX_BLOCK_LEN, 158
I_MPI_DAPL_UD_SEND_BUFFER_NUM, 155
I_MPI_DAPL_UD_TRANSLATION_CACHE, 157
I_MPI_DAPL_UD_TRANSLATION_CACHE_AVL_TREE, 157
I_MPI_DAT_LIBRARY, 145
I_MPI_DEBUG, 81
I_MPI_DEBUG_INFO_STRIP, 15
I_MPI_DEBUG_OUTPUT, 83
I_MPI_DEVICE, 131
I_MPI_DYNAMIC_CONNECTION, 137
I_MPI_DYNAMIC_CONNECTION_MODE, 147
I_MPI_DYNAMIC_CONNECTIONS_MODE, 147
I_MPI_EAGER_THRESHOLD, 135
I_MPI_ENV_PREFIX_LIST, 63
I_MPI_EXTRA_FILESYSTEM, 207
I_MPI_EXTRA_FILESYSTEM_LIST, 207
I_MPI_FABRICS, 131
I_MPI_FABRICS_LIST, 133
I_MPI_FALLBACK, 134
I_MPI_FALLBACK_DEVICE, 134
I_MPI_FAST_COLLECTIVES, 183
I_MPI_FAULT_CONTINUE, 190
I_MPI_GATHER_MSG, 187
I_MPI_GTOOL, 48
I_MPI_HYDRA_BOOTSTRAP, 41
I_MPI_HYDRA_BOOTSTRAP_AUTOFORK, 42
I_MPI_HYDRA_BOOTSTRAP_EXEC, 42
212
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS, 42
I_MPI_OFA_NUM_ADAPTERS, 167
I_MPI_HYDRA_BRANCH_COUNT, 45
I_MPI_OFA_NUM_RDMA_CONNECTIONS, 168
I_MPI_HYDRA_CLEANUP, 47
I_MPI_OFA_PACKET_SIZE, 171
I_MPI_HYDRA_DEBUG, 39
I_MPI_OFA_RAIL_SCHEDULER, 169
I_MPI_HYDRA_DEMUX, 46
I_MPI_OFA_SWITCHING_TO_RDMA, 169
I_MPI_HYDRA_ENV, 39
I_MPI_OFA_TRANSLATION_CACHE, 169
I_MPI_HYDRA_GDB_REMOTE_SHELL, 45
I_MPI_OFA_TRANSLATION_CACHE_AVL_TREE, 170
I_MPI_HYDRA_HOST_FILE, 38
I_MPI_OFI_LIBRARY, 172
I_MPI_HYDRA_IFACE, 46
I_MPI_OFI_PROVIDER, 173
I_MPI_HYDRA_PMI_AGGREGATE, 45
I_MPI_OFI_PROVIDER_DUMP, 173
I_MPI_HYDRA_PMI_CONNECT, 43
I_MPI_OUTPUT_CHUNK_SIZE, 87
I_MPI_HYDRA_RMK, 43
I_MPI_PERHOST, 44, 83
I_MPI_HYDRA_USE_APP_TOPOLOGY, 49
I_MPI_PIN, 109
I_MPI_INTRANODE_EAGER_THRESHOLD, 135
I_MPI_PIN_CELL, 116
I_MPI_INTRANODE_SHMEM_BYPASS, 143
I_MPI_PIN_DOMAIN, 118
I_MPI_JOB_ABORT_SIGNAL, 40, 86
I_MPI_PIN_MODE, 109
I_MPI_JOB_CHECK_LIBS, 44, 85
I_MPI_PIN_ORDER, 127
I_MPI_JOB_CONFIG_FILE, 92
I_MPI_PIN_PROCESSOR_EXCLUDE_LIST, 116
I_MPI_JOB_CONTEXT, 92
I_MPI_PIN_PROCESSOR_LIST, 110
I_MPI_JOB_FAST_STARTUP, 88
I_MPI_PIN_PROCS, 110
I_MPI_JOB_RESPECT_PROCESS_PLACEMENT, 47
I_MPI_PIN_RESPECT_CPUSET, 117
I_MPI_JOB_SIGNAL_PROPAGATION, 41, 87
I_MPI_PIN_RESPECT_HCA, 117
I_MPI_JOB_STARTUP_TIMEOUT, 85
I_MPI_PLATFORM, 89
I_MPI_JOB_TAGGED_PORT_OUTPUT, 93
I_MPI_PLATFORM_CHECK, 90
I_MPI_JOB_TIMEOUT, 39, 86
I_MPI_PMI_EXTENSIONS, 88
I_MPI_JOB_TIMEOUT_SIGNAL, 40, 86
I_MPI_PMI_FAST_STARTUP, 88
I_MPI_JOB_TRACE_LIBS, 44, 84
I_MPI_PMI_LIBRARY, 88
I_MPI_LARGE_SCALE_THRESHOLD, 135
I_MPI_PRINT_VERSION, 84
I_MPI_LINK, 15
I_MPI_PROCESS_MANAGER, 17
I_MPI_MIC, 60
I_MPI_RDMA_BUFFER_NUM, 148
I_MPI_MIC_POSTFIX, 61
I_MPI_RDMA_BUFFER_SIZE, 149
I_MPI_MIC_PREFIX, 60
I_MPI_RDMA_CHECK_MAX_RDMA_SIZE, 150
I_MPI_MPD_CHECK_PYTHON, 93
I_MPI_RDMA_CONN_EVD_SIZE, 151
I_MPI_MPD_CLEAN_LOG, 95
I_MPI_RDMA_EAGER_THRESHOLD, 146
I_MPI_MPD_CONF, 92
I_MPI_RDMA_MAX_MSG_SIZE, 151
I_MPI_MPD_RSH, 94
I_MPI_RDMA_RNDV_BUF_ALIGN, 149
I_MPI_MPD_TMPDIR TMPDIR, 94
I_MPI_RDMA_RNDV_BUFFER_ALIGNMENT, 149
I_MPI_MPIEXEC_TIMEOUT, 39
I_MPI_RDMA_RNDV_WRITE, 150
I_MPI_MPIRUN_CLEANUP, 17
I_MPI_RDMA_SCALABLE_PROGRESS, 148
I_MPI_MT_MEMCPY, 208
I_MPI_RDMA_TRANSLATION_CACHE, 145
I_MPI_MT_MEMCPY_NUM_THREADS, 208
I_MPI_RDMA_VBUF_TOTAL_SIZE, 149
I_MPI_MT_MEMCPY_SPIN_COUNT, 209
I_MPI_RDMA_WRITE_IMM, 152
I_MPI_MT_MEMCPY_THRESHOLD, 209
I_MPI_REDSCAT_MSG, 186
I_MPI_NETMASK, 163
I_MPI_RESTART, 56
I_MPI_OFA_ADAPTER_NAME, 167
I_MPI_ROOT, 14
I_MPI_OFA_DYNAMIC_QPS, 170
I_MPI_SCALABLE_OPTIMIZATION, 136
I_MPI_OFA_LIBRARY, 171
I_MPI_SCATTER_MSG, 186
I_MPI_OFA_NONSWITCH_CONF, 171
I_MPI_SHM_BUFFER_SIZE, 141
213
索引
I_MPI_SHM_BYPASS, 143
-info, 30
I_MPI_SHM_CACHE_BYPASS, 138
IPM, 197
I_MPI_SHM_CACHE_BYPASS_THRESHOLDS, 138
I_MPI_SHM_CELL_NUM, 140
I_MPI_SHM_CELL_SIZE, 140
I_MPI_SHM_FBOX, 139
I_MPI_SHM_FBOX_SIZE, 140
I_MPI_SHM_LMT, 141
I_MPI_SHM_LMT_BUFFER_NUM, 141
I_MPI_SHM_LMT_BUFFER_SIZE, 141, 143
I_MPI_SHM_NUM_BUFFERS, 141
L
-l, 28, 79
LD_LIBRARY_PATH, 9, 46
libjmi.so, 32
-link_mpi=<arg>, 10
LMT, 141
-localhost, 30
M
I_MPI_SHM_SPIN_COUNT, 144
-m, 79
I_MPI_SPIN_COUNT, 136
-machine <machine file>, 20
I_MPI_SSHM, 142
-machinefile <machine file>, 20, 76
I_MPI_SSHM_BUFFER_NUM, 142
max_rdma_size, 150, 151
I_MPI_SSHM_DYNAMIC_CONNECTION, 143
mpd, 65
I_MPI_STATS, 191, 197, 205
MPD, 16, 17, 65, 66, 72, 80, 87
I_MPI_STATS_ACCURACY, 202
mpd.hosts, 92
I_MPI_STATS_BUCKETS, 194
MPD_CON_EXT, 92
I_MPI_STATS_FILE, 194, 197
MPD_SECRETWORD, 92
I_MPI_STATS_SCOPE, 191, 198
mpdallexit, 68
I_MPI_TCP_BUFFER_SIZE, 164
mpdboot, 66
I_MPI_TCP_NETMASK, 163
mpdcheck, 69
I_MPI_TCP_POLLING_MODE, 165
mpdcleanup, 68
I_MPI_THREAD_LEVEL_DEFAULT, 91
mpdexit, 67
I_MPI_TIMER_KIND, 187
mpdhelp, 72
I_MPI_TMI_DRECV, 167
mpdkilljob, 71
I_MPI_TMI_DSEND, 166
mpdlistjobs, 70
I_MPI_TMI_LIBRARY, 165
mpdringtest, 70
I_MPI_TMI_NBITS_RANK, 166
mpdsigjob, 71
I_MPI_TMI_PROVIDER, 165
mpdtrace, 69
I_MPI_TMPDIR, 47
MPI{CC,CXX,FC,F77,F90}_PROFILE, 12
I_MPI_TRACE_PROFILE, 12
MPICH_{CC,CXX,FC,F77,F90}, 13
I_MPI_TUNE_APPLICATION_COMMUNICATION_GRAPH,
107
mpicleanup, 50
I_MPI_TUNE_APPLICATION_STATISTICS, 106
mpiexec.hydra, 16, 19, 39, 44, 50, 56
I_MPI_TUNE_HARDWARE_TOPOLOGY_GRAPH, 107
MPIEXEC_SIGNAL_PROPAGATION, 41, 87
I_MPI_TUNE_RANK_PLACEMENT, 106
MPIEXEC_TIMEOUT, 39, 86
I_MPI_USE_DAPL_INTRANODE, 143
MPIEXEC_TIMEOUT_SIGNAL, 40, 86
I_MPI_USE_DYNAMIC_CONNECTIONS, 137
MPIEXEC_TRACE_LIBS, 84
I_MPI_USE_RENDEZVOUS_RDMA_WRITE, 150
mpirun, 15
I_MPI_WAIT_MODE, 137
mpitune, 99
I_MPI_YARN, 18
-mps, 22
-ib, 37, 74
-mx, 37, 74
-IB, 37, 74
-MX, 38, 74
-iface <interface>, 28
-ifhn <interface/hostname>, 80
-ilp64, 9, 29
mpiexec, 16, 18, 72, 73, 75, 76, 81, 83, 85, 86
N
-n <# of processes>, 35, 80
214
インテル® MPI ライブラリー for Linux* リファレンス・マニュアル
-no_ilp64, 9
-static, 8
-noconf, 29, 80
-static_mpi, 8
-nolocal, 28, 75
-nostrip, 8
-np <# of processes>, 35, 80
NUM_RDMA_BUFFER, 148
T
-t, 8
-t [<profiling_library>], 21, 77
O
-tmi, 37, 74
-O, 10
-TMI, 37
-TMI, 74
-ofi, 38
-tmpdir, 30
-OFI, 38
TMPDIR, 47, 50, 94
-ordered-output, 29, 79
TotalView, 23, 78
P
-path <directory>, 29, 36, 81
-perhost <# of processes>, 21, 75
-pmi-aggregate, 23
-pmi-connect <mode>, 21
-pmi-noaggregate, 23
-ppn <# of processes>, 21, 76
-print-all-exitcodes, 35
-print-rank-map, 35
-profile=<profile_name>, 8
-psm, 38, 75
-PSM, 38, 75
-psm2, 38
TOTALVIEW, 89
-trace, 8
-trace [<profiling_library>], 21, 77
-trace-collectives, 22
-trace-pt2pt, 22
-tune [<arg >], 28, 75
-tv, 23, 78
-tva <jobid>, 78
-tva <pid>, 23
TVDSVRLAUNCHCMD, 23
-tvsu, 79
U
-umask <umask>, 36, 81
-PSM2, 38
-use-app-topology <value>, 30
-rdma, 36, 73
-v, 11, 35
R
V
-RDMA, 37, 73
-V, 30, 75
RDMA_IBA_EAGER_THRESHOLD, 146
-verbose, 35
-restart, 52
-version, 30, 75
-rmk <RMK>, 35
VT_ROOT, 9, 14
-rr, 21, 76
S
-s <spec>, 29, 79
-show, 10
-show_env, 10
W
-wdir <directory>, 36, 81
ら
ラージメッセージ転送, 141
215
Fly UP