本当は怖いHPC

HPC屋の趣味&実益ブログ

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が多くて、抽象度や依存関係の間隔が非常にわかりにくいですね。

【広告】