インテル® MPI ライブラリー 2018 for Linux* リリースノート

本ページは、2017 年 4 月 11 日時点のインテル® MPI ライブラリー 2018 for Linux* リリースノートの日本語訳です。 最新のリリースノートについては、Intel 社のウェブサイト (英語) をご覧ください。

インテル® MPI ライブラリーは、ANL MPICH3 および OSU MVAPICH2 をベースとしたマルチファブリックのメッセージ・パッシング・ライブラリーです。
インテル® MPI ライブラリーは、メッセージ・パッシング・インターフェイス 3.1 (MPI-3) 仕様を実装します。ライブラリーはスレッドセーフで、MPI 標準に準拠したマルチスレッドのサポートを提供します。
テクニカルサポートを受けたり、製品のアップデート・モジュールを入手するには、製品を登録する必要があります。詳細は、「テクニカルサポート」セクションを参照してください。

製品の内容

  • インテル® MPI ライブラリー・ランタイム環境 (RTO) には、スケーラブルなプロセス管理システム (Hydra) やサポート・ユーティリティーなどプログラムの実行に必要なツール、共有 (.so) ライブラリーなどが含まれています。
  • インテル® MPI ライブラリー開発キット (SDK) には、すべてのランタイム環境コンポーネントに加え、コンパイラー・ラッパー・スクリプト (mpicc、mpiicc など)、インクルード・ファイルとモジュール、スタティック (.a) ライブラリー、デバッグ・ライブラリー、テストコードなどのコンパイルツールが含まれています。

インテル® MPI ライブラリー 2018

  • shm:ofi または shm:tmi を使用した場合の Hydra の起動時間を短縮。
  • ハード・ファイナリゼーションがデフォルトになりました。
  • インテル® Omni-Path アーキテクチャーが検出された場合、デフォルトのファブリック・リストは変更されます。
  • I_MPI_OFI_ENABLE_LMT、I_MPI_OFI_MAX_MSG_SIZE、I_MPI_{C,CXX,FC,F}FLAGS、I_MPI_LDFLAGS、I_MPI_FORT_BIND 環境変数を追加。
  • インテル® Xeon Phi™ コプロセッサー (開発コード名 Knights Corner) のサポートを終了。
  • IPM 統計形式のサポートを非推奨に変更。
  • ドキュメントをオンラインで提供。

インテル® MPI ライブラリー 2017 Update 4

  • インテル® マイクロアーキテクチャー (開発コード名 Skylake) ベースのプロセッサーおよびインテル® Omni-Path アーキテクチャーのパフォーマンス・チューニング。

インテル® MPI ライブラリー 2017 Update 3

  • Hydra スタートアップを向上 (I_MPI_JOB_FAST_STARTUP)。
  • I_MPI_FABRICS_LIST のデフォルト値を変更。

インテル® MPI ライブラリー 2017 Update 2

  • I_MPI_HARD_FINALIZE および I_MPI_MEMORY_SWAP_LOCK 環境変数を追加。

インテル® MPI ライブラリー 2017 Update 1

  • SLURM* で PMI-2 をサポート。デフォルトで SLURM* のサポートを改良。
  • ミニヘルプと診断メッセージを改良。mpiexec.hydra、hydra_persist、および hydra_nameserver の man1 ページを改良。
  • 次のサポートを非推奨に変更:
    • インテル® Xeon Phi™ コプロセッサー (開発コード名 Knights Corner) のサポート。
    • クロス OS 起動のサポート。
    • DAPL、TMI、OFA ファブリックのサポート。

インテル® MPI ライブラリー 2017

  • MPI-3.1 仕様をサポート。
  • 新しいトポロジーを意識した集団通信アルゴリズム (I_MPI_ADJUST ファミリー)。
  • MCDRAM (NUMA メモリー) をサポート。詳細は、『インテル® MPI デベロッパー・リファレンス』のTuning Reference (チューニング・リファレンス) > Memory Placement Policy Control (メモリー割り当てポリシーの制御)セクションを参照してください。
  • 非同期進行スレッドピニングの制御 (I_MPI_ASYNC_PROGRESS)。
  • OFI ファブリックの直接受信機能 (I_MPI_OFI_DRECV)。
  • PMI2 プロトコルをサポート (I_MPI_PMI2)。
  • 新しいプロセス起動方法 (I_MPI_HYDRA_PREFORK)。
  • SLURM* ジョブ・マネージャーの起動を改良 (I_MPI_SLURM_EXT)。
  • Lustre* ファイルシステムにおける MPI-IO 集団読み取り操作向けの新しいアルゴリズム (I_MPI_LUSTRE_STRIPE_AWARE)。
  • コンパイラー・ラッパー・スクリプトおよび mpitune で Debian Almquist shell (dash) をサポート。
  • インテル® マイクロアーキテクチャー (開発コード名 Broadwell) ベースのプロセッサーおよびインテル® Omni-Path アーキテクチャー (インテル® OPA) のパフォーマンス・チューニング。
  • インテル® Xeon Phi™ プロセッサー/コプロセッサー (開発コード名 Knights Landing) およびインテル® OPA のパフォーマンス・チューニング。
  • OFI レイテンシーおよびメッセージレートの改良。
  • OFI をインテル® OPA およびインテル® True Scale ファブリックのデフォルト・ファブリックに設定。
  • MPD プロセス・マネージャーを削除。
  • 専用の pvfs2 ADIO ドライバーを無効化。
  • SSHM のサポートを削除。
  • 開発コード名 Sandy Bridge 以前のインテル® マイクロアーキテクチャーのサポートを非推奨に変更。
  • ドキュメントの改良。

主な機能

  • MPI-1、MPI-2.2、MPI-3.1 仕様に準拠。
  • インテル® Xeon Phi™ プロセッサー (開発コード名 Knights Landing) をサポート。
  • MPICH ABI との互換性。
  • 以下のネットワーク・ファブリックの組み合わせをサポート:
    • TMI (Tag Matching Interface) または OFI (Open Fabrics Interface) のいずれかを利用するインテル® Omni-Path アーキテクチャー (インテル® OPA) をサポートするネットワーク・ファブリック。
    • TMI を介したタグ一致機能を備えたネットワーク・ファブリック (インテル® True Scale ファブリック、Infiniband*、Myrinet*、その他のインターコネクト)。
    • Open Fabrics Alliance (OFA) の OFED verbs を利用するネイティブ InfiniBand* インターフェイス。
    • OpenFabrics Interface (OFI)。
    • DAPL を介した RDMA 対応のネットワーク・ファブリック (InfiniBand* および Myrinet* など)。
    • ソケット (Ethernet*、Gigabit Ethernet*、その他のインターコネクトを介した TCP/IP)。
  • (SDK のみ) 以下を使用するインテル® 64 アーキテクチャーおよびインテル® MIC アーキテクチャー・ベースのクラスターのサポート:
    • インテル® C++/ Fortran コンパイラー 14.0 以降。
    • GNU* C、C++、Fortran 95 コンパイラー。
  • (SDK のみ) C、C++、Fortran 77、Fortran 90、および Fortran 2008 言語バインド。
  • (SDK のみ) ダイナミック・リンクまたはスタティック・リンク。

ハードウェア要件

  • インテル® 64 アーキテクチャー・ベースのシステム:
    • インテル® Core™ プロセッサー・ファミリー
    • インテル® Xeon® プロセッサー E5 v4 ファミリーを推奨
    • インテル® Xeon® プロセッサー E7 v3 ファミリーを推奨
    • 第 2 世代インテル® Xeon Phi™ プロセッサー (開発コード名 Knights Landing)
  • 1 コアあたり 1GB RAM (2GB 推奨)
  • 1GB のディスク空き容量

ソフトウェア要件

  • オペレーティング・システム:
    • Red Hat* Enterprise Linux* 6、7
    • Fedora* 23、24
    • CentOS* 6、7
    • SUSE* Linux* Enterprise Server 11、12
    • Ubuntu* 14.04 LTS、16.04 LTS
    • Debian* 7、8
  • (SDK のみ) コンパイラー:
    • GNU*: C、C++、Fortran 77 3.3 以降、Fortran 95 4.4.0 以降
    • インテル® C++/ Fortran コンパイラー 15.0 以降
  • デバッガー:
    • Rogue Wave* Software TotalView* 6.8 以降
    • Allinea* DDT* 1.9.2 以降
    • GNU* デバッガー 7.4 以降
  • バッチシステム:
    • Platform* LSF* 6.1 以降
    • Altair* PBS Pro* 7.1 以降
    • Torque* 1.2.0 以降
    • Parallelnavi* NQS* V2.0L10 以降
    • NetBatch* v6.x 以降
    • SLURM* 1.2.21 以降
    • Univa* Grid Engine* 6.1 以降
    • IBM* LoadLeveler* 4.1.1.5 以降
    • Platform* Lava* 1.0
  • 推奨する InfiniBand* ソフトウェア:
    • OFED (OpenFabrics Enterprise Distribution) 1.5.4.1 以降
    • インテル® True Scale ファブリック・ホスト・チャネル・アダプター・ホスト・ドライバー & ソフトウェア (OFED) v7.2.0 以降
    • Mellanox* OFED 1.5.3 以降
  • 仮想環境:
    • Docker* 1.13.0
  • その他のソフトウェア:
    • NUMA ノードのメモリー割り当て機能を利用するには、libnuma.so ライブラリーと numactl ユーティリティーをインストールする必要があります。numactl には numactl、numactl-devel および numactl-libs が含まれていなければなりません。
  • RMA 機能を利用する MPI アプリケーションでパフォーマンスが低下した場合、I_MPI_SCALABLE_OPTIMIZATION = 0 を設定することを推奨します。
  • I_MPI_JOB_FAST_STARTUP 変数は、shm がノード内ファブリックとして選択された場合にのみ有効です。
  • ILP64 は Fortran 2008 の MPI モジュールではサポートされていません。
  • プログラムが終了した場合、/dev/shm/ ディレクトリーの不要なファイルを手動で削除します:
rm -r /dev/shm/shm-col-space-* 
  • 同時に使用されるコミュニケーターの数が多い (ノードあたり 10,000 を超える) 場合、次のいずれかの方法を使用してメモリーマップの最大数を増やすことを推奨します。
echo 1048576 > /proc/sys/vm/max_map_count 
sysctl -w vm.max_map_count=1048576 
    • I_MPI_COLL_INTRANODE=pt2pt 変数を設定して共有メモリー収集を無効にします。
  • 一部の Linux* ディストリビューションでは、セキュリティーの制限により、root 以外のユーザーがインテル® MPI ライブラリーを利用できません。この問題は Ubuntu* 12.04 で報告されましたが、ほかのディストリビューションやバージョンでも発生する可能性があります。2 つの回避策があります。
    • root 以外のユーザーで ptrace を有効にします。
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope 
    • インテル® MPI ライブラリーのバージョンを戻して、I_MPI_SHM_LMT=shm の設定による影響を受けない以前の共有メモリーメカニズムを使用します。
  • Ubuntu* では、子プロセス以外にデバッガーをアタッチできません。-gdb を使用するには、sysctl値 /proc/sys/kernel/yama/ptrace_scope を 0 に設定して、この機能を無効にします。
  • Windows* ホストから ssh を使用してクロス OS を実行すると、実行に失敗します。2 つの回避策があります。
    • Windows* の pmi_proxy へのパスと同等の symlink を Linux* ホストに作成します。
    • Linux* ホストからバックグラウンドで hydra_persist を開始して (hydra_persist &)、Windows* ホストから -bootstrap サービスを使用します。この場合、Hydra サービスをインストールして Windows* ホストで開始する必要があります。
  • OFA ファブリックや特定の DAPL プロバイダーでは、インテル® Omni-Path ファブリックが動作しなかったり、適切なパフォーマンスが得られないことがあります。適切なパフォーマンスを得るには、OFI または TMI ファブリックを指定します。
  • 統計収集を有効にすると MPI_Finalize にかかる時間が増えることがあります。
  • システムにインテル® True Scale ファブリックまたはインテル® Omni-Path ファブリックのみを利用可能なノードとインテル® True Scale とほかのファブリック (Mellanox* HCA など) を利用可能なノードが混在する場合、ノード間のファブリックとして前者は OFI/TMI を選択し、後者は DAPL を選択するため、ファブリックの自動検出がハングアップしたり、失敗することがあります。この問題を回避するには、すべてのノードで利用可能なファブリックを明示的に指定します。
  • 複数のオペレーティング・システム (Linux* と Windows*) のジョブを実行するには、すべてのバイナリーを同じシングルスレッドまたはマルチスレッド MPI ライブラリーにリンクする必要があります。互換性のないシングルスレッド/マルチスレッド・ライブラリーは混在させるべきではありません。インテル® MPI Benchmarks 向けにあらかじめコンパイルされているバイナリーは、同じライブラリーにリンクされていないため (Linux* バージョンはマルチスレッド・ライブラリーにリンクされ、Windows* バージョンはシングルスレッド・ライブラリーにリンクされているため)、同じライブラリーを使用するようにどちらか一方をリビルドする必要があります。
  • インテル® MPI ライブラリーは、インテル® Symmetric Communication Interface (インテル® SCI) アダプターを利用した OFA ファブリックの使用をサポートしていません。インテル® MIC アーキテクチャーなどでインテル® SCI アダプターを使用している場合は、別のファブリックを選択する必要があります。
  • PSM 上の TMI および OFI ファブリックは、232 - 1 バイトを超えるメッセージをサポートしていません。これよりも大きなメッセージがある場合は、別のファブリックを選択してください。
  • プロセス・アタッチメント・メカニズムを使用して既存の 2 つの MPI アプリケーション間に通信が確立されている場合、ライブラリーはそれぞれのアプリケーションで同じファブリックが選択されているかどうかを制御しません。そのため、アプリケーションで予期しない動作が発生することがあります。この問題は、各アプリケーションの I_MPI_FABRICS 環境変数を同じにすることで回避できます。
  • dlopen(3).でスレッドセーフなライブラリーをロードしません。
  • アプリケーションで system(3)、fork(2)、vfork(2)、clone(2) システムコールを使用すると、特定の DAPL プロバイダーは正しく動作しないことがあります。これらのシステムコールや、これらのシステムコールに基づく関数をこれらのプロバイダーで使用しないでください。例えば、system(3) を、正式バージョン 2.6.16 よりも古い Linux* カーネルバージョンを使用する OFED DAPL プロバイダーで使用しないでください。互換性のあるカーネルバージョンの OFED を有効にするには、RDMAV_FORK_SAFE 環境変数を設定します。
  • MPI_Mprobe、MPI_Improbe、MPI_Cancel は、TMI および OFI ファブリックではサポートされていません。
  • 一部のアプリケーション・プロセスがチェックポイント・イメージの取得中に終了した場合、チェックポイント/リスタートが有効なアプリケーションの最後にエラーメッセージが表示されることがあります。このようなエラーはアプリケーションに影響を与えないため、無視してかまいません。このエラーを回避するには、-checkpoint-interval オプションに以前よりも大きな値を設定します。次のようなエラーメッセージが表示されます。
[proxy:0:0@hostname] HYDT_ckpoint_blcr_checkpoint (./tools/ckpoint/blcr/ckpoint_blcr.c:313): cr_poll_checkpoint failed: No such process 
[proxy:0:0@hostname] ckpoint_thread (./tools/ckpoint/ckpoint.c:559): blcr checkpoint returned error 
[proxy:0:0@hostname] HYDT_ckpoint_finalize (./tools/ckpoint/ckpoint.c:878) 
 : Error in checkpoint thread 0x7 
  • インテル® MPI ライブラリーは、システムに /dev/shm デバイスが必要です。共有メモリーセグメントの作成に関するエラーを回避するには、/dev/shm デバイスのセットアップが正しく行われていることを確認してください。
  • インテル® MPI ライブラリーは、TCP ソケットを使用して stdin ストリームをアプリケーションに渡しています。大きなファイルをリダイレクトすると、転送に長い時間がかかり、リモート側の通信がハングしているように見えることがあります。この問題を回避するには、コマンドライン・オプションを使用して大きなファイルをアプリケーションに渡してください。
  • DAPL 自動プロバイダー選択メカニズムおよび強化された NUMA のサポートには dapl-2.0.37 以降が必要です。
  • I_MPI_SHM_LMT=direct に設定した場合、バージョン 3.2 よりも古い Linux* カーネルでは、この設定は影響しません。
  • デフォルトの MPI 設定を使用したインテル® Xeon Phi™ プロセッサーで isolcpus Linux* ブート・パラメーターを使用すると、アプリケーションの起動に失敗することがあります。可能な場合は、isolcpus Linux* ブート・パラメーターを変更または削除します。パラメーターを変更または削除できない場合は、I_MPI_PIN を off に設定してください。
  • 場合によっては、OFA ファブリックで集団呼び出しを行うと、正確な結果が得られないことがあります。この問題を解決するには、I_MPI_ADJUST_ALLGATHER の値を 1 から 4 までに設定してください。

インテル® ソフトウェア開発製品には、購入日から 1 年間の Online Service Center (英語) でのプライオリティー・サポートが含まれます (インテル® ソフトウェア開発製品のプライオリティー・サポートは英語でのみ受け付けています)。

サポートを利用するには、インテル® ソフトウェア開発製品レジストレーション・センターで製品を登録する必要があります。製品が登録されていない場合、プライオリティー・サポートを受けることはできません。

本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスも許諾するものではありません。
インテルは、明示されているか否かにかかわらず、いかなる保証もいたしません。ここにいう保証には、商品適格性、特定目的への適合性、知的財産権の非侵害性への保証、およびインテル製品の性能、取引、使用から生じるいかなる保証を含みますが、これらに限定されるものではありません。
本資料には、開発中の製品、サービスおよびプロセスについての情報が含まれています。本資料に含まれる情報は予告なく変更されることがあります。最新の予測、スケジュール、仕様、ロードマップについては、インテルの担当者までお問い合わせください。
本資料で説明されている製品およびサービスには、不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。
Intel、インテル、Intel ロゴ、Intel Core、Xeon、Intel Xeon Phi は、アメリカ合衆国および / またはその他の国における Intel Corporation の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2017 Intel Corporation.


コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。