diff --git a/src/sizes.jl b/src/sizes.jl index 1c76881..bb3d44f 100644 --- a/src/sizes.jl +++ b/src/sizes.jl @@ -46,7 +46,12 @@ function _getscalar(x, sizes::Sizes, k::Int) end function _setscalar!(x, value, sizes::Sizes, k::Int) - return x[sizes.storage_offset[k]+1] = value + # Use a 1-element view + broadcast so this works on GPU storage as well as + # `Vector{Float64}`. Direct `x[idx] = value` is a scalar setindex which + # GPUArrays disallows by default. + pos = _scalar_pos(sizes, k) + view(x, reshape(pos:pos, ())) .= value + return value end """