From one kernel call to another, we might want to have some data resident on the device (of course this mainly applies when device memory is physically different from host memory). This is done using an interface: IResidentArray, and some attributes. This way, we can dramatically reduce the amount of memcpy and restrict to the minimal needed, still using automated memory management.