VKalVrt: Initialization optimization
VKalVrt is a hotspot in some workloads so minor changes can have a large benefit. When I initially switched to std::make_unique
I didn't realise this initialises arrays, in some cases arrays are being set twice so I tweak this to avoid extra work.
I also pass by value N to dsinv
to make it clear to user and compiler it isn't modified.
I also use std::move in some places to avoid array copying.