NCCLは、単一ノードおよびマルチノードの学習向けに、all-reduceやall-gatherなどの最適化されたGPU通信プリミティブを提供するNVIDIAのライブラリです。
openucx/ucc
HPCやAIのワークロード向けに、CPU、GPU、ハードウェアアクセラレータ間でallreduceやbroadcastなどを実行する、統合的な集合通信ライブラリおよびAPIです。
- スター
- 322
- フォーク
- 132
- 未解決の Issue
- 103
- 最終コミット
- 昨日
これは何?
UCCは、並列プログラムが連携するために使うallreduceやbroadcastなど、複数プロセス間のデータ交換を行う集合通信操作向けのライブラリおよびAPIです。HPC、AI/ML、I/Oのワークロード向けに設計されており、単一のインターフェースで複数のプログラミングモデルやランタイムに対応することを目指しています。
ライブラリは、ノンブロッキング集合通信、一度初期化して繰り返し呼び出せる操作、柔軟なリソース割り当てモデルを提供します。ハードウェアによる集合通信を設計の中核に据えています。UCCはUCXのUCSユーティリティを基盤とし、InfiniBand、RoCE、共有メモリ、SHARP、CUDA、NCCL、RCCL、MLX5などのトランスポートをサポートします。
UCCはOpen MPIの集合通信コンポーネントとして利用でき、READMEではmpirunのパラメーターを使ってMPIおよびOpenSHMEMプログラムで有効にする方法を説明しています。autotoolsでビルドでき、UCXが必要です。CUDAとHIPのサポートはオプションです。
主な機能
- 01複数のプログラミングモデルに対応するノンブロッキング集合通信操作。
- 02一度初期化すれば、複数回呼び出せる集合通信操作。
- 03SHARPおよびInfiniBand、RoCE、MLX5のトランスポートを通じたハードウェア集合通信。
- 04CUDA、NCCL、HIP、RCCLに対応したGPU集合通信。
- 05ランタイムパラメーターを使ったOpen MPIおよびOpenSHMEMとの連携。
ユースケース
- マルチノードHPCアプリケーションでallreduceやbroadcastを高速化する。
- InfiniBandまたはRoCE上でGPU集合通信を使い、分散AI/ML学習を実行する。
- Open MPIまたはOpenSHMEMプログラムの集合通信バックエンドとしてUCCを有効にする。
クイックスタート
- 1
リポジトリをクローンして、そのディレクトリに移動します
- 2
ビルドスクリプトを生成します
./autogen.sh - 3
UCXのインストール先を指定してビルドを設定します
./configure --prefix=<ucc-install-path> --with-ucx=<ucx-install-path> - 4
ライブラリをコンパイルします
make
使う前に知っておきたいこと
- 事前にUCXをビルドしてインストールしておく必要があります。
- READMEにはソースからのビルド方法のみ記載されており、パッケージマネージャーを使ったインストール方法はありません。
収録されている特集
トピック
よくある質問
- ucc とは?
- HPCやAIのワークロード向けに、CPU、GPU、ハードウェアアクセラレータ間でallreduceやbroadcastなどを実行する、統合的な集合通信ライブラリおよびAPIです。 UCCは、並列プログラムが連携するために使うallreduceやbroadcastなど、複数プロセス間のデータ交換を行う集合通信操作向けのライブラリおよびAPIです。HPC、AI/ML、I/Oのワークロード向けに設計されており、単一のインターフェースで複数のプログラミングモデルやランタイムに対応することを目指しています。
- ucc は無料で使えますか?ライセンスは?
- ucc は BSD-3-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- ucc は今もメンテナンスされていますか?
- 活発にメンテナンス中。ucc の最終コミットは 2026年11月5日 です。
- ucc は何に使えますか?
- マルチノードHPCアプリケーションでallreduceやbroadcastを高速化する。 InfiniBandまたはRoCE上でGPU集合通信を使い、分散AI/ML学習を実行する。 Open MPIまたはOpenSHMEMプログラムの集合通信バックエンドとしてUCCを有効にする。
- ucc のインストール方法は?
- リポジトリをクローンして、そのディレクトリに移動します ビルドスクリプトを生成します: ./autogen.sh UCXのインストール先を指定してビルドを設定します: ./configure --prefix=<ucc-install-path> --with-ucx=<ucx-install-path> ライブラリをコンパイルします: make
- ucc はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/openucx/ucc
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
HGEMM、FP8/FP4 GEMM、Flash-Attentionを網羅する200以上のカーネルを収録した、最新のCUDA学習ノートとコードのオープンソース書籍。
NVIDIA GPUまたはマルチスレッドCPUで実行でき、カーネル融合にも対応した、NumPy風テンソル式のためのC++20ヘッダーオンリーライブラリ。
PyTorch、JAX、XGBoostなどのフレームワークで分散AIモデルの学習やLLMのファインチューニングを行う、Kubernetesネイティブのプラットフォーム。
GPU上でTransformerモデルを学習・推論するための、メモリ効率に優れた厳密なattentionカーネルFlashAttentionの公式実装。