期待のネット新技術
InfiniBandで高性能を実現するMPIの仕様策定と、その実装「MPICH」
【InfiniBandの現在】
2019年10月1日 06:00
「InfiniBandの現在」では、規格としての歴史と現状、今後の動向をまとめて紹介している。大半の読者にとっては「InfiniBandって何?」というところだろうが、僚誌クラウドWatchをご覧になっておられる読者の中には「何で今さら」という方も居られるかもしれない。
そう、InfiniBandという規格は、1999年に作業が始まり、2000年に最初の規格策定が行われたという「えらく古い」規格なのである。
「InfiniBandの現在」記事一覧
- 汎用的なInterconnectへ進化しつつあるInfiniBandの成り立ちは?
- ラック間やサーバー間で2.5GT/sの転送速度を実現する「InfiniBand 1.0」
- Intelが開発中止、発熱対処に難、サーバー間接続一本化は実現せず
- 低コスト低レイテンシーでHPC向け分散型構成に活路
- InfiniBandで高性能を実現するMPIの仕様策定と、その実装「MPICH」
- HBAとMPIとの組み合わせで、低レイテンシーを安価に実現する「RDMA」
- RDMAでパケットを高速転送する「SDP」、これをiSCSIで実現する「iSER」
- 売上から見るInfiniBand市場規模の推移、急速な世代交代もポイント
- SDRの2.5GT/secに加え、DDRの5GT/secとQDRの10GT/secを2004年に追加
- 低レイテンシ―かつ高速なMellanox初のDDR対応HCA「InfiniHost III Ex/Lx」
- 「QDR」に初対応のInfiniBand HCA「ConnectX IB」と10GbEカード「ConnectX EN」
- InfiniBand QDR/Ethernet両対応「ConnectX-2」、324ポートスイッチ「MTS3610」
- 14GT/secの「FDR」と25GT/secの「EDR」、64b66bでのエラー増に「FEC」で対応
- InfiniBand FDR対応の「ConnectX-3 VPI」カード、HPC向けが中心
- SANスイッチ向けにInfiniBand市場へ参入したQLogic、撤退の後、2006年にはHCA向けに再参入
- QLogic、市場シェアを拡大も2012年にInfiniBand部門をIntelへ売却
- Intel、QLogicから買収したInfiniBandからOmni-Path Fabricへ
- InfiniBandが主戦場のMellanox、独自の56GbEでイーサーネット関連を拡大するも……
- Mellanox、100Gbpsの「EDR」製品を2014年リリース、2017年は売上の中心に
- 4x構成で200Gbps超の「InfiniBand HDR」、Mellanoxが2018年後半に製品化
- データ量と演算性能増によるメモリ帯域不足解消へ、Gen-Z Consortiumへ参画
- Gen-Zに加え、競合InterconnectのCAPI、CCIX、CXLにも参画するMellanox
- PCIeの処理オーバーヘッドを36分の1に、IBM独自の「CAPI」から「OpenCAPI」へ
- DRAMサポートを追加、メモリI/F統合も考慮した「OpenCAPI 3.1」
- 3種類の接続形態をサポートする「Gen-Z Ver.1.1」
- HDRは好スタート、InfiniBandのこの先は?
HPC向けアプリ開発の研究者フォーラムがメーリングリストで仕様を固めた「MPI」
「MPI」とMessage Passing Interfaceの略で、仕様を決めているのは「MPI Forum」である。MPI Forumはほかの業界団体と異なり、まず最初にユーザーが集まってスタートしたという、ちょっと珍しいものだ。1991年に、やはりHPC向けのアプリケーションを開発していた研究者が集まり、メモリ分散型システムにおけるメッセージ通信について小規模なディスカッションを行っていた。
ディスカッションと言っても、その場所がオーストリア山荘のレストランだったそうだから、最初は食事の際の世間話あたりからスタートしたのかもしれない。もっとも、すぐにディスカッションのレベルでは済まなくなり、1992年4月には分散型メモリシステムにおけるメッセージ交換手法に関するワークショップが、米ライス大のCRPC(Center for Research on Parallel Computing)がスポンサーとなり、バージニア州ウィリアムズバーグで開催されている。
ここで、そのメッセージ交換手法に関するワーキンググループが形成され、その後活発に活動(6週間ごとにミーティングが行われたそうだ)。1992年11月には最初のドラフトがリリースされ、最終的なドラフトは1993年11月に公開された。これに対して受け付けたパブリックコメントを反映したものが、1994年6月に「MPI 1.0」としてリリースされている。
この後も、MPI Forumは引き続き仕様の充実や新機能の追加、エラッタの削除などの作業を行っており、最新版は2015年6月にリリースされたVersion 3.1となる。ただ、2018年にはDraft Specificationもリリースされているので、次期バージョン(おそらく4.0になるだろう)に向け、現在も作業が継続されている。
余談になるが、このMPI Forumは企業からの寄付などは受けておらず、通常の業界団体だと必ず求められる会員になるための費用も存在しない。ではどうやって運営しているのかというと、DAPRA(米国防高等研究計画局)、NSF(アメリカ国立科学財団)、NSF傘下のSTCs(Science and Technology Centers)、ESPRIT(欧州情報技術研究開発戦略計画)のP6643ことPPPE(P6643:Portable Parallel Programming Environment) Projectなどのほか、テネシー大学も活動資金を提供している。
そもそも、MPI Forumを立ち上げたのは主に研究者だったというあたりが、こうした傾向を決定付けたようだ。ここでいう研究者というのは、必ずしもコンピューター業界とは限らない。物理や化学といった、いわゆる自然科学分野では、コンピューターを利用してシミュレーションを行うことで、理論の検証や観測結果の整合性の確認を行うことが非常に多い。HPCは、まさにこうした目的で大学や研究所などにおいて多用されていた。
こうしたさまざまな分野の研究者が、自分たちが必要なものだからこそMPIの仕様を策定した、という経緯もあり、議論は、ときどきは物理的なミーティングも持たれたものの、主に公開されているメーリングリストをベースとして進められた。
ほかのライブラリの仕様やベンダー独自の実装を取り込んで拡張
このように、ほかの標準化規格とは違った生い立ちもあり、MPIの仕様の変遷自体もやや特異だ。最初にMPI 1.0のドラフトが出た1992年後半の段階では、P4/PVM/PARMACS/Chameleon/TCGMSG/CMMD/etc……など、さまざまな分散型メッセージ交換用のライブラリが利用されていた。
ちなみにP4というのは、MPIが出る前に利用されていた分散型メッセージ通信の方式で、もともとはSun Microsystemsのワークステーション上で動作していたもの。その後Cray X-MP/Y-MP、Sequent Balance 21000/Symmetry、Encore Multimax、Alliance FX/8、Butterfly RC2000、Apollo DN-10000、SGI Iris 4D/380など、さまざまなマシンに移植されて利用されていた。ほかのライブラリも状況は似たようなもので、MPIはこうしたライブラリの機能を(全部ではなく部分的に)盛り込んだ仕様となった。
MPI 1.0がリリースされた後には、多くのベンダーが自社でこれをライブラリとして提供し始めた。各ベンダーではよかれと考えたのだろうが、独自にMPIの拡張を行った例が少なくなく、そうなると、当然さまざまな方言が生まれることになる、
面白いのは、MPI Forumではこうした方言のうち、優れた実装と判断したものを次バージョンで取り込むという、非常に柔軟な態度で対応したことだ。実際、MPI 1.0のリリース後にIBM/Intel/nCUBEなどの独自MPIの仕様が取り込まれている。MPI 1.xは、2008年5月にリリースされた「MPI 1.3」が最後になるが、14年もの間、このやり方で対応が進められた。
リモートマシンの管理機能を盛り込んだ「MPI 2.x」が併存、2012年の「MPI 3.0」で両者を統合
余談になるが、MPI 1.xと並行して、MPI 2.xの標準化も進行していた。最初のリリースである「MPI 2.0」は1997年7月に、続いて2.1が2008年9月に、2.2が2009年9月にそれぞれリリースされている。
こちらには、MPI 1.xとは異なる目的があった。MPI 1.xは静的なメッセージの受け渡しをメインにしたもので、複数のマシン上でプログラムが起動していて、MPI経由でメッセージが来るのをずっと待機して待っている、というモデルと考えればいい。
これに対してMPI 2.xは、相手のマシンで、動的にプロセスを生成(要するにプログラムを起動)したりメモリを管理したりなど、リモートマシンの管理機能を大幅に盛り込んだものとなっている。MPI 2.xは、こうした管理機能の拡張が中心で、それ以外は全部先送りにしたようで、最終リリースのMPI 2.2でも、MPI 1.3の完全な上位互換とはなっていなかったらしい。2012年9月にリリースされたMPI 3.0では、これらが全て統合され、2015年6月にリリースされたMPI 3.1が、現時点での最終バージョンとなる。
IntelのMPIライブラリもベースとした「MPICH/VNI」、InfiniBandで高性能を実現
さて、話を1990年代に戻す。MPIの仕様がリリースされると、HPC向けシステムを提供しているベンダーは、ユーザーから「MPI対応のライブラリが欲しい」とのリクエストを当然受けることになる。これに向けて各社とも、自社環境向けのMPIライブラリを提供していた。Intelも当然自社で提供しており、当時のIntelのMPIライブラリは、MPICHと呼ばれるものをベースとしていた。
これは米ANL(アルゴンヌ国立研究所)が基本となる実装を行った上で公開したもので、最初のバージョンはMPI 1.1に準拠したものだった。このANL由来のMPICHは、以下のような構造になっており、ネットワークカードや共有メモリといった特定のハードウェアを念頭に置いているため性能が出にくいという欠点があった。
これをカバーするべく、米NCSA(国立スーパーコンピュータ応用研究所)が、MPICH向けにVNI(Virtual Machine Interface)という実装をインプリメントしたのが以下の図となる。
このMPICH/VNIを利用すると、InfiniBandで高い性能が出せる(以下左)というのがIntelによるメッセージで、実際転送の所要時間(Round Trip Time)を比較すると、InfiniBandが最も高速というか、低レイテンシだったとされる(以下右)。
Intelの撤退後もInfiniBand接続システムがスーパーコンピューターランキングに登場
こうした取り組みは、幸いにもInfiniBandをIntelが取り止めた後も続いていた。先週も少し触れたが、HPC向けのシステムを構築する場合のサーバー間接続として、当時はInfiniBandしかなかったというのが実情で、加えて言えばHPCのシステムをIntelが直接受注したケースはそう多くなく、大抵はシステムビルダー(Crayなどがこの代表だが、ほかにもさまざまなベンダーが手掛けた)がシステムの設計を行っていた。
こうしたビルダーからみると、サーバーこそXeonベースのものでありながらも、Interconnectはさまざまなものから選ぶことができた。少し後になるが、2003年11月にSNLは、スーパーコンピューターのランキングである「TOP500」の111位に、Catalystというマシンを滑り込ませている。
このマシンは、256コアのPentium 4 XeonをInfiniBandで接続した構成だったが、翌2004年になると、いくつかの組織がXeon+InfiniBandという構成で導入したシステムが、ほかにも100位台へとランキングされている。例えば159位はHPEが上海大学に導入したシステム、160位はIBMがミシシッピ州立大にIBMが入れたMarverickで、いずれもInfiniBandベースだった。
こうしたニーズがあるため、MPI向けではInfiniBandのサポートが欠かせなかった、というべきだろう。まだ当時は、QuadricsやMyrinetを利用した構成の方が圧倒的多数だったが、ここからゆっくりとシェアを増やし始めることになっていく。
「InfiniBandの現在」記事一覧
- 汎用的なInterconnectへ進化しつつあるInfiniBandの成り立ちは?
- ラック間やサーバー間で2.5GT/sの転送速度を実現する「InfiniBand 1.0」
- Intelが開発中止、発熱対処に難、サーバー間接続一本化は実現せず
- 低コスト低レイテンシーでHPC向け分散型構成に活路
- InfiniBandで高性能を実現するMPIの仕様策定と、その実装「MPICH」
- HBAとMPIとの組み合わせで、低レイテンシーを安価に実現する「RDMA」
- RDMAでパケットを高速転送する「SDP」、これをiSCSIで実現する「iSER」
- 売上から見るInfiniBand市場規模の推移、急速な世代交代もポイント
- SDRの2.5GT/secに加え、DDRの5GT/secとQDRの10GT/secを2004年に追加
- 低レイテンシ―かつ高速なMellanox初のDDR対応HCA「InfiniHost III Ex/Lx」
- 「QDR」に初対応のInfiniBand HCA「ConnectX IB」と10GbEカード「ConnectX EN」
- InfiniBand QDR/Ethernet両対応「ConnectX-2」、324ポートスイッチ「MTS3610」
- 14GT/secの「FDR」と25GT/secの「EDR」、64b66bでのエラー増に「FEC」で対応
- InfiniBand FDR対応の「ConnectX-3 VPI」カード、HPC向けが中心
- SANスイッチ向けにInfiniBand市場へ参入したQLogic、撤退の後、2006年にはHCA向けに再参入
- QLogic、市場シェアを拡大も2012年にInfiniBand部門をIntelへ売却
- Intel、QLogicから買収したInfiniBandからOmni-Path Fabricへ
- InfiniBandが主戦場のMellanox、独自の56GbEでイーサーネット関連を拡大するも……
- Mellanox、100Gbpsの「EDR」製品を2014年リリース、2017年は売上の中心に
- 4x構成で200Gbps超の「InfiniBand HDR」、Mellanoxが2018年後半に製品化
- データ量と演算性能増によるメモリ帯域不足解消へ、Gen-Z Consortiumへ参画
- Gen-Zに加え、競合InterconnectのCAPI、CCIX、CXLにも参画するMellanox
- PCIeの処理オーバーヘッドを36分の1に、IBM独自の「CAPI」から「OpenCAPI」へ
- DRAMサポートを追加、メモリI/F統合も考慮した「OpenCAPI 3.1」
- 3種類の接続形態をサポートする「Gen-Z Ver.1.1」
- HDRは好スタート、InfiniBandのこの先は?