Addition and conversion to Eigen in all but kernel code; separation of
kernel code (compiled with nvcc) and host (compiled with cl).