Unified Communication X (UCX) は、受賞歴を誇る、最新の高帯域幅、低遅延ネットワーク向けに最適化された、実証済みの運用環境通信フレームワークです。
UCX は、利用可能なハードウェア リソースとオフロードを最大限に活用する一連の抽象通信プリミティブを公開します。これには、RDMA (InfiniBand および RoCE)、TCP、GPU、共有メモリ、ネットワーク アトミック オペレーションが含まれます。
詳細については、ドキュメント サイトをご覧ください。
当社の「メンバーシップの自主的合意基準」および「輸出に準拠した寄付の提出」ポリシーをご確認ください。
UCX のビルドは通常、「configure」と「make」の実行を組み合わせて行われます。リリース tarball を使用する場合は、次のコマンドを実行して、ツリーの最上位のディレクトリ内から UCX システムをインストールします。
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
git リポジトリを直接クローン作成する場合は、次を使用します。
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
注: さまざまなネットワークまたはその他の特定のハードウェアのサポートをコンパイルするには、configure の実行時に追加のコマンド ライン フラグが必要になる場合があります。
$ ./autogen.sh
$ ./contrib/configure-devel --prefix= $PWD /install-debug
*** 注意: UCX の開発者ビルドには通常、余分なデバッグ コードが含まれるため、実行時に大きなパフォーマンスの低下が生じます。
$ contrib/buildrpm.sh -s -b
$ dpkg-buildpackage -us -uc
$ make docs
ウィキページ
ウィキページ
サーバーを起動します:
$ ./src/tools/perf/ucx_perftest -c 0
クライアントを接続します:
$ ./src/tools/perf/ucx_perftest < server-hostname > -t tag_lat -c 1
-c
フラグは CPU アフィニティを設定することに注意してください。同じホスト上で両方のコマンドを実行する場合は、必ずアフィニティを異なる CPU コアに設定してください。
$ make -C test/gtest test
UCX バージョン 1.8.0 には、TCP トランスポートが共有メモリ トランスポートと組み合わせて使用される場合にデータ破損を引き起こす可能性があるバグがあります。 UCX バージョン 1.9.0 以降にアップグレードすることをお勧めします。 1.8.0 より前にリリースされた UCX バージョンにはこのバグはありません。
pthread_rwlock 関数の既知のバグにより、UCX は glibc バージョン 2.25 ~ 2.29 でハングする可能性があります。このようなハングが発生すると、他のスレッドがロックを保持していないにもかかわらず、UCX スレッドの 1 つが pthread_rwlock_rdlock (ucs_rcache_get によって呼び出される) でスタックします。関連する問題は、glibc Bug 23844 で報告されています。この問題が発生した場合は、OS ディストリビューションで提供される glibc バージョンを使用するか、2.25 未満または 2.29 以降のバージョンを使用してソースから glibc をビルドすることをお勧めします。
rdma-core v22 で UCX を使用する場合の互換性の問題のため、UCX_DC_MLX5_RX_INLINE=0 設定はサポートされておらず、DC トランスポートが使用できなくなります。この問題は rdma-core v24 で修正され、rdma-core-22.4-2.el7 rpm にバックポートされました。詳細については、ucx 問題 5749 を参照してください。
成分 | 役割 | 説明 |
---|---|---|
UCP | プロトコル | タグマッチング、ストリーム、接続ネゴシエーションと確立、マルチレール、さまざまなメモリタイプの処理などの高レベルの抽象化を実装します。 |
UCT | 輸送 | アクティブメッセージ、リモートメモリアクセス、アトミック操作などの低レベルの通信プリミティブを実装します。 |
UCS | サービス | 共通に使用するデータ構造、アルゴリズム、システム ユーティリティのコレクション |
UCM | メモリ | メモリ登録キャッシュによって使用されるメモリ割り当ておよび解放イベントをインターセプトします。 |
注: UCX >= 1.12.0 では、Infiniband および RoCE トランスポートのサポートのために rdma-core >= 28.0 または MLNX_OFED >= 5.0 が必要です。
UCX は次のようにライセンスされています。
UCX に貢献するには、適切な貢献者契約にサインアップしてください。
すべての寄稿者は、「メンバーシップの自主的合意基準」および「輸出準拠の寄稿提出」ポリシーに準拠する必要があります。
投稿や変更を送信するときは、次の指示に従ってください。
出版物で UCX を参照するには、次のエントリを使用してください。
@inproceedings { shamis2015ucx ,
title = { UCX: an open source framework for HPC network APIs and beyond } ,
author = { Shamis, Pavel and Venkata, Manjunath Gorentla and Lopez, M Graham and Baker, Matthew B and Hernandez, Oscar and Itigin, Yossi and Dubman, Mike and Shainer, Gilad and Graham, Richard L and Liss, Liran and others } ,
booktitle = { 2015 IEEE 23rd Annual Symposium on High-Performance Interconnects } ,
pages = { 40--43 } ,
year = { 2015 } ,
organization = { IEEE }
}
UCX Web サイトを参照するには:
@misc { openucx-website ,
title = { {The Unified Communication X Library} } ,
key = { {{The Unified Communication X Library}},
howpublished = {{url{http://www.openucx.org}}}
}