Skip to content

feat(thead): support T-Head PPU with NCCL - #75

Open
spike-zhu wants to merge 1 commit into
masterfrom
feat/support-thead-backend
Open

spike-zhu wants to merge 1 commit into
masterfrom
feat/support-thead-backend

Conversation

@spike-zhu

@spike-zhu spike-zhu commented Sep 11, 2026

Copy link
Copy Markdown

Summary

Add T-Head PPU support to InfiniCCL through the NCCL-compatible library shipped in the T-Head CUDA SDK.

The change introduces the T-Head device/runtime abstraction, registers the device in the backend-device map, and extends the NCCL backend so existing collective APIs can operate on T-Head PPU memory.

Changes

  • T-Head Backend
    Add T-Head backend support to InfiniCCL.
    Add T-Head device and runtime definitions.
    Add T-Head NCCL-compatible API interfaces.

  • Device Management
    Add T-Head device implementation and data type support.
    Update backend-device mapping for the T-Head backend.

  • Build System
    Update CMake configuration to build the T-Head backend.
    Add the required T-Head backend source files and headers.

Platform and Backend Affected

Platform

  • CPU
  • NVIDIA GPU
  • Iluvatar GPU
  • MetaX GPU
  • Moore Threads GPU
  • Cambricon MLU
  • HYGON DCU
  • T-Head PPU

Backend

  • OpenMPI
  • MPICH
  • NCCL/RCCL
  • MCCL

Performance Impact

  • No performance impact
  • Performance improved
  • Performance regression possible

If applicable, provide benchmark results.

Known Issues & Future Work

Test Results

  • Host: T-Head PPU node
  • Device: 2 x T-Head PPU
  • SDK: T-Head PPU CUDA SDK
  • Backends tested: NCCL and OpenMPI+NCCL
  • Build type: Release

Test Involved Platform

  • CPU
  • NVIDIA GPU
  • Iluvatar GPU
  • MetaX GPU
  • Moore Threads GPU
  • Cambricon MLU
  • HYGON DCU
  • T-Head PPU

Test Involved Backend

  • OpenMPI
  • MPICH
  • NCCL/RCCL
  • MCCL

Checklist

Every contributor must verify every item below before requesting
review. Tick each box only after the check has actually been performed —
do not tick speculatively. If an item truly does not apply, replace the
checkbox with N/A and briefly explain why in an inline comment.

Title, Branch, and Commits

  • PR title follows Conventional Commits (e.g. feat: …, fix(nccl): …).
  • Branch name follows <type>/xxx-yyyy-zzzz where <type> matches the PR title's Conventional Commits type and words are joined with hyphens (see CONTRIBUTING.md §Branches).
  • Each commit message follows Conventional Commits.
  • Small PR is a single squashable commit; or, for a large PR, every commit is meaningful, well-formed, and independently reviewable (see CONTRIBUTING.md §Pull Requests).
  • No stray merge commits from master — the branch is rebased cleanly on top of the current master.
  • No fixup! / squash! / wip commits remain.

Scope and Design

  • Changes are minimal — no unrelated modifications were introduced (CONTRIBUTING.md §Code/General).
  • No dead code, commented-out blocks, debug prints, printf/std::cout/print(...) left behind, or TODO without an owner and issue link.
  • No unrelated formatting churn that would obscure the diff.
  • Public API changes (if any) are intentional, documented, and reflected in affected callers/tests.

General Code Hygiene

  • The code is self-explanatory; comments were added only where the intent or rationale is non-obvious (CONTRIBUTING.md §Code/General).
  • Every modified or added file ends with a single trailing newline (CONTRIBUTING.md §Code/General).
  • No trailing whitespace, inconsistent indentation, or mixed formatting styles remain.
  • Identifiers referenced in comments or error messages are wrapped in Markdown backticks (e.g. the `AllReduce` implementation) (CONTRIBUTING.md §Code/General).
  • All comments and error messages are in English (CONTRIBUTING.md §Code/General).
  • Comments and error messages are complete sentences — capitalized first letter, terminal punctuation — unless the language/framework convention says otherwise (CONTRIBUTING.md §Code/General; §Python).

C++ Specific (if C++ files changed)

  • Code follows the Google C++ Style Guide.
  • clang-format version 16 has been run against all applicable modified files; the diff is clean.
  • No exceptions are thrown, and error paths use the required assertion pattern.
  • Error and warning message wording follows the LLVM Coding Standards.
  • Constructor initializer-list ordering is correct.
  • Class, function, member, and namespace spacing follows the required formatting rules.

Python Specific (if Python files changed)

N/A. No Python source files are changed in this PR.
ruff check and ruff format --check were still run and passed.

Testing

  • All applicable example programs have been built and tested successfully on at least one supported heterogeneous cluster setup.

Build, CI, and Tooling

  • New backends or devices have been added to auto-detection in CMakeLists.txt under if(AUTO_DETECT_DEVICES) or to if(AUTO_DETECT_BACKENDS) if applicable.
  • Both CI workflows (clang-format.yml, ruff.yml) are green locally (or expected to be green on CI).

Documentation

  • README.md, CONTRIBUTING.md, or inline docs updated when behavior, build flags, or developer workflow changed.

Security and Safety

  • No secrets, access tokens, internal URLs, customer data, or personal hardware identifiers have been committed.
  • Third-party code is license-compatible and attributed.
  • No unsafe pointer arithmetic, uninitialized reads, or missing bounds checks were introduced.

@spike-zhu
spike-zhu requested a review from Ziminli September 11, 2026 07:44
@spike-zhu spike-zhu self-assigned this Sep 11, 2026
@spike-zhu
spike-zhu marked this pull request as draft September 11, 2026 07:59
@spike-zhu spike-zhu changed the title support T-Head PPU with NCCL in InfiniCCL feat(thead): support T-Head PPU with NCCL Sep 18, 2026
@spike-zhu
spike-zhu force-pushed the feat/support-thead-backend branch from 33b89ad to 6f824cb Compare September 18, 2026 08:53
@spike-zhu
spike-zhu marked this pull request as ready for review September 18, 2026 08:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant