This PR templates the System class (and NNP Mode class) on the device type so that the library can be built with all available Kokkos devices and the executable can use any at runtime. Previously, the default device was used everywhere, chosen at compile time.
This also addresses issues in initialization (lattice and velocity creation) with CudaSpace, now done on the host explicitly and copied to the device, with a new System::deep_copy for all AoSoAs. Previously, CudaUVMSpace was used.
This PR templates the
System
class (and NNPMode
class) on the device type so that the library can be built with all available Kokkos devices and the executable can use any at runtime. Previously, the default device was used everywhere, chosen at compile time.This also addresses issues in initialization (lattice and velocity creation) with
CudaSpace
, now done on the host explicitly and copied to the device, with a newSystem::deep_copy
for all AoSoAs. Previously,CudaUVMSpace
was used.