Skip to content

Add an optional workflow that runs the tests on a simulated H100 - #18

Merged
hyfshishen merged 1 commit into
szcompressor:masterfrom
saqibkh:add-gpu-sim-ci
Nov 8, 2026
Merged

hyfshishen merged 1 commit into
szcompressor:masterfrom
saqibkh:add-gpu-sim-ci

Conversation

@saqibkh

@saqibkh saqibkh commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

The existing CI (coverage.yml) builds cuSZp and runs ctest -V || true on a hosted runner with no GPU, so the six cuSZp_test_* programs cannot work there and any failure is ignored. This adds a separate, optional workflow .github/workflows/gpu-sim.yml that builds cuSZp and runs those tests on a simulated NVIDIA H100, using PantheonSim (via the pantheongpu/setup-pantheonsim action, pinned by SHA). I am the author of PantheonSim, so please weigh this accordingly.

It does not touch coverage.yml and is not meant to be a required check. A simulator cannot reproduce hardware-specific behavior or timing, so it complements real-GPU testing and does not replace it.

What it does:

  • Installs CUDA 13.0 and the simulated H100, then configures with CMAKE_CUDA_ARCHITECTURES=90-virtual and CMAKE_CUDA_RUNTIME_LIBRARY=Shared (the simulator runs PTX only and needs a shared CUDA runtime), builds and installs.
  • Runs the six tests cuSZp_test_{f32,f64}_{1D,2D,3D} under vgpu run. No || true: the job fails if a test exits non-zero or if any of the three modes (fixed, plain, outlier) does not print Pass error check!. This check is needed because the test programs print Fail error check! but always return 0.
  • The test programs use 2 GB (f32) and 4 GB (f64) of data, which does not fit a simulated GPU on a 16 GB hosted runner. The job therefore edits the checkout with sed (not committed) to use 64M elements (256 MB f32, 512 MB f64) and 3D dims {512, 512, 256}. No change to the project is needed.
  • Triggers: workflow_dispatch and pull_request limited to src/, include/, examples/, cmake/, CMakeLists.txt and the workflow itself. A concurrency group cancels superseded runs, with permissions: contents: read.

What is left out:

  • Full-size data, only 64M elements; only one architecture (H100), one CUDA version (13.0), and a Release build.
  • Nothing is excluded: all six tests pass in all three modes (18 error checks).

Result on a fork: the run passed. The whole job took about 18.5 minutes on a first run, of which about 15.5 minutes was the action setting up the simulator. The build took 30 seconds and the six tests about 2 minutes 10 seconds.

Run: https://github.com/saqibkh/cuSZp/actions/runs/42454833424

@codecov

codecov Bot commented Nov 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.65%. Comparing base (9a9645a) to head (3c3da9e).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master      #18   +/-   ##
=======================================
  Coverage   90.65%   90.65%           
=======================================
  Files          14       14           
  Lines         867      867           
  Branches       18       18           
=======================================
  Hits          786      786           
  Misses         71       71           
  Partials       10       10           
Flag Coverage Δ
unittests 90.65% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hyfshishen
hyfshishen merged commit b5d880f into szcompressor:master Nov 8, 2026
5 checks passed
@hyfshishen

Copy link
Copy Markdown
Collaborator

Hi saqibkh, thanks for the effort. I agree that it is necessary to add a test workflow for Hopper GPUs. I just merged this commit into main branch so I will close this PR soon.

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.

2 participants