diff --git a/src/CUDAStream.cu b/src/CUDAStream.cu index f325dfc..5629b40 100644 --- a/src/CUDAStream.cu +++ b/src/CUDAStream.cu @@ -39,7 +39,16 @@ void CUDAStream::write_arrays(const std::vector& a, const std::vector& template void CUDAStream::read_arrays(std::vector& a, std::vector& b, std::vector& c) { + // Copy device memory to host + cudaMemcpy(a.data(), d_a, a.size()*sizeof(T), cudaMemcpyDeviceToHost); + check_error(); + cudaMemcpy(b.data(), d_b, b.size()*sizeof(T), cudaMemcpyDeviceToHost); + check_error(); + cudaMemcpy(c.data(), d_c, c.size()*sizeof(T), cudaMemcpyDeviceToHost); + check_error(); } + + template __global__ void copy_kernel(const T * a, T * c) { diff --git a/src/main.cpp b/src/main.cpp index cfb8884..6c2c0d8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -33,6 +33,9 @@ int main(int argc, char *argv[]) stream->copy(); + stream->read_arrays(a, b, c); + std::cout << c[105] << std::endl; + delete[] stream; }