Btw, note that by using StructArrays.jl you can conveniently view the SoA also as an AoS.
s = StructArray{SVector{3,Float32}}((dot_cache.x, dot_cache.y, dot_cache.z))
200-element StructArray(::Vector{Float32}, ::Vector{Float32}, ::Vector{Float32}) with eltype SVector{3, Float32}:
[0.54684204, 0.0305565, 0.19615191]
[0.12136942, 0.9855579, 0.84889585]
...