JuliaSIMD / VectorizedRNG.jl

Vectorized uniform and normal random samplers.
MIT License
33 stars 7 forks source link

Support `view`? #16

Open SkyWorld117 opened 3 years ago

SkyWorld117 commented 3 years ago

It seems the reordering of matrix leads to wrong result.

julia> using VectorizedRNG

julia> m = zeros(Float32, 4,4)
4×4 Matrix{Float32}:
 0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0

julia> n = view(m, 2:3,2:3)
2×2 view(::Matrix{Float32}, 2:3, 2:3) with eltype Float32:
 0.0  0.0
 0.0  0.0

julia> rand!(local_rng(), n)
2×2 view(::Matrix{Float32}, 2:3, 2:3) with eltype Float32:
 0.383252  0.0
 0.110364  0.0

julia> m
4×4 Matrix{Float32}:
 0.0  0.0       0.943732  0.0
 0.0  0.383252  0.0       0.0
 0.0  0.110364  0.0       0.0
 0.0  0.603976  0.0       0.0
chriselrod commented 3 years ago

Yeah, it'd be good to use ArrayInterface.dense_dims and ArrayInterface.stride_rank here to do this correctly.

SkyWorld117 commented 3 years ago

Alright, I'll take a look at that. Thanks.