Skip to content

Enable Windows Support for ROCm Libraries Benchmarks#2697

Merged
lajagapp merged 12 commits intomainfrom
users/lajagapp/add-benchmark-windows
Jan 7, 2026
Merged

Enable Windows Support for ROCm Libraries Benchmarks#2697
lajagapp merged 12 commits intomainfrom
users/lajagapp/add-benchmark-windows

Conversation

@lajagapp
Copy link
Contributor

This PR enables benchmark testing on Windows runners for gfx1151, extending the existing Linux-only benchmark infrastructure to support cross-platform execution.

Motivation

Currently, TheRock benchmark tests only run on Linux runners. To ensure comprehensive performance validation across all supported platforms, we need to enable benchmark testing on Windows as well. This PR extends the benchmark framework to support Windows execution, specifically targeting gfx1151 Windows runners.

Technical Details

  1. Workflow Integration - Added test_windows_benchmarks job to .github/workflows/ci_windows.yml that mirrors the Linux benchmark implementation
  2. Cross-Platform CPU Detection - Refactored hardware.py to support both Linux and Windows
  3. Windows Encoding Compatibility - Replaced all Unicode characters with ASCII-safe alternatives to fix UnicodeEncodeError on Windows (CP1252 encoding)
  4. Binary Path Simplification - Removed explicit binary existence check from test_rocrand_benchmark.py
  5. GPU Family Configuration - Added Windows benchmark runner for gfx1151 in amdgpu_family_matrix.py

Test Plan

  • Nightly CI workflow triggers test_windows_benchmarks job for gfx1151
  • Build artifacts are correctly passed to benchmark job
  • Benchmark job runs on correct Windows GPU runner
  • All benchmark scripts execute successfully (rocFFT, rocRAND, rocSOLVER, hipBLASLt)
  • Results are saved locally and uploaded to benchmark database

Test Result

Windows Build and Benchmark Execution verified on Nightly-CI (gfx1151).
https://github.com/ROCm/TheRock/actions/runs/20466255467

Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
Remove Unicode characters (✓, ✗, ⚠, →, ∞) from log messages that cause
UnicodeEncodeError on Windows (CP1252 encoding). Replace with ASCII text
to ensure cross-platform compatibility.

Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
- multiprocessing.cpu_count() for CPU core count
- wmic commands for detailed CPU information (model, speed, cache, RAM)

Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
To match with other benchmarks and to support windows binary files.

Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
Remove benchmark_runs_on parameter from ci.yml to prevent Windows
benchmarks from running on PRs. Benchmarks now only execute during
scheduled nightly runs (ci_nightly.yml) for both Linux and Windows.

Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
Copy link
Contributor

@geomin12 geomin12 left a comment

Choose a reason for hiding this comment

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

looks good, just some housekeeping comments

Link TODO comments for dedicated benchmark-runs-on runners to tracking
issue.

Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
@lajagapp lajagapp requested a review from geomin12 January 4, 2026 16:44
Copy link
Contributor

@geomin12 geomin12 left a comment

Choose a reason for hiding this comment

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

two more comments, then it looks good to land

Comment on lines 112 to 115
**GPU Family Support:**

- **Linux:** gfx94x (MI300X/MI325X)
- **Windows:** gfx1151 (RDNA3.5)
Copy link
Contributor

Choose a reason for hiding this comment

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

can we add the expected GPU family support for benchmarks? (if known)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done! Updated README.md with table showing GPU family support for benchmarks.

- Added table showing GPU family support for benchmarks across platforms
- Documents which families are enabled in CI (gfx94x Linux, gfx1151
Windows)
- Lists architecture-agnostic support for gfx950, gfx110x, gfx120x,
gfx90x
- Increased rocrand_bench timeout from 60 to 90 minutes

Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
@lajagapp lajagapp requested a review from geomin12 January 6, 2026 16:12
lajagapp and others added 2 commits January 6, 2026 19:03
Signed-off-by: Lenine Ajagappane <Lenine.Ajagappane@amd.com>
@lajagapp lajagapp merged commit 7ed7c61 into main Jan 7, 2026
124 of 127 checks passed
@lajagapp lajagapp deleted the users/lajagapp/add-benchmark-windows branch January 7, 2026 06:35
@github-project-automation github-project-automation bot moved this from TODO to Done in TheRock Triage Jan 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants