Skip to content

feat(rocshmem): Implement wave-level fcollect collective operation#7900

Open
kesag wants to merge 8 commits into
developfrom
users/kesag/rocshmem-wave-fcollect
Open

feat(rocshmem): Implement wave-level fcollect collective operation#7900
kesag wants to merge 8 commits into
developfrom
users/kesag/rocshmem-wave-fcollect

Conversation

@kesag

@kesag kesag commented Jun 26, 2026

Copy link
Copy Markdown
Member

Motivation

Develop:

  • nvshmemx_##TYPE##_fcollect_warp()
  • nvshmemx_fcollectmem_warp()

to provide wave-level broadcast capabilities in rocSHMEM, matching NVSHMEM's API and semantics.

Technical Details

add wave-level fcollect implementation rocshmem_ctx_##TYPE##_fcollect_wave() and rocshmem_ctx_fcollectmem_wave()

  • Add IPC backend implementation
  • Add GDA backend implementation

add fcollectmem_wg implementation rocshmem_ctx_fcollectmem_wg()

  • Add IPC backend implementation
  • Add GDA backend implementation
  • Add RO backend implementation

JIRA ID

JIRA ID: AIROCSHMEM-438

Test Plan

  • build functional test for wave level fcollect to verify functionality

Test Result

  • passing functional test
  • functions as expected

Submission Checklist

@therock-pr-bot

therock-pr-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
🌿 Branch Name ✅ Pass
📝 PR Title/Description ✅ Pass
Forbidden Files ✅ Pass
🧪 Unit Test ✅ Pass
🚫 Draft PR 🔜 To Be Enabled
🚩 Feature Flag 🔜 To Be Enabled
📊 Code Coverage 🔜 To Be Enabled

🎉 All policy checks passed!

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

@therock-pr-bot

therock-pr-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown

🚫 Please fix the failed policies before requesting reviews.

The following policy checks failed:

  • ❌ Unit Test

The Not ready to Review label has been added to this PR.
Once all policies pass, the label will be removed automatically.

@kesag kesag force-pushed the users/kesag/rocshmem-wave-fcollect branch from 6ed9c51 to 0687ca9 Compare June 29, 2026 20:24
@kesag kesag marked this pull request as ready for review June 29, 2026 20:26
@kesag kesag requested a review from a team as a code owner June 29, 2026 20:26
Copilot AI review requested due to automatic review settings June 29, 2026 20:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds wavefront-level fcollect support to rocSHMEM (typed and mem variants) across IPC and GDA backends, and introduces a new functional test to validate the wave-level collective behavior.

Changes:

  • Add wave-level rocshmem_ctx_##TYPE##_fcollect_wave() plus backend implementations (IPC, GDA) and RO-backend stubs.
  • Add fcollectmem_{wg,wave} plumbing through the Context interface and backends.
  • Add a new functional test (FcollectWave) and hook it into the functional test driver.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
projects/rocshmem/utils/header_files_gen/COLL.py Extends header generation to include wave-level fcollect API declarations (and new fcollectmem declarations).
projects/rocshmem/tests/functional_tests/tester.hpp Registers new FcollectWave functional test type.
projects/rocshmem/tests/functional_tests/tester.cpp Wires in FcollectWaveTester creation and execution path.
projects/rocshmem/tests/functional_tests/tester_arguments.cpp Enables standard argument handling defaults for the new test.
projects/rocshmem/tests/functional_tests/fcollect_wave_tester.hpp Adds new tester class definition for wave-level fcollect functional testing.
projects/rocshmem/tests/functional_tests/fcollect_wave_tester.cpp Implements the wave-level fcollect kernel test and host-side verification.
projects/rocshmem/src/rocshmem_gpu.cpp Adds device entry points for fcollect_wave and fcollectmem_{wg,wave}, and updates fcollect WG dispatch.
projects/rocshmem/src/reverse_offload/context_ro_tmpl_device.hpp Renames WG fcollect entry point and adds RO wave-level fcollect stub.
projects/rocshmem/src/reverse_offload/context_ro_device.hpp Extends ROContext interface for fcollectmem and wave-level fcollect APIs.
projects/rocshmem/src/reverse_offload/context_ro_device.cpp Adds RO implementations for fcollectmem_wg and a stub for fcollectmem_wave.
projects/rocshmem/src/ipc/context_ipc_tmpl_device.hpp Updates IPC typed fcollect WG implementation and adds typed wave fcollect dispatch.
projects/rocshmem/src/ipc/context_ipc_device.hpp Extends IPCContext interface for fcollectmem and wave-level fcollect APIs.
projects/rocshmem/src/ipc/context_ipc_device_coll.cpp Implements IPC fcollectmem_{wg,wave} linear algorithms and sync.
projects/rocshmem/src/gda/context_gda_tmpl_device.hpp Updates GDA typed fcollect WG implementation and adds typed wave fcollect dispatch.
projects/rocshmem/src/gda/context_gda_device.hpp Extends GDAContext interface for fcollectmem and wave-level fcollect APIs.
projects/rocshmem/src/gda/context_gda_device_coll.cpp Implements GDA fcollectmem_{wg,wave} linear algorithms and sync.
projects/rocshmem/src/context.hpp Extends base Context API surface for fcollectmem and wave-level fcollect.
projects/rocshmem/src/context_tmpl_device.hpp Adds Context::fcollect_wave() dispatch path and updates WG fcollect dispatch naming.
projects/rocshmem/src/context_device.cpp Adds Context::fcollectmem_{wg,wave}() dispatch paths.
projects/rocshmem/scripts/functional_tests/driver.sh Adds fcollect_wave to functional test driver mapping and execution list.
projects/rocshmem/include/rocshmem/rocshmem_COLL.hpp Publishes new wave-level fcollect declarations and fcollectmem declarations in the public header.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread projects/rocshmem/utils/header_files_gen/COLL.py
Comment thread projects/rocshmem/utils/header_files_gen/COLL.py Outdated
Comment thread projects/rocshmem/utils/header_files_gen/COLL.py
Comment thread projects/rocshmem/utils/header_files_gen/COLL.py Outdated
Comment thread projects/rocshmem/include/rocshmem/rocshmem_COLL.hpp Outdated
Comment thread projects/rocshmem/include/rocshmem/rocshmem_COLL.hpp Outdated
Comment thread projects/rocshmem/include/rocshmem/rocshmem_COLL.hpp Outdated
Comment thread projects/rocshmem/include/rocshmem/rocshmem_COLL.hpp Outdated
Comment thread projects/rocshmem/include/rocshmem/rocshmem_COLL.hpp
@kesag kesag force-pushed the users/kesag/rocshmem-wave-fcollect branch from fe81cc8 to 09adefe Compare June 30, 2026 14:42
@kesag kesag changed the title [rocshmem] Implement wave-level fcollect collective operation feat(rocshmem): Implement wave-level fcollect collective operation Jul 13, 2026
@kesag kesag force-pushed the users/kesag/rocshmem-wave-fcollect branch from 8b641c0 to cb40df2 Compare July 13, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants