@@ -65,6 +65,63 @@ TEST_P(urEnqueueMemBufferReadTest, InvalidSize) {
6565 nullptr ));
6666}
6767
68+ TEST_P (urEnqueueMemBufferReadTest, Blocking) {
69+ constexpr const size_t memSize = 10u ;
70+ constexpr const size_t bytes = memSize * sizeof (int );
71+ const int data[memSize] = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
72+ int output[memSize] = {};
73+
74+ ur_mem_handle_t memObj;
75+ ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_READ_WRITE, bytes,
76+ nullptr , &memObj));
77+
78+ ASSERT_SUCCESS (urEnqueueMemBufferWrite (queue, memObj, true , 0 , bytes, data,
79+ 0 , nullptr , nullptr ));
80+
81+ ASSERT_SUCCESS (urEnqueueMemBufferRead (queue, memObj, true , 0 , bytes, output,
82+ 0 , nullptr , nullptr ));
83+
84+ bool isSame =
85+ std::equal (std::begin (output), std::end (output), std::begin (data));
86+ EXPECT_TRUE (isSame);
87+ if (!isSame) {
88+ std::for_each (std::begin (output), std::end (output),
89+ [](int &elem) { std::cout << elem << " ," ; });
90+ std::cout << std::endl;
91+ }
92+ }
93+
94+ TEST_P (urEnqueueMemBufferReadTest, NonBlocking) {
95+ constexpr const size_t memSize = 10u ;
96+ constexpr const size_t bytes = memSize * sizeof (int );
97+ const int data[memSize] = {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };
98+ int output[memSize] = {};
99+
100+ ur_mem_handle_t memObj;
101+ ASSERT_SUCCESS (urMemBufferCreate (context, UR_MEM_FLAG_READ_WRITE, bytes,
102+ nullptr , &memObj));
103+
104+ ur_event_handle_t cpIn, cpOut;
105+ ASSERT_SUCCESS (urEnqueueMemBufferWrite (queue, memObj, false , 0 , bytes, data,
106+ 0 , nullptr , &cpIn));
107+ ASSERT_NE (cpIn, nullptr );
108+
109+ ASSERT_SUCCESS (urEnqueueMemBufferRead (queue, memObj, false , 0 , bytes,
110+ output, 0 , nullptr , &cpOut));
111+ ASSERT_NE (cpOut, nullptr );
112+
113+ ASSERT_SUCCESS (urEventWait (1 , &cpOut));
114+
115+ bool isSame =
116+ std::equal (std::begin (output), std::end (output), std::begin (data));
117+ EXPECT_TRUE (isSame);
118+ if (!isSame) {
119+ std::for_each (std::begin (output), std::end (output),
120+ [](int &elem) { std::cout << elem << " ," ; });
121+ std::cout << std::endl;
122+ }
123+ }
124+
68125using urEnqueueMemBufferReadMultiDeviceTest =
69126 uur::urMultiDeviceMemBufferQueueTest;
70127
0 commit comments