@@ -34,16 +34,34 @@ constexpr int kGpuNumber = 0;
3434class TestCudaBuffer : public ::testing::Test {};
3535
3636TEST_F (TestCudaBuffer, Allocate) {
37- const int device = 0 ;
38-
3937 const int64_t kSize = 100 ;
4038 std::shared_ptr<CudaBuffer> buffer;
4139
42- ASSERT_OK (AllocateCudaBuffer (device , kSize , &buffer));
40+ ASSERT_OK (AllocateCudaBuffer (kGpuNumber , kSize , &buffer));
4341 ASSERT_EQ (kSize , buffer->size ());
4442}
4543
46- TEST_F (TestCudaBuffer, CopyFromHost) {}
44+ void AssertCudaBufferEquals (const CudaBuffer& buffer, const uint8_t * host_data,
45+ const int64_t nbytes) {
46+ std::shared_ptr<MutableBuffer> result;
47+ ASSERT_OK (AllocateBuffer (default_memory_pool (), nbytes, &result));
48+ ASSERT_OK (buffer.CopyToHost (result->mutable_data ()));
49+ ASSERT_EQ (0 , std::memcmp (result->data (), host_data, nbytes));
50+ }
51+
52+ TEST_F (TestCudaBuffer, CopyFromHost) {
53+ const int64_t kSize = 1000 ;
54+ std::shared_ptr<CudaBuffer> device_buffer;
55+ ASSERT_OK (AllocateCudaBuffer (kGpuNumber , kSize , &device_buffer));
56+
57+ std::shared_ptr<PoolBuffer> host_buffer;
58+ ASSERT_OK (test::MakeRandomBytePoolBuffer (kSize , default_memory_pool (), &host_buffer));
59+
60+ ASSERT_OK (device_buffer->CopyFromHost (0 , host_buffer->data (), 500 ));
61+ ASSERT_OK (device_buffer->CopyFromHost (500 , host_buffer->data () + 500 , kSize - 500 ));
62+
63+ AssertCudaBufferEquals (*device_buffer, host_buffer->data (), kSize );
64+ }
4765
4866class TestCudaBufferWriter : public ::testing::Test {
4967 public:
@@ -83,12 +101,7 @@ class TestCudaBufferWriter : public ::testing::Test {
83101
84102 ASSERT_OK (writer_->Flush ());
85103
86- std::shared_ptr<MutableBuffer> result;
87- ASSERT_OK (AllocateBuffer (default_memory_pool (), total_bytes, &result));
88-
89- ASSERT_OK (device_buffer_->CopyToHost (result->mutable_data ()));
90-
91- ASSERT_EQ (0 , std::memcmp (result->data (), buffer->data (), total_bytes));
104+ AssertCudaBufferEquals (*device_buffer_, buffer->data (), total_bytes);
92105 }
93106
94107 protected:
@@ -151,10 +164,7 @@ TEST_F(TestCudaBufferWriter, EdgeCases) {
151164 ASSERT_EQ (0 , writer_->num_bytes_buffered ());
152165
153166 // Check that everything was written
154- std::shared_ptr<MutableBuffer> result;
155- ASSERT_OK (AllocateBuffer (default_memory_pool (), 1000 , &result));
156- ASSERT_OK (device_buffer_->CopyToHost (result->mutable_data ()));
157- ASSERT_EQ (0 , std::memcmp (result->data (), host_data, 1000 ));
167+ AssertCudaBufferEquals (*device_buffer_, host_data, 1000 );
158168}
159169
160170} // namespace gpu
0 commit comments