| 24 | |
| 25 | template<typename T> |
| 26 | void copyData(T *data, const Array<T> &src) { |
| 27 | if (src.elements() > 0) { |
| 28 | Array<T> lin = src.isReady() && src.isLinear() ? src : copyArray(src); |
| 29 | // out is now guaranteed linear |
| 30 | auto stream = getActiveStream(); |
| 31 | CUDA_CHECK(cudaMemcpyAsync(data, lin.get(), lin.elements() * sizeof(T), |
| 32 | cudaMemcpyDeviceToHost, stream)); |
| 33 | CUDA_CHECK(cudaStreamSynchronize(stream)); |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | template<typename T> |
| 38 | Array<T> copyArray(const Array<T> &src) { |
no test coverage detected