Auto-tuning Julia kernels - #397
Open
fjwillemsen wants to merge 115 commits into
Open
Conversation
…to prevent parallelization issues
|
fjwillemsen
requested
a lite review from Copilot
and removed request for
Copilot
August 8, 2026 09:34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Motivation
With Julia's rapid adoption in high-performance and GPU computing, it is an increasingly relevant auto-tuning target.
This PR introduces native Julia GPU kernel auto-tuning support to Kernel Tuner. It allows Julia developers to leverage Kernel Tuner’s mature tuning strategies and options without reinventing the wheel.
In addition, it opens up the Julia ecosystem to any KernelTuner developer, which can be convenient due to the
KernelAbstractionsprogramming model that is able to execute abstract kernels on CUDA, AMD, oneAPI, Metal, and CPU devices.Implementation
By implementing a new Julia backend that leverages
JuliaCall, we can now compile, launch, and observe Julia GPU kernels directly from Python. This functionality is fundamental for the Julia packageKernelTuner.jl, which allows interaction with Kernel Tuner fully from Julia.Key changes:
JuliaFunctions): Implements aGPUBackendsubclass that interfaces with Julia’s GPU ecosystem viaJuliaCall. Supports automatic detection and routing toCUDA.jl,ROCBackend,oneAPI, andMetal.interface.py): Safe conversion from Julia-specific data structures to Python-compatible types.tune_paramsare explicitly converted to ordered lists of tuples to preserve parameter order, and Julia vectors are mapped to Python lists viautil.possible_julia_vector_to_list().@dataclass JuliaKernelto enable caching and parallel tuning execution.JuliaRuntimeObserverfor accurate backend-specific performance metrics within the Julia process.For further details on the usage, implementation and testing from the Julia side, see
KernelTuner.jl.Known Limitations & Future Work
TODOand requires additional work if deemed necessary.