AWSのElastic Fabric Adapter
AWS re:Invent 2018において、Amazonが開発する新しいネットワークアダプタ Elastic Fabric Adapter (EFA) が発表されたようです。
HPC的なまともなアプリをスケールさせようと思うと、どうしてもネットワークがネックになります。普通のスパコンでは、Infiniband等のハイスピードインターコネクトが実装されているので、速度的には100G〜200Gくらいでるのですが、普通のクラウド環境だと一桁遅いので、通信が重すぎてちっとも計算が進まないということになります。近年、AWSを始めとしたクラウド環境はどんどんHPC分野をターゲットにしているので、スパコンなみのハイスピードインターコネクトが求められていました。
とうとうインターコネクトもAmazonが自前開発しちゃうんですね・・・。正確には、以前に買収した企業の製品(の後継)らしいです。確かに、Infinibandをそのまま使うのは仮想化とかResource Isolation的につらいし、かといってEthernetでRoCEか?というとそれも違うよねーということで独自開発という感じでしょうか。実績と柔軟性だけみれば100G Ethernetですが、対応スイッチは高いし(IPのパケット処理は重いので)、RDMAとかを考え出すとつらい(RoCEはRoutingのデッドロック等の問題があり運用がつらいらしい)とか…。いろいろありそうです。
EFAの特徴としては
- インターフェースはlibfabric
- MPIからの利用を想定
- c5nインスタンスの中からENA(Elastic Network Adapter??)が見えて、それが実際にホスト上に存在するアダプタにマッピングされる(という図に見える)
- (HPC network performance with EFAというページでは、MPI multistreamの性能評価の結果らしきものが掲載されているが、軸の説明がなにもないのでよくわりません。横軸は並列数かな?)
というあたりでしょうか。また、通信の種類としては、
- RDM: Reliable unordered datagrams, タグマッチング無し
- DGRAM: Unreliable unordered datagrams with flow limit
- RxR: libfabric interface over RDM, 完了順序保証, タグマッチングあり、Max MessageSizeが大きい(メインメモリより大きい)
- SRD: Scalable Reliable Datagram、順序保証なし、到着保証あり、レイテンシが桁で少ない
などがあるようです。InfinibandだとReliable datagramはあまり使うことが少ないので面白いな〜と思います。AWSのデータセンター向けに設計されたプロトコルだということで、そのあたりが関係してそう。
2019年上半期にGAということで、現在Preview申し込み受付中とのこと。
感想
インターフェースに使われているライブラリが今どきlibfabricかーと思わないことはないのですが、通信をDatagramベースにすることによって既存インターコネクトの問題点を回避してAWSに適した設計になっていると思うので、その点は興味深いです。
なお、NCCLにも対応しているとのこと。NCCLはVerbsだったはずだけどどうやってんだろ…と思ったら、普通に気合で書き直しているっぽい・・・?これから読んでみます。
まあ、インターフェースとして提供するライブラリをどうするかというのは難しい問題ですね。今から開発するならUCXベースにするのが普通だと思いますが、数年前からずっと開発していたとなると、Verbsにするよりはlibfabricのほうが100倍マシということは同意します。