diff --git a/Project.toml b/Project.toml index 3699e4d9..c2aa0b5b 100644 --- a/Project.toml +++ b/Project.toml @@ -33,13 +33,13 @@ Adapt = "4" CEnum = "0.4, 0.5" ExprTools = "0.1" GPUArrays = "11.2.1" -GPUCompiler = "1.5" +GPUCompiler = "1.6" GPUToolbox = "0.1, 0.2" KernelAbstractions = "0.9.1" LLVM = "6, 7, 8, 9" NEO_jll = "=24.26.30049" Preferences = "1" -SPIRVIntrinsics = "0.2" +SPIRVIntrinsics = "0.4" SPIRV_LLVM_Translator_jll = "20" SpecialFunctions = "1.3, 2" StaticArrays = "1" diff --git a/src/compiler/compilation.jl b/src/compiler/compilation.jl index 5fbcb9c9..9593ad73 100644 --- a/src/compiler/compilation.jl +++ b/src/compiler/compilation.jl @@ -6,7 +6,7 @@ const oneAPICompilerJob = CompilerJob{SPIRVCompilerTarget,oneAPICompilerParams} GPUCompiler.runtime_module(::oneAPICompilerJob) = oneAPI -GPUCompiler.method_table(::oneAPICompilerJob) = method_table +GPUCompiler.method_table_view(job::oneAPICompilerJob) = GPUCompiler.StackedMethodTable(job.world, method_table, SPIRVIntrinsics.method_table) # filter out OpenCL built-ins # TODO: eagerly lower these using the translator API diff --git a/src/oneAPI.jl b/src/oneAPI.jl index afb9bc15..ab4da365 100644 --- a/src/oneAPI.jl +++ b/src/oneAPI.jl @@ -25,10 +25,14 @@ include("../lib/level-zero/oneL0.jl") using .oneL0 functional() = oneL0.functional[] + # device functionality import SPIRVIntrinsics SPIRVIntrinsics.@import_all SPIRVIntrinsics.@reexport_public +# local method table for device functions +Base.Experimental.@MethodTable(method_table) + include("device/runtime.jl") include("device/array.jl") include("device/quirks.jl") diff --git a/src/oneAPIKernels.jl b/src/oneAPIKernels.jl index 66729b57..cd40d8d9 100644 --- a/src/oneAPIKernels.jl +++ b/src/oneAPIKernels.jl @@ -1,7 +1,7 @@ module oneAPIKernels using ..oneAPI -using ..oneAPI: @device_override +using ..oneAPI: @device_override, method_table import KernelAbstractions as KA