Skip to content

Commit 1d5263f

Browse files
committed
Add testing for different size ranges
Since there is some logic in adapters for finding suitable worksizes, it is necessary to test this within UR. These added tests launch kernels on different sized global ranges in order to ensure correct operation of sub group size calculation.
1 parent 3bf3e2d commit 1d5263f

File tree

1 file changed

+96
-48
lines changed

1 file changed

+96
-48
lines changed

test/conformance/enqueue/urEnqueueKernelLaunch.cpp

Lines changed: 96 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -77,56 +77,104 @@ TEST_P(urEnqueueKernelLaunchTest, InvalidWorkDimension) {
7777
UR_RESULT_ERROR_INVALID_WORK_DIMENSION);
7878
}
7979

80-
struct urEnqueueKernelLaunch2DTest : uur::urKernelExecutionTest {
81-
void SetUp() override {
82-
program_name = "fill_2d";
83-
UUR_RETURN_ON_FATAL_FAILURE(urKernelExecutionTest::SetUp());
80+
#define ENQUEUE_KERNEL_LAUNCH_TEST_1D_SIZES(SIZE) \
81+
struct urEnqueueKernelLaunchTestSizes##SIZE : uur::urKernelExecutionTest { \
82+
void SetUp() override { \
83+
program_name = "fill"; \
84+
UUR_RETURN_ON_FATAL_FAILURE(urKernelExecutionTest::SetUp()); \
85+
} \
86+
\
87+
uint32_t val = 42; \
88+
size_t global_size = SIZE; \
89+
size_t global_offset = 0; \
90+
size_t n_dimensions = 1; \
91+
}; \
92+
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urEnqueueKernelLaunchTestSizes##SIZE); \
93+
\
94+
TEST_P(urEnqueueKernelLaunchTestSizes##SIZE, Success) { \
95+
ur_mem_handle_t buffer = nullptr; \
96+
AddBuffer1DArg(sizeof(val) * global_size, &buffer); \
97+
AddPodArg(val); \
98+
ASSERT_SUCCESS(urEnqueueKernelLaunch(queue, kernel, n_dimensions, \
99+
&global_offset, &global_size, \
100+
nullptr, 0, nullptr, nullptr)); \
101+
ASSERT_SUCCESS(urQueueFinish(queue)); \
102+
ValidateBuffer(buffer, sizeof(val) * global_size, val); \
84103
}
85-
86-
uint32_t val = 42;
87-
size_t global_size[2] = {8, 8};
88-
size_t global_offset[2] = {0, 0};
89-
size_t buffer_size = sizeof(val) * global_size[0] * global_size[1];
90-
size_t n_dimensions = 2;
91-
};
92-
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urEnqueueKernelLaunch2DTest);
93-
94-
TEST_P(urEnqueueKernelLaunch2DTest, Success) {
95-
ur_mem_handle_t buffer = nullptr;
96-
AddBuffer1DArg(buffer_size, &buffer);
97-
AddPodArg(val);
98-
ASSERT_SUCCESS(urEnqueueKernelLaunch(queue, kernel, n_dimensions,
99-
global_offset, global_size, nullptr, 0,
100-
nullptr, nullptr));
101-
ASSERT_SUCCESS(urQueueFinish(queue));
102-
ValidateBuffer(buffer, buffer_size, val);
103-
}
104-
105-
struct urEnqueueKernelLaunch3DTest : uur::urKernelExecutionTest {
106-
void SetUp() override {
107-
program_name = "fill_3d";
108-
UUR_RETURN_ON_FATAL_FAILURE(urKernelExecutionTest::SetUp());
104+
ENQUEUE_KERNEL_LAUNCH_TEST_1D_SIZES(1)
105+
ENQUEUE_KERNEL_LAUNCH_TEST_1D_SIZES(53)
106+
ENQUEUE_KERNEL_LAUNCH_TEST_1D_SIZES(100)
107+
ENQUEUE_KERNEL_LAUNCH_TEST_1D_SIZES(1342)
108+
109+
#define ENQUEUE_KERNEL_LAUNCH_TEST_2D_SIZES(SIZE1, SIZE2) \
110+
struct urEnqueueKernelLaunch2DTestSizes##SIZE1##_##SIZE2 \
111+
: uur::urKernelExecutionTest { \
112+
void SetUp() override { \
113+
program_name = "fill_2d"; \
114+
UUR_RETURN_ON_FATAL_FAILURE(urKernelExecutionTest::SetUp()); \
115+
} \
116+
\
117+
uint32_t val = 42; \
118+
size_t global_size[2] = {SIZE1, SIZE2}; \
119+
size_t global_offset[2] = {0, 0}; \
120+
size_t buffer_size = sizeof(val) * global_size[0] * global_size[1]; \
121+
size_t n_dimensions = 2; \
122+
}; \
123+
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P( \
124+
urEnqueueKernelLaunch2DTestSizes##SIZE1##_##SIZE2); \
125+
\
126+
TEST_P(urEnqueueKernelLaunch2DTestSizes##SIZE1##_##SIZE2, Success) { \
127+
ur_mem_handle_t buffer = nullptr; \
128+
AddBuffer1DArg(buffer_size, &buffer); \
129+
AddPodArg(val); \
130+
ASSERT_SUCCESS(urEnqueueKernelLaunch(queue, kernel, n_dimensions, \
131+
global_offset, global_size, \
132+
nullptr, 0, nullptr, nullptr)); \
133+
ASSERT_SUCCESS(urQueueFinish(queue)); \
134+
ValidateBuffer(buffer, buffer_size, val); \
109135
}
110-
111-
uint32_t val = 42;
112-
size_t global_size[3] = {4, 4, 4};
113-
size_t global_offset[3] = {0, 0, 0};
114-
size_t buffer_size =
115-
sizeof(val) * global_size[0] * global_size[1] * global_size[2];
116-
size_t n_dimensions = 3;
117-
};
118-
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urEnqueueKernelLaunch3DTest);
119-
120-
TEST_P(urEnqueueKernelLaunch3DTest, Success) {
121-
ur_mem_handle_t buffer = nullptr;
122-
AddBuffer1DArg(buffer_size, &buffer);
123-
AddPodArg(val);
124-
ASSERT_SUCCESS(urEnqueueKernelLaunch(queue, kernel, n_dimensions,
125-
global_offset, global_size, nullptr, 0,
126-
nullptr, nullptr));
127-
ASSERT_SUCCESS(urQueueFinish(queue));
128-
ValidateBuffer(buffer, buffer_size, val);
129-
}
136+
ENQUEUE_KERNEL_LAUNCH_TEST_2D_SIZES(8, 8)
137+
ENQUEUE_KERNEL_LAUNCH_TEST_2D_SIZES(1, 1)
138+
ENQUEUE_KERNEL_LAUNCH_TEST_2D_SIZES(53, 100)
139+
ENQUEUE_KERNEL_LAUNCH_TEST_2D_SIZES(1, 79)
140+
ENQUEUE_KERNEL_LAUNCH_TEST_2D_SIZES(1342, 1)
141+
142+
#define ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(SIZE1, SIZE2, SIZE3) \
143+
struct urEnqueueKernelLaunch3DTest##SIZE1##_##SIZE2##_##SIZE3 \
144+
: uur::urKernelExecutionTest { \
145+
void SetUp() override { \
146+
program_name = "fill_3d"; \
147+
UUR_RETURN_ON_FATAL_FAILURE(urKernelExecutionTest::SetUp()); \
148+
} \
149+
\
150+
uint32_t val = 42; \
151+
size_t global_size[3] = {SIZE1, SIZE2, SIZE3}; \
152+
size_t global_offset[3] = {0, 0, 0}; \
153+
size_t buffer_size = \
154+
sizeof(val) * global_size[0] * global_size[1] * global_size[2]; \
155+
size_t n_dimensions = 3; \
156+
}; \
157+
UUR_INSTANTIATE_DEVICE_TEST_SUITE_P( \
158+
urEnqueueKernelLaunch3DTest##SIZE1##_##SIZE2##_##SIZE3); \
159+
\
160+
TEST_P(urEnqueueKernelLaunch3DTest##SIZE1##_##SIZE2##_##SIZE3, Success) { \
161+
ur_mem_handle_t buffer = nullptr; \
162+
AddBuffer1DArg(buffer_size, &buffer); \
163+
AddPodArg(val); \
164+
ASSERT_SUCCESS(urEnqueueKernelLaunch(queue, kernel, n_dimensions, \
165+
global_offset, global_size, \
166+
nullptr, 0, nullptr, nullptr)); \
167+
ASSERT_SUCCESS(urQueueFinish(queue)); \
168+
ValidateBuffer(buffer, buffer_size, val); \
169+
}
170+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(1, 1, 1)
171+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(37, 1, 1)
172+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(1, 78, 1)
173+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(1, 1, 1025)
174+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(37, 19, 1)
175+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(1, 78, 91)
176+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(18, 1, 1025)
177+
ENQUEUE_KERNEL_LAUNCH_TEST_3D_SIZES(18, 79, 1025)
130178

131179
struct urEnqueueKernelLaunchWithVirtualMemory : uur::urKernelExecutionTest {
132180

0 commit comments

Comments
 (0)