Is this what you're looking for? julia> using SIMD
julia> v = rand(2, 5) 2×5 Array{Float64,2}: 0.391832 0.785861 0.352291 0.874891 0.874593 0.697768 0.51637 0.711525 0.400077 0.266559 julia> w = reinterpret(Vec{2, Float64}, vec(v)) 5-element Array{SIMD.Vec{2,Float64},1}: Float64⟨0.391832,0.697768⟩ Float64⟨0.785861,0.51637⟩ Float64⟨0.352291,0.711525⟩ Float64⟨0.874891,0.400077⟩ Float64⟨0.874593,0.266559⟩ Den onsdag 16 november 2016 kl. 05:52:14 UTC+1 skrev Sheehan Olver: > > > In some high performance code I want to convert an 2 x n `Matrix{Float64}` > to a n long `Matrix{Vec{2,Float64}}`with no memory allocation (both types > will store memory in the same order). The following works: > > *v=rand(2,100)* > *w=unsafe_wrap(Vector{Vec{2,Float64}},* > * reinterpret(Ptr{Vec{2,Float64}},pointer(v)),* > * size(pts,1),true)* > > The variable *v* is a throw away variable, however, and as I understand > it, the way its written the memory for *w* will be freed as soon as *v* > is no longer referenced. Is there any way to tell the garbage collector to > not collect *v*? >