Overlap the CUDA data transfers with computations with cudaMemcpyAsync

The detailed theories are explained in "[How to Overlap Data Transfers in CUDA C/C++](http://devblogs.nvidia.com/parallelforall/how-overlap-data-transfers-cuda-cc/)".