@@ -384,11 +384,11 @@ for (srcty, dstty) in [(:Array, :CLArray), (:CLArray, :Array), (:CLArray, :CLArr
384384 cl. enqueue_svm_copy (pointer (dst, dst_off), pointer (src, src_off), nbytes; blocking)
385385 elseif memtype (device_array) == cl. BufferDeviceMemory
386386 if src isa CLArray && dst isa CLArray
387- cl. enqueue_bda_copy (convert (cl. cl_mem, dst. data[]), (dst_off - 1 ) * sizeof (T), convert (cl. cl_mem, src. data[]), (src_off - 1 ) * sizeof (T), nbytes; blocking)
387+ cl. enqueue_bda_copy (convert (cl. cl_mem, dst. data[]), (dst . offset * Base . elsize (dst)) + ( dst_off - 1 ) * sizeof (T), convert (cl. cl_mem, src. data[]), (src . offset * Base . elsize (src)) + (src_off - 1 ) * sizeof (T), nbytes; blocking)
388388 elseif dst isa CLArray
389- cl. enqueue_bda_write (convert (cl. cl_mem, dst. data[]), (dst_off - 1 ) * sizeof (T), pointer (src, src_off), nbytes; blocking)
389+ cl. enqueue_bda_write (convert (cl. cl_mem, dst. data[]), (dst . offset * Base . elsize (dst)) + ( dst_off - 1 ) * sizeof (T), pointer (src, src_off), nbytes; blocking)
390390 elseif src isa CLArray
391- cl. enqueue_bda_read (pointer (dst, dst_off), convert (cl. cl_mem, src. data[]), (src_off - 1 ) * sizeof (T), nbytes; blocking)
391+ cl. enqueue_bda_read (pointer (dst, dst_off), convert (cl. cl_mem, src. data[]), (src . offset * Base . elsize (src)) + ( src_off - 1 ) * sizeof (T), nbytes; blocking)
392392 end
393393 else
394394 cl. enqueue_usm_copy (pointer (dst, dst_off), pointer (src, src_off), nbytes; blocking)
@@ -433,7 +433,7 @@ function Base.fill!(A::DenseCLArray{T}, val) where {T}
433433 if memtype (A) == cl. SharedVirtualMemory
434434 cl. enqueue_svm_fill (pointer (A), convert (T, val), length (A))
435435 elseif memtype (A) == cl. BufferDeviceMemory
436- cl. enqueue_bda_fill (convert (cl. cl_mem, A. data[]), 0 , convert (T, val), length (A))
436+ cl. enqueue_bda_fill (convert (cl. cl_mem, A. data[]), A . offset * Base . elsize (A) , convert (T, val), length (A))
437437 else
438438 cl. enqueue_usm_fill (pointer (A), convert (T, val), length (A))
439439 end
@@ -514,7 +514,7 @@ function Base.resize!(a::CLVector{T}, n::Integer) where {T}
514514 if memtype (a) == cl. SharedVirtualMemory
515515 cl. enqueue_svm_copy (ptr, pointer (a), m* sizeof (T); blocking= false )
516516 elseif memtype (a) == cl. BufferDeviceMemory
517- cl. enqueue_bda_copy (convert (cl. cl_mem, mem), 0 , convert (cl. cl_mem, a. data[]), 0 , m* sizeof (T); blocking= false )
517+ cl. enqueue_bda_copy (convert (cl. cl_mem, mem), 0 , convert (cl. cl_mem, a. data[]), a . offset * Base . elsize (a) , m* sizeof (T); blocking= false )
518518 else
519519 cl. enqueue_usm_copy (ptr, pointer (a), m* sizeof (T); blocking= false )
520520 end
0 commit comments