本当は怖いHPC

HPC屋の趣味&実益ブログ

UCXを試すメモ(1)

最近、ネットワークライブラリのUCXを試しています。

GitHub - openucx/ucx: Unified Communication X (mailing list - https://elist.ornl.gov/mailman/listinfo/ucx-group):

ドキュメントを生成

まずはドキュメントをビルドするために、手元のMacにリポジトリを落としてみます。

$  brew install autoreconf automake doxygen graphviz
# これ以外にpdflatexが必要

$ git clone https://github.com/openucx/ucx.git
$ cd ucx
$ ./autogen.sh
$ ./configure --with-docs-only
$ make docs

で、いくつかLatex関係のエラーが出るが、ひとまず全て q を入力して強引に通過。 doc/doxygen-doc/ucx.pdf にドキュメントのPDFが出力されている。ここまでに既に1時間くらい使ってしまった…

UCXの全体像

UCXは、乱立していた高速インターコネクトの抽象化ライブラリを統合する目的で開始されたプロジェクトです。 ハードウェア(と、そのネイティブAPI)と、構築される特定のプログラミングモデルのライブラリの中間を埋めるライブラリです。

ハードウェアとしては、Openfabricsベース製品(Infiniband、RoCE、iWARP)、Cray GEMINI、Intel Omni-Path(旧Qlogic)などがあります。一方で、特定のプログラミングモデルを提供するライブラリとしてはMPI、OpenSHMEM、GASNETなどがあります。

UCXは、これらの中間を埋める統一ライブラリとして作られています。

ライブラリは、3つのコンポーネントからなっています。

UCS

UCSは、Service layer と呼ばれ、UCXライブラリ全般に渡って使われるユーティリティを提供します。

  • Atomic操作
  • スレッド関連
  • メモリ管理
  • データ構造

UCT

UCT は、transport layer で、通信層を抽象化するコンポーネントです。メモリ間のデータの転送が抽象化され、メモリには、アクセラレーター(GPU)のメモリも含まれます。

UCP

UCP は、上位の高レベルライブラリによって使われるであろう機能を提供するコンポーネントです。

  • 初期化
  • AMO (Atomic memory operation)
  • Tag Matching(通信のタグ付け)
  • Stream
  • Active Message(メッセージの到着と共にコールバックが起動されるようなもの)
  • Collective(集団通信)
【広告】