[Roadmap][Feature] Distributed multi-GPU support
メンテナーはふだん 1 日以内に返信
@viiccwen がすでに取り組んでいます。
2026年6月23日 から。
評価
この issue はまだ評価されていません。
説明
Summary
This issue tracks the broader roadmap for distributed multi-GPU support in QDP.
The goal is not only to make larger QDP states feasible on one machine, but also to establish a distributed foundation that can grow toward richer placement strategies, stronger communication backends, broader workflow support, multi-node execution, and performance hardening over time.
Roadmap Goal
Build a distributed GPU architecture for QDP that can evolve in stages while remaining understandable, maintainable, and extensible.
At a high level, this roadmap should enable QDP to:
- handle workloads that exceed single-GPU limits
- preserve a simple path for workloads that do not need distribution
- fail clearly when a distributed request is invalid or infeasible
- expose distributed state without forcing immediate gather/readback
- support multiple workflows on top of a shared distributed foundation
- evolve from a first single-node path toward true MPI-backed execution
Current Architecture Direction
The distributed runtime should be rank-local:
- each rank owns a local
DeviceMesh - each rank materializes only its local shards
- scalar global coordination happens through
CollectiveCommunicator - GPU-resident collectives are reserved behind
DeviceCollectiveCommunicator - consumers can use zero-copy local shard views when they can consume GPU pointers directly
The roadmap keeps four concerns separate:
- Planning: global placement, rank-local shard ownership, and memory feasibility.
- Runtime: local shard materialization, normalization, and encoding.
- Transport: host scalar collectives first, future CUDA-aware MPI / NCCL device
collectives later. - State: local buffer ownership, zero-copy local shard views, and future
gather/export contracts.
flowchart LR
subgraph Rank0[Rank 0]
R0M[local DeviceMesh] --> R0S[local shards]
R0S --> R0N[local contribution]
end
subgraph Rank1[Rank 1]
R1M[local DeviceMesh] --> R1S[local shards]
R1S --> R1N[local contribution]
end
R0N --> AR[CollectiveCommunicator]
R1N --> AR
AR --> G[global result]
Roadmap Stages
Stage 1. Rank-local single-node foundation
Add the first distributed amplitude foundation:
- distributed execution context
- shared distributed state planning contract
- rank/world metadata
- rank-local placement planning
- local GPU shard materialization
- single-process fallback collectives
- zero-copy local shard views
Tracked by #1295 and implemented by #1296.
Stage 2. True MPI communicator and launcher path
Add real MPI-backed distributed execution:
- MPI scalar communicator
mpirun -n Nlaunch path- rank/world initialization from MPI
- multi-rank smoke tests
- clearer operational documentation
Stage 3. CUDA-aware MPI / NCCL device collectives
Add GPU-resident communication backends where appropriate:
- CUDA-aware MPI backend
- NCCL backend
- backend selection policy
- fallback behavior when GPU collectives are unavailable
Stage 4. Better placement and communication behavior
Improve how distributed execution uses available hardware:
- topology-aware placement policies
- peer-to-peer awareness
- memory-capacity policy improvements
- communication-cost-aware planning
Stage 5. Distributed state usability
Make distributed state easier for the rest of QDP to consume:
- inspection helpers
- gather/export APIs
- downstream consumer contracts
- clearer unsupported-operation errors
Stage 6. Broader workflow support
Expand the distributed foundation beyond the first amplitude path:
- additional encoders where distribution is meaningful
- shared distributed runtime contracts
- workflow-specific adapters that do not duplicate placement/runtime logic
Stage 7. Multi-node evolution and performance hardening
Extend beyond the initial single-node scope when the foundation is ready:
- multi-node deployment model
- production-like launch and diagnostics
- benchmark coverage
- performance regression tests
- scalability and failure-mode documentation
Non-Goals For Early Stages
The early stages should avoid promising:
- immediate full multi-node support
- mandatory MPI/NCCL dependencies
- universal zero-copy across ranks
- complete gather/export semantics
- full performance tuning before the runtime contract stabilizes
- 主要言語
- Rust
- スター
- 2.3k
- フォーク
- 1k
- 平均マージ
- 19時間 17分
- マージ済み PR(30日)
- 13
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/mahout のほかの issue
-
[Bug] Reusing a parameter name on two gates fails on Qiskit only (name conflict adding parameter)対応中かも @Imad2702 が 1 日前に担当しました。 オープンbug enhancement good-first-issue qumat
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
apache/mahout#1509 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Cirq backend ignores the initialized simulator and creates its own cirq.Simulator()再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンbug enhancement good-first-issue qumat
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 1 日以内に返信
-
bug enhancement good-first-issue qumat
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
[Bug] Unknown backend_name leaks ModuleNotFoundError instead of a clear ValueError対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug enhancement good-first-issue qumat
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
apache/mahout#1506 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
[Feature] Python 3.13 support for the qumat package対応中かも @shahar1 が 4 日前に担当しました。 オープンbug docs enhancement good-first-issue qumat
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
apache/mahout#1512 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
test: sim_zero_omega_tests race on shared temp-file names, so two pairs of tests fail at randomオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
pop-os/cosmic-comp#2956 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
area:release criticality:p3 documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
registrystack/registry-stack#2085 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
libp2p/rust-libp2p#6694 ·
メンテナーはふだん 1 日以内に返信