HPC向け高速通信ネットワークのAPI/ライブラリのメモ。
メモ
(この文章では、「ライブラリ」と「フレームワーク」は特に区別していません。)
スパコンを始めとするHPC環境では、インターコネクトとしてInfinibandやOmniPath、50G/100G Ethernetなどの高速ネットワークが利用されています。多くの場合、これらの環境上ではMPIを始めとする標準ライブラリが使用されるため、その下のAPIに注意を向けることは殆どありません。しかし、以下の様な場合は低レベルAPIや薄いラッパーライブラリを直接使うことを考える必要があります。
- MPIでは不十分だったり目的に適さない場合
- 性能を極限まで引き出したい場合
- あるいは単に好奇心から勉強したい場合
以下が、高速インターコネクトハードウェアと、そのネイティブAPIの一覧です。
インターコネクト | メーカー | ネイティブAPI |
---|---|---|
Infiniband | 標準 | ib verbs |
RoCE | 標準 | verbs |
iWarp | 標準 | verbs |
Tofu | Fujitsu | |
Omni-Path | Intel | PSM2 |
GNI | Cray | GNI API |
IBM Torus Network | IBM | PAMI |
さらに、MPIやOpenSHMEMなどの高レベルライブラリと、上記の低レベルAPIの間には さらにラッパーライブラリが存在します。
ライブラリの一例
- libfabric
- verbs API群の置き換えを狙って開発されているフレームワーク。レイヤーとしては上記のネイティブAPIに近いかも
- GASNET
- PGAS言語への適用を念頭に置いたライブラリ。
- UCX
- いろいろ乱立しているネイティブAPIを低いオーバーヘッドで共通化することを狙っているフレームワーク。Open MPI、OpenSHMEM等での採用をスタート地点として開発されているらしい。個人的にはこれが有望っぽい。
ここらへん、ドキュメントが少なくて一握りの人間にしか使えないAPIが多くて、抽象度や依存関係の間隔が非常にわかりにくいですね。