Skip to content

Update the version to 3.14.0 (#1100) #957

Update the version to 3.14.0 (#1100)

Update the version to 3.14.0 (#1100) #957

Workflow file for this run

name: Designated GPU Runner for CUDA Solvers
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
jobs:
cuda_double_precision_tests:
runs-on:
group: CIRRUS-4x16-gpu
container:
image: nvcr.io/nvidia/nvhpc:25.9-devel-cuda13.0-ubuntu24.04
options: --gpus all
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # full history so gh-pages branch is available
- name: Mark workspace as git safe directory
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Install dependencies
# No valgrind. This job charts wall-clock time only. Callgrind counts
# host CPU instructions and cannot see GPU kernels.
run: |
apt update
apt install -y cmake g++ python3 pip
- name: Run Cmake
# MICM_ENABLE_BENCHMARK defaults to OFF; the Build step needs it on.
run: cmake -S . -B build -DMICM_GPU_TYPE="a10" -DMICM_ENABLE_BENCHMARK=ON
- name: Copy cublas headers
run: |
cp -r /opt/nvidia/hpc_sdk/*/25.9/cuda/include/* /usr/include/
- name: Build
run: cmake --build build --parallel 10
- name: Run tests
run: |
cd build
ctest --output-on-failure --verbose --no-tests=error --output-junit ctest-results.xml -j 10
- name: Upload ctest results
if: always()
uses: actions/upload-artifact@v4
with:
name: ctest-results-cuda-double
path: build/ctest-results.xml
# The GPU backend registers no standard ordering, so name the vector ones.
#
# Write to a file, then convert. This container runs steps under `sh -e`,
# which has no pipefail, so a pipeline would hide a script failure.
- name: Benchmark the GPU backend (chapman)
run: |
scripts/bench_micm.sh build 10000 30 gpu in-place mozart chapman \
vector1 vector2 vector4 vector8 vector128 > cuda_timing.txt
python3 scripts/to_benchmark_json.py --unit ms --value-type float \
< cuda_timing.txt > cuda_timing.json
# This workflow measures the CIRRUS a10 GPU runner. benchmark-charts.yml measures
# ubuntu-latest. The two machines keep separate series and separate directories, so
# neither one compares against the other, and the two pushes to gh-pages cannot collide.
- name: Store timing results (chapman)
if: github.event_name == 'push'
uses: benchmark-action/github-action-benchmark@v1
with:
name: Chapman Timing (GPU backend)
tool: customSmallerIsBetter
output-file-path: cuda_timing.json
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: true
benchmark-data-dir-path: dev/bench/gpu/timing
# ts1 runs after the chapman series is stored, so a ts1 failure cannot
# stop the chapman chart from updating.
- name: Benchmark the GPU backend (ts1)
run: |
scripts/bench_micm.sh build 10000 30 gpu in-place mozart ts1 \
vector1 vector2 vector4 vector8 vector128 > cuda_ts1_timing.txt
python3 scripts/to_benchmark_json.py --unit ms --value-type float \
< cuda_ts1_timing.txt > cuda_ts1_timing.json
- name: Store timing results (ts1)
if: github.event_name == 'push'
uses: benchmark-action/github-action-benchmark@v1
with:
name: TS1 Timing (GPU backend)
tool: customSmallerIsBetter
output-file-path: cuda_ts1_timing.json
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: true
benchmark-data-dir-path: dev/bench/gpu/timing
- name: Save PR number for benchmark comment workflow
if: always() && github.event_name == 'pull_request'
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
run: echo "$PR_NUMBER" > pr-number.txt
- name: Upload benchmark outputs
if: always()
uses: actions/upload-artifact@v4
with:
name: micm-bench
path: |
cuda_timing.json
cuda_timing.txt
cuda_ts1_timing.json
cuda_ts1_timing.txt
pr-number.txt
cuda_single_precision_tests:
needs: cuda_double_precision_tests
runs-on:
group: CIRRUS-4x16-gpu
container:
image: nvcr.io/nvidia/nvhpc:25.9-devel-cuda13.0-ubuntu24.04
options: --gpus all
steps:
- uses: actions/checkout@v4
- name: Mark workspace as git safe directory
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Install dependencies
run: |
apt update
apt install -y cmake g++
- name: Run Cmake
run: cmake -S . -B build -DMICM_GPU_TYPE="a10" -DMICM_USE_DOUBLE=OFF
- name: Copy cublas headers
run: |
cp -r /opt/nvidia/hpc_sdk/*/25.9/cuda/include/* /usr/include/
- name: Build
run: cmake --build build --parallel 10
- name: Run tests
run: |
cd build
ctest --output-on-failure --verbose --no-tests=error --output-junit ctest-results.xml -j 10
- name: Upload ctest results
if: always()
uses: actions/upload-artifact@v4
with:
name: ctest-results-cuda-single
path: build/ctest-results.xml