Skip to content

Adding new experimental copy-only GFX kernel, gfxsweep update - #277

Merged
nileshnegi merged 6 commits into
ROCm:candidatefrom
gilbertlee-amd:GpuCopyKernel
Apr 30, 2026
Merged

Adding new experimental copy-only GFX kernel, gfxsweep update#277
nileshnegi merged 6 commits into
ROCm:candidatefrom
gilbertlee-amd:GpuCopyKernel

Conversation

@gilbertlee-amd

Copy link
Copy Markdown
Collaborator

Motivation

Adding a new GFX copy kernel that only supports single src single dst copies to investigate performance, as it may have less register pressure than the GFX reduction kernel.

Technical Details

The new copy kernel can be enabled by setting GFX_KERNEL=1. GFX_KERNEL=0 will force the GpuReduceKernel which remain default behavior. Setting GFX_KERNEL=-1 will switch to auto-mode, where GpuCopyKernel will be used if the Transfers are compatible single-source/single-destination copies.

The gfxsweep preset was also updated to allow for KERNELS option to sweep over GFX kernels, as well as adjusted to allow for different timing methods (TIMING_MODE: -1=auto, 0 = Aggregate CPU wall-clock, 1 = HipEvent executor time, 2 = GPU wallclock time).

Submission Checklist

@gilbertlee-amd
gilbertlee-amd requested review from a team as code owners April 29, 2026 05:20
@nileshnegi
nileshnegi requested a review from Copilot April 29, 2026 05:33
Comment thread src/header/TransferBench.hpp Outdated

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

Adds an experimental, copy-only GFX kernel and exposes kernel selection/auto-selection via GFX_KERNEL, plus expands the gfxsweep preset to sweep kernels and timing modes.

Changes:

  • Introduce GpuCopyKernel alongside the existing reduction kernel, with auto/forced selection support.
  • Add GFX_KERNEL env var plumbing and config validation for selecting GFX kernels.
  • Update gfxsweep preset to sweep over kernels (KERNELS) and support multiple timing modes (TIMING_MODE).

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
src/header/TransferBench.hpp Adds GFX kernel type enum, kernel eligibility/selection logic, new copy-only kernel implementation, and dispatch support.
src/client/EnvVars.hpp Adds GFX_KERNEL env var parsing/printing and maps it into cfg.gfx.gfxKernel.
src/client/Presets/GfxSweep.hpp Adds KERNELS sweep dimension, TIMING_MODE selection/auto-mode, and updates output formatting.
src/client/Presets/HbmBandwidth.hpp Reorders/adjusts NUM_ITERATIONS validation logic.
CHANGELOG.md Documents the new GFX_KERNEL option.

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

Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/client/Presets/GfxSweep.hpp Outdated
Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/client/Presets/GfxSweep.hpp Outdated
Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/client/Presets/GfxSweep.hpp Outdated
Comment thread src/client/Presets/GfxSweep.hpp
Comment thread src/client/EnvVars.hpp Outdated
Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/header/TransferBench.hpp
Comment thread src/client/Presets/GfxSweep.hpp Outdated
Comment thread src/client/Presets/GfxSweep.hpp
Comment thread src/client/Presets/GfxSweep.hpp Outdated

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

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


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

Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/client/Presets/Schmoo.hpp Outdated
Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/header/TransferBench.hpp Outdated
Comment thread src/header/TransferBench.hpp
gilbertlee-amd and others added 2 commits April 30, 2026 00:14
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Comment thread src/header/TransferBench.hpp
@nileshnegi
nileshnegi merged commit 005d26c into ROCm:candidate Apr 30, 2026
1 check passed
nileshnegi added a commit that referenced this pull request May 2, 2026
- Initial pod communication support (#235)
- cuda + MNNVL update & pod presets (#241)
- Increase CQ size for high qps (#244)
- fix hang when NVML is present but fabricmanager isnt (#246)
- Adding nica2a preset  (#248)
- Adding HBM read bandwidth preset (#250)
- Pod Ring preset (#251)
- gfxsweep preset (#254) (#256)
- Adding Batched DMA support (hipMemcpyBatchAsync), and bmasweep preset (#255)
- Adding a wallclock consistency detection preset (#258)
- Adding smoketest preset for simple correctness tests (#266)
- Help / envvars / presets presets (#267)
- Modernize CMake build (#268)
- Replace version-based pod/amd-smi detection with compile-time API probes (#269)
- Fix collective mismatch hangs in multi-rank error paths (#270)
- Fix SHOW_ITERATIONS table truncation with multiple transfers per executor (#271)
- Reformat a2asweep output to match gfxsweep style (#272)
- Gfx sweep update (#274)
- Increasing flush frequency in smoketest (#275)
- Adding new experimental copy-only GFX kernel, gfxsweep update (#277)
- Fixes for cuMem compilation and invalid device ordinal (#278)
- Simplifying socket connect, allow for using host address (#279)
- Updating podring to run on single node without need to force single pod (#280)
- Adding SHOW_PERCENTILES to show extra per-iteration statistics (#281)

---------

Co-authored-by: AtlantaPepsi <timhu102@gmail.com>
Co-authored-by: Pak Nin Lui <pak.lui@amd.com>
Co-authored-by: pierreantoineH <PierreAntoine.Harraud@amd.com>
Co-authored-by: Nilesh M Negi <Nilesh.Negi@amd.com>
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@nileshnegi nileshnegi mentioned this pull request May 2, 2026
1 task
nileshnegi added a commit that referenced this pull request May 2, 2026
- Initial pod communication support (#235)
- cuda + MNNVL update & pod presets (#241)
- Increase CQ size for high qps (#244)
- fix hang when NVML is present but fabricmanager isnt (#246)
- Adding nica2a preset  (#248)
- Adding HBM read bandwidth preset (#250)
- Pod Ring preset (#251)
- gfxsweep preset (#254) (#256)
- Adding Batched DMA support (hipMemcpyBatchAsync), and bmasweep preset (#255)
- Adding a wallclock consistency detection preset (#258)
- Adding smoketest preset for simple correctness tests (#266)
- Help / envvars / presets presets (#267)
- Modernize CMake build (#268)
- Replace version-based pod/amd-smi detection with compile-time API probes (#269)
- Fix collective mismatch hangs in multi-rank error paths (#270)
- Fix SHOW_ITERATIONS table truncation with multiple transfers per executor (#271)
- Reformat a2asweep output to match gfxsweep style (#272)
- Gfx sweep update (#274)
- Increasing flush frequency in smoketest (#275)
- Adding new experimental copy-only GFX kernel, gfxsweep update (#277)
- Fixes for cuMem compilation and invalid device ordinal (#278)
- Simplifying socket connect, allow for using host address (#279)
- Updating podring to run on single node without need to force single pod (#280)
- Adding SHOW_PERCENTILES to show extra per-iteration statistics (#281)

---------

Co-authored-by: Tim <43156029+AtlantaPepsi@users.noreply.github.com>
Co-authored-by: Pak Nin Lui <pak.lui@amd.com>
Co-authored-by: pierreantoineH <PierreAntoine.Harraud@amd.com>
Co-authored-by: Nilesh M Negi <Nilesh.Negi@amd.com>
Co-authored-by: Claude <claude@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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.

4 participants