Skip to content

Adding smoketest preset for simple correctness tests - #266

Merged
gilbertlee-amd merged 7 commits into
ROCm:candidatefrom
gilbertlee-amd:SmokeTest
Apr 26, 2026
Merged

Adding smoketest preset for simple correctness tests#266
gilbertlee-amd merged 7 commits into
ROCm:candidatefrom
gilbertlee-amd:SmokeTest

Conversation

@gilbertlee-amd

@gilbertlee-amd gilbertlee-amd commented Apr 25, 2026

Copy link
Copy Markdown
Collaborator

Motivation

Adds a simple smoketest preset into TransferBench to perform simple correctness tests. Knobs exist to allow for more thorough tests, however defaults are chosen to try to keep run-times short.

Technical Details

This preset tests DMA/GFX copies between host and device, between two devices, as well as broadcast / gather and all to all.
It supports multi-rank, and has knobs for controlling the Transfer sizes to sweep (SIZE_LIST), as well as how many GFX subexecutors to use (GFX_SE_LIST). For performance reasons, SE_MAX_BYTES is used to limit the total amount of bytes a single GFX Subexecutor (CU/WGP) will Transfers - for example skipping tests copying 1GB using only 1 CU. TEST_LISTS can be used to specify a subset of tests to run, and accepts ranges such as 1-7. Copies are done in parallel

Test Plan

Testing of the various knobs were tried, as well as fault-injection to confirm that failures would be shown.

Test Result

Sample output:

[smoketest-preset Related]
CPU_MEM_TYPE         =            0 : Using default CPU (0=default, 1=coherent, 2=non-coherent, 3=uncached, 4=unpinned)
GFX_SE_LIST          =            2 : Testing GFX with subexecutor counts: 1,256
GPU_MEM_TYPE         =            0 : Using default GPU (0=default, 1=fine-grained, 2=uncached, 3=managed)
SIZE_LIST            =            3 : Transfer sizes tested: 1K,16M,256M
SE_MAX_BYTES         =         128M : Each SubExecutor can work on at most 134217728 bytes
TEST_LIST            =           14 : Running all tests

Running tests on 8 GPUs total across 1 rank(s)
Legend: *=Pass .=Skip F=Fail
                                                | GFX | GFX |
| Name                      | Test | DMA | Test | 001 | 256 |
|---------------------------|------|-----|------|-----|-----|
| Copy (H2D)                |  01  | *** |  08  | **. | .** |
| Copy (D2H)                |  02  | *** |  09  | **. | .** |
| Copy (D2D) (Remote Write) |  03  | *** |  10  | **. | .** |
| Copy (D2D) (Remote Read ) |  04  | *** |  11  | **. | .** |
| Broadcast  (One to All)   |  05  | *** |  12  | **. | .** |
| Gather     (All to One)   |  06  | *** |  13  | **. | .** |
| All To All                |  07  | *** |  14  | **. | .** |
|---------------------------|------|-----|------|-----|-----|

All tests passed

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 a new smoketest preset to TransferBench to run a small suite of correctness-focused DMA/GFX transfer checks across common patterns (H2D/D2H/D2D, broadcast, gather, all-to-all), with environment-variable knobs to control sizes, subexecutor counts, and test selection.

Changes:

  • Introduces a new smoketest preset implementation and registers it in the preset dispatch map.
  • Adds EnvVars helpers for parsing string arrays and for printing string vectors.
  • Updates changelog; includes a small validation-path tweak and whitespace cleanup.

Reviewed changes

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

Show a summary per file
File Description
src/client/Presets/SmokeTest.hpp New smoketest preset logic, env-var knobs, and tabular output.
src/client/Presets/Presets.hpp Registers the new smoketest preset.
src/client/EnvVars.hpp Adds string-array env-var parsing + string-vector formatting helper.
src/header/TransferBench.hpp Adjusts validation mismatch handling in ValidateAllTransfers().
src/client/Utilities.hpp Removes trailing whitespace.
CHANGELOG.md Documents the new preset.

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

Comment thread src/client/Presets/SmokeTest.hpp Outdated
Comment thread src/client/Presets/SmokeTest.hpp Outdated
Comment thread src/client/EnvVars.hpp
Comment thread src/header/TransferBench.hpp
Comment thread src/client/EnvVars.hpp
Comment thread src/client/Presets/SmokeTest.hpp Outdated
Comment thread src/client/Presets/SmokeTest.hpp Outdated
@gilbertlee-amd
gilbertlee-amd merged commit a4fc836 into ROCm:candidate Apr 26, 2026
4 checks passed
@gilbertlee-amd
gilbertlee-amd deleted the SmokeTest branch April 26, 2026 00:21
@nileshnegi nileshnegi mentioned this pull request Apr 27, 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: 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 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.

3 participants