Skip to content

Commit 8cb89c6

Browse files
Add KA unified memory support (#2819)
1 parent 832eba9 commit 8cb89c6

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ ExprTools = "0.1"
6767
GPUArrays = "11.2.1"
6868
GPUCompiler = "0.24, 0.25, 0.26, 0.27, 1"
6969
GPUToolbox = "0.3"
70-
KernelAbstractions = "0.9.32"
70+
KernelAbstractions = "0.9.38"
7171
LLVM = "9.1"
7272
LLVMLoopInfo = "1"
7373
LazyArtifacts = "1"

src/CUDAKernels.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module CUDAKernels
22

33
using ..CUDA
4-
using ..CUDA: @device_override, CUSPARSE
4+
using ..CUDA: @device_override, CUSPARSE, default_memory, UnifiedMemory
55

66
import KernelAbstractions as KA
77

@@ -21,16 +21,18 @@ end
2121

2222
CUDABackend(; prefer_blocks=false, always_inline=false) = CUDABackend(prefer_blocks, always_inline)
2323

24-
KA.allocate(::CUDABackend, ::Type{T}, dims::Tuple) where T = CuArray{T}(undef, dims)
25-
KA.zeros(::CUDABackend, ::Type{T}, dims::Tuple) where T = CUDA.zeros(T, dims)
26-
KA.ones(::CUDABackend, ::Type{T}, dims::Tuple) where T = CUDA.ones(T, dims)
24+
KA.allocate(::CUDABackend, ::Type{T}, dims::Tuple; unified::Bool = false) where T = CuArray{T, length(dims), unified ? UnifiedMemory : default_memory}(undef, dims)
25+
KA.zeros(::CUDABackend, ::Type{T}, dims::Tuple; unified::Bool = false) where T = fill!(CuArray{T, length(dims), unified ? UnifiedMemory : default_memory}(undef, dims), zero(T))
26+
KA.ones(::CUDABackend, ::Type{T}, dims::Tuple; unified::Bool = false) where T = fill!(CuArray{T, length(dims), unified ? UnifiedMemory : default_memory}(undef, dims), one(T))
2727

2828
KA.get_backend(::CuArray) = CUDABackend()
2929
KA.get_backend(::CUSPARSE.AbstractCuSparseArray) = CUDABackend()
3030
KA.synchronize(::CUDABackend) = synchronize()
3131

3232
KA.functional(::CUDABackend) = CUDA.functional()
3333

34+
KA.supports_unified(::CUDABackend) = true
35+
3436
Adapt.adapt_storage(::CUDABackend, a::AbstractArray) = Adapt.adapt(CuArray, a)
3537
Adapt.adapt_storage(::CUDABackend, a::Union{CuArray,CUSPARSE.AbstractCuSparseArray}) = a
3638
Adapt.adapt_storage(::KA.CPU, a::Union{CuArray,CUSPARSE.AbstractCuSparseArray}) = Adapt.adapt(Array, a)

0 commit comments

Comments
 (0)