The host-side code can't (and should not) access the values that may
only exist on the device side. E.g. address of a device function
does not exist on the host side as we don't generate the code for it there
This is similar to what nvcc does and allows us to compile code which has device-side variables with initializers that only exist on device side:
__device__ void func() {} __device__ funcptr_t Funcs[] = {func};