Skip to content

ci: add GitHub Actions workflow (Linux x86_64 + aarch64)#11

Merged
n4hy merged 2 commits into
mainfrom
ci-add-github-actions
Jul 22, 2026
Merged

ci: add GitHub Actions workflow (Linux x86_64 + aarch64)#11
n4hy merged 2 commits into
mainfrom
ci-add-github-actions

Conversation

@n4hy

@n4hy n4hy commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds .github/workflows/ci.yml — the repo had no CI at all.
  • Two-job matrix: ubuntu-latest (x86_64, NEON off) and ubuntu-24.04-arm (aarch64, NEON on). Both configure, build, and run the ctest suite on every push to main and every PR.
  • Vulkan tests run against Mesa lavapipe (software rasterizer) — VK_ICD_FILENAMES is pinned to the lavapipe ICD so the loader does not try to find a host GPU on the free-tier runner.

What CI does not cover (no free hardware)

  • CUDAtest_cuda_kernels requires an NVIDIA GPU; job runs with -DENABLE_CUDA=OFF.
  • SVE2 — the ubuntu-24.04-arm runner is Neoverse-N1 (ARMv8.2-A, no SVE2), so test_sve2_kernels will not be built there.
  • FP16 NEON — conditional on OPTMATH_HAS_FP16 CMake probe; will build on the aarch64 runner if the compiler accepts it, otherwise skipped.

Test plan

  • Both matrix jobs go green on this PR (Vulkan lavapipe correctly finds the ICD; all built ctest suites pass).
  • After merge, CI runs on every push to main and every future PR.

🤖 Generated with Claude Code

n4hy and others added 2 commits July 22, 2026 01:48
Configures, builds, and runs the ctest suite on push/PR:
- Linux x86_64 (ubuntu-latest): NEON off, Vulkan via Mesa lavapipe
  (software rasterizer), CUDA off. Exercises the scalar/Eigen
  fallbacks and the Vulkan shaders under lavapipe.
- Linux aarch64 (ubuntu-24.04-arm): NEON on, Vulkan via lavapipe,
  CUDA off. Actually runs the ARM NEON code paths.

VK_ICD_FILENAMES is pinned to the lavapipe ICD so the loader does
not try to find a host GPU (free runners have none).

Not exercised here (no free CI hardware):
- CUDA (test_cuda_kernels) — needs an NVIDIA GPU
- SVE2 (test_sve2_kernels) — needs an ARMv9 core; the ubuntu-24.04-arm
  runner is Neoverse-N1, which is ARMv8.2-a with no SVE2
- FP16 NEON tests — build only on FP16-capable ARM targets

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
First attempt hard-coded /usr/share/vulkan/icd.d/lvp_icd.{x86_64,aarch64}.json
which does not exist on the current mesa-vulkan-drivers package on
ubuntu-latest / ubuntu-24.04-arm; both jobs failed on the "Force lavapipe"
step. Discover whichever lvp_icd.*.json the package actually installed,
fall back to letting the loader search /usr/share/vulkan/icd.d by default,
and as a last resort pin VK_LOADER_DRIVERS_SELECT=lvp.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@n4hy
n4hy merged commit 0aa14f4 into main Jul 22, 2026
2 checks passed
@n4hy
n4hy deleted the ci-add-github-actions branch July 22, 2026 07:11
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.

1 participant