@@ -65,6 +65,63 @@ TEST_P(urEnqueueMemBufferReadTest, InvalidSize) {
65
65
nullptr ));
66
66
}
67
67
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
+
68
125
using urEnqueueMemBufferReadMultiDeviceTest =
69
126
uur::urMultiDeviceMemBufferQueueTest;
70
127
0 commit comments