Skip to content

Reduce Unix CI matrix and improve compiler caching - #95

Open
jdumas wants to merge 14 commits into
mainfrom
ci/reduce-unix-build-matrix
Open

Reduce Unix CI matrix and improve compiler caching#95
jdumas wants to merge 14 commits into
mainfrom
ci/reduce-unix-build-matrix

Conversation

@jdumas

@jdumas jdumas commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Description

  • replace the Cartesian Unix CI matrix with nine compact, explicit configurations
  • retain ASan+UBSan and TSan RelWithDebInfo tests on Linux and macOS ARM64
  • retain AppleClang RelWithDebInfo tests on macOS Intel
  • retain LLVM Debug coverage on Linux and macOS ARM64
  • select one baseline Embree ISA per macOS architecture (SSE2 on Intel and NEON on ARM)
  • use LAGRANGE_LIMIT_PARALLELISM pools and a Linux prebuild to isolate Embree compilation and linking
  • serialize Embree compilation for Linux LLVM ASan+UBSan while retaining depth two elsewhere
  • enable OpenVDB explicit instantiation and prebuild its shared target in the memory-aware pools
  • gate GitHub-specific heavy compile pools behind LAGRANGE_LIMIT_GITHUB_ACTIONS_PARALLELISM
  • increase ccache capacity to 750 MB and preserve untouched entries across canceled/incremental runs
  • bound and clean ccache archives before upload so the reduced set of PR-scoped caches can survive between commits
  • increase ccache diagnostics and update the sccache action to v0.0.11
  • warm compiler caches on pushes to main for reuse by pull requests
  • use ccache zstd compression level 5 to retain more objects within the cache limit

Related Issue

N/A

Motivation and Context

The current Cartesian product creates 18 Unix builds. Recent job logs show that approximately 99.4% of compiler calls are cacheable, but jobs restore no cache and get effectively zero hits. The matrix produces enough large archives to churn through the Actions cache allowance.

The explicit matrix cuts the Unix job count in half while preserving the required compiler, configuration, architecture, and sanitizer coverage. Reducing the number of cache keys and enforcing cache cleanup should improve reuse within a pull request. Push builds on main seed caches that new pull requests are allowed to restore.

How Has This Been Tested?

  • actionlint -ignore 'shellcheck reported issue' .github/workflows/continuous.yaml
  • git diff --check
  • verified the explicit matrix expands to nine Unix jobs
  • compared generated Embree Ninja graphs: Apple ARM NEON has 58 kernel compile edges versus 98 with the previous NONE/NEON2X setting

The remaining shellcheck findings reported without the ignore flag are pre-existing PowerShell/shell quoting findings outside this change.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

@jdumas
jdumas force-pushed the ci/reduce-unix-build-matrix branch 2 times, most recently from befee1f to 27fdf2e Compare September 8, 2026 19:00
@jdumas
jdumas force-pushed the ci/reduce-unix-build-matrix branch from 27fdf2e to a5e436b Compare September 9, 2026 04:40
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