Skip to content

Commit 4e7f99f

Browse files
committed
[CTS] Add test for blocking property for buffer reads
1 parent b05c5b5 commit 4e7f99f

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

test/conformance/enqueue/urEnqueueMemBufferRead.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
68125
using urEnqueueMemBufferReadMultiDeviceTest =
69126
uur::urMultiDeviceMemBufferQueueTest;
70127

0 commit comments

Comments
 (0)