saqibkh opened a new pull request, #1501:
URL: https://github.com/apache/mahout/pull/1501

   `python-testing.yml` builds QDP with `QDP_NO_CUDA=1` stubs. Its own comment 
says "No GPU in CI, so GPU fidelity cases self-skip", so the ten 
`qdp-core/tests/gpu_*.rs` suites never run in CI. This adds a workflow that 
runs them on a simulated NVIDIA T4.
   
   **How:** [PantheonSim](https://github.com/pantheongpu/pantheonsim), via 
`pantheongpu/setup-pantheonsim`, installs the CUDA toolkit and simulates the 
GPU on the runner's CPU. QDP's kernels run from their PTX 
(`QDP_CUDA_ARCH_LIST=75+ptx` embeds it), and cudarc's driver-API calls go 
through the simulator, so the results are real. There is no timing model, so 
this checks correctness, not performance.
   
   **Changes:** one new workflow, `.github/workflows/qdp-gpu-testing.yml`:
   - it's path-filtered to QDP's Rust code (`qdp-core`, `qdp-kernels`, the 
Cargo files) and the workflow itself, on pushes to `main` and pull requests, 
like `python-testing.yml`;
   - it sets up CUDA 12.8 and a simulated T4;
   - it runs `cargo test -p qdp-core` for the ten `gpu_*` test binaries, with 
`QDP_CUDA_ARCH_LIST=75+ptx`.
   
   It uses the same SHA-pinned checkout and Rust toolchain actions as your 
other workflows, and carries the license header. `python-testing.yml` is 
unchanged.
   
   **What it can touch:** the action is pinned by commit (v0.1.2), not by a 
tag, and it pins the simulator it builds by commit too, so nothing in the job 
changes until you move the pin. The workflow's token is read-only 
(`permissions: contents: read`), and the action uses no token or secrets; it 
installs packages only from Ubuntu's and NVIDIA's repositories. The job isn't a 
required check.
   
   **What it gives, from [a run on my 
fork](https://github.com/saqibkh/mahout/actions/runs/36949640967):**
   - All ten suites pass: 158 tests, in about 20 seconds of test time.
   - The job takes about 3 minutes. The action caches the simulator it builds, 
per pinned version, so only the first run in the repository builds it (about 18 
minutes that time).
   
   Disclosure: I maintain PantheonSim, and this PR was prepared with AI 
assistance (Claude Code), which I reviewed. Running QDP's tests needed a fix in 
the simulator: device functions that return a vector (`make_cuComplex`) through 
a call slot. If the job is ever flaky or wrong, please open an issue at 
pantheongpu/pantheonsim and I'll fix it on our side.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to