From ff30b5f3d743c3179cd8ab2ce4446d4d5ff20a6e Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Mon, 5 Oct 2026 22:37:17 +0200 Subject: [PATCH 1/2] Back @private with KernelAbstractions' PrivateArray The MArray returned from `Scratchpad` is heap-allocated when passed to a function that isn't inlined. KernelAbstractions' PrivateArray is a stack allocation that otherwise performs like the MArray, and lets us drop the StaticArrays dependency. --- Project.toml | 2 -- ext/KernelAbstractionsExt.jl | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Project.toml b/Project.toml index 7420467c..086ea7bc 100644 --- a/Project.toml +++ b/Project.toml @@ -28,7 +28,6 @@ SPIRV_LLVM_Translator_jll = "4a5d46fc-d8cf-5151-a261-86b458210efb" SPIRV_Tools_jll = "6ac6d60f-d740-5983-97d7-a4482c0689f4" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" -StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" oneAPI_Level_Zero_Headers_jll = "f4bc562b-d309-54f8-9efb-476e56f0410d" oneAPI_Level_Zero_Loader_jll = "13eca655-d68d-5b81-8367-6d99d727ab01" oneAPI_Support_jll = "b049733a-a71d-5ed3-8eba-7d323ac00b36" @@ -61,7 +60,6 @@ SPIRV_LLVM_Backend_jll = "23" SPIRV_LLVM_Translator_jll = "23" SPIRV_Tools_jll = "2025.4.0" SpecialFunctions = "1.3, 2" -StaticArrays = "1" julia = "1.10" oneAPI_Level_Zero_Loader_jll = "1.29" oneAPI_Support_jll = "0.10.0" diff --git a/ext/KernelAbstractionsExt.jl b/ext/KernelAbstractionsExt.jl index 73f4a14d..72d70ccb 100644 --- a/ext/KernelAbstractionsExt.jl +++ b/ext/KernelAbstractionsExt.jl @@ -5,8 +5,6 @@ using oneAPI: @device_override, method_table import KernelAbstractions as KA -import StaticArrays - import Adapt Adapt.adapt_storage(::KA.CPU, a::oneArray) = convert(Array, a) @@ -21,7 +19,7 @@ end ## scratch memory @device_override @inline function KA.Scratchpad(ctx, ::Type{T}, ::Val{Dims}) where {T, Dims} - StaticArrays.MArray{Tuple{Dims...}, T}(undef) + KA.PrivateArray{T}(undef, Val(Dims), Val(oneAPI.AS.Function)) end From cf73964a3d48c98e4c9d14a4e0d7b61e817c7b22 Mon Sep 17 00:00:00 2001 From: Tim Besard Date: Mon, 5 Oct 2026 22:55:01 +0200 Subject: [PATCH 2/2] [TEMP] Test against KernelAbstractions#843 Drop this commit once that PR is merged. --- Project.toml | 2 +- test/Project.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 086ea7bc..3e6ff72b 100644 --- a/Project.toml +++ b/Project.toml @@ -34,7 +34,7 @@ oneAPI_Support_jll = "b049733a-a71d-5ed3-8eba-7d323ac00b36" [sources] AcceleratedKernels = {url = "https://github.com/JuliaGPU/AcceleratedKernels.jl", rev = "main"} -KernelAbstractions = {url = "https://github.com/JuliaGPU/KernelAbstractions.jl", rev = "main"} +KernelAbstractions = {url = "https://github.com/JuliaGPU/KernelAbstractions.jl", rev = "tb/private-array"} KernelInterface = {url = "https://github.com/JuliaGPU/KernelAbstractions.jl", rev = "main", subdir = "lib/KernelInterface"} [extensions] diff --git a/test/Project.toml b/test/Project.toml index 9d8d4da8..ba29b0b9 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -27,7 +27,7 @@ oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" oneAPI_Support_jll = "b049733a-a71d-5ed3-8eba-7d323ac00b36" [sources] -KernelAbstractions = {url = "https://github.com/JuliaGPU/KernelAbstractions.jl", rev = "main"} +KernelAbstractions = {url = "https://github.com/JuliaGPU/KernelAbstractions.jl", rev = "tb/private-array"} KernelInterface = {url = "https://github.com/JuliaGPU/KernelAbstractions.jl", rev = "main", subdir = "lib/KernelInterface"} oneAPI = {path = ".."}