-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Problem
Currently there is no CI verification for GPU/OpenACC code. GPU regressions could go undetected.
Proposal
Add a GitHub Actions workflow that uses NVIDIA Docker to:
- Build the interpolate library with nvfortran + OpenACC
- Build and run GPU benchmarks
- Verify GPU execution produces correct results (max_abs_diff = 0)
Implementation
Docker Image
Use official NVIDIA HPC SDK container:
container:
image: nvcr.io/nvidia/nvhpc:25.11-devel-cuda12.6-ubuntu24.04
options: --gpus allOr build custom image with:
- NVHPC SDK 25.11+
- CUDA toolkit
- CMake, Ninja
- Required dependencies (BLAS, LAPACK, etc.)
Workflow Structure
name: GPU Tests
on:
push:
branches: [main]
pull_request:
paths:
- 'src/interpolate/**'
- 'bench/spline_many/**'
jobs:
gpu-benchmark:
runs-on: [self-hosted, gpu] # or use GPU runners
container:
image: nvcr.io/nvidia/nvhpc:25.11-devel-cuda12.6-ubuntu24.04
options: --gpus all
steps:
- uses: actions/checkout@v4
- name: Build benchmarks
run: |
cmake -S bench/spline_many -B build -G Ninja \
-DCMAKE_Fortran_COMPILER=nvfortran
cmake --build build
- name: Run GPU benchmarks
run: |
ACC_DEVICE_TYPE=nvidia ./build/bench_spline1d_many
ACC_DEVICE_TYPE=nvidia ./build/bench_spline2d_many
ACC_DEVICE_TYPE=nvidia ./build/bench_spline3d_many
- name: Verify correctness
run: |
# Check that max_abs_diff = 0 in output
ACC_DEVICE_TYPE=nvidia ./build/bench_spline3d_many 2>&1 | \
grep -q "max_abs_diff 0.000000000000000"Runner Options
- Self-hosted GPU runner: Most flexible, requires hardware
- GitHub GPU runners: Available in some plans (expensive)
- AWS/GCP spot instances: Cost-effective for periodic testing
Scope
- Start with benchmark correctness verification
- Optionally add performance regression detection
- Consider adding GCC16 GPU tests once Fix GCC16 OpenACC GPU offloading runtime error #209 is resolved
Related Issues
- Fix nvfortran HDF5 complex type compatibility #208 - nvfortran HDF5 compatibility (needed for full library build)
- Fix GCC16 OpenACC GPU offloading runtime error #209 - GCC16 GPU runtime issues
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request