Use cudaMemcpyAsync inside trivial_copy's implementation. For now, all host <-> device copies happen on stream 0