Skip to content

Switch to CompilerCaching.jl#431

Draft
maleadt wants to merge 10 commits into
mainfrom
tb/compilercaching
Draft

Switch to CompilerCaching.jl#431
maleadt wants to merge 10 commits into
mainfrom
tb/compilercaching

Conversation

@maleadt

@maleadt maleadt commented May 12, 2026

Copy link
Copy Markdown
Member

@maleadt maleadt force-pushed the tb/compilercaching branch from 05f7c46 to 4f1d1e3 Compare July 3, 2026 06:14
maleadt and others added 5 commits July 3, 2026 08:18
Replace `cached_compilation` with an `OpenCLResults` struct attached to each
`CodeInstance` via `CompilerCaching`: SPIR-V `obj` + entry name + `device_rng`
flag are session-portable (cached through precompilation), the runtime
library bitcode rides along via `GPUCompiler.bitcode`/`bitcode!`, and the
linked `cl.Kernel` is held in a small linear cache keyed by `cl.Context`.

The linear cache is needed because `cl.Kernel` is bound to the OpenCL
context that built it, but the cache partition (set by
`GPUCompiler.cache_owner` on the SPIRV target + OpenCL params) only covers
codegen-affecting features. Two contexts on the same device share the same
SPIR-V but need distinct kernel handles. Hot-path lookup is one field load +
one `===` compare — single-context users (the overwhelming majority) stay
at n=1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
`something(lookup(...), compile_opencl!(...))` evaluated `compile_opencl!`
eagerly even on a cache hit, so every kernel launch silently re-ran the
full LLVM compile pipeline. Branch explicitly on the lookup result.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GPUCompiler 2.0 now mediates all interaction with the compilation cache
through a single version-agnostic entry point, cached_results, so OpenCL no
longer needs to depend on CompilerCaching or implement the runtime-library
bitcode traits (GPUCompiler caches runtime functions itself now). This also
restores Julia 1.10 support: the same compile_or_lookup runs against the
integrated code cache on 1.11+ and against GPUCompiler's session-local
store on 1.10.

Also fixes two issues in the previous flow: a cache hit on a CodeInstance
that was merely inferred as a callee (obj === nothing) now triggers
compilation instead of failing the kernel link, and reflection through
@device_code_* now observes cached kernels (compile_hook check).

OpenCLResults loses its bitcode slot — it only existed to serve the
runtime-library traits — and clfunction keeps session-local kernel handles
out of package images while generating output.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@maleadt maleadt force-pushed the tb/compilercaching branch from 4f1d1e3 to 715f13d Compare July 3, 2026 06:21
@maleadt maleadt force-pushed the tb/compilercaching branch from 715f13d to 642defe Compare July 3, 2026 07:17
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 3, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.77419% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 80.57%. Comparing base (45a91e3) to head (a3fc017).

Files with missing lines Patch % Lines
src/compiler/execution.jl 95.83% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #431      +/-   ##
==========================================
- Coverage   80.62%   80.57%   -0.05%     
==========================================
  Files          13       12       -1     
  Lines         898      906       +8     
==========================================
+ Hits          724      730       +6     
- Misses        174      176       +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

maleadt and others added 3 commits July 6, 2026 15:09
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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