@@ -38,21 +38,19 @@ struct LaunchKernelTestBase : OffloadQueueTest {
38
38
ol_kernel_launch_size_args_t LaunchArgs{};
39
39
};
40
40
41
- struct olLaunchKernelTest : LaunchKernelTestBase {
42
- void SetUp () override {
43
- RETURN_ON_FATAL_FAILURE (LaunchKernelTestBase::SetUpKernel (" foo" ));
44
- }
45
- };
46
- OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernelTest);
47
-
48
- struct olLaunchKernelNoArgsTest : LaunchKernelTestBase {
49
- void SetUp () override {
50
- RETURN_ON_FATAL_FAILURE (LaunchKernelTestBase::SetUpKernel (" noargs" ));
51
- }
52
- };
53
- OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernelNoArgsTest);
54
-
55
- TEST_P (olLaunchKernelTest, Success) {
41
+ #define KERNEL_TEST (NAME, KERNEL ) \
42
+ struct olLaunchKernel ##NAME##Test : LaunchKernelTestBase { \
43
+ void SetUp () override { LaunchKernelTestBase::SetUpKernel (#KERNEL); } \
44
+ }; \
45
+ OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE (olLaunchKernel##NAME##Test);
46
+
47
+ KERNEL_TEST (Foo, foo)
48
+ KERNEL_TEST(NoArgs, noargs)
49
+ KERNEL_TEST(LocalMem, localmem)
50
+ KERNEL_TEST(LocalMemReduction, localmem_reduction)
51
+ KERNEL_TEST(LocalMemStatic, localmem_static)
52
+
53
+ TEST_P(olLaunchKernelFooTest, Success) {
56
54
void *Mem;
57
55
ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
58
56
LaunchArgs.GroupSize .x * sizeof (uint32_t ), &Mem));
@@ -80,7 +78,7 @@ TEST_P(olLaunchKernelNoArgsTest, Success) {
80
78
ASSERT_SUCCESS (olWaitQueue (Queue));
81
79
}
82
80
83
- TEST_P (olLaunchKernelTest , SuccessSynchronous) {
81
+ TEST_P (olLaunchKernelFooTest , SuccessSynchronous) {
84
82
void *Mem;
85
83
ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
86
84
LaunchArgs.GroupSize .x * sizeof (uint32_t ), &Mem));
@@ -99,3 +97,74 @@ TEST_P(olLaunchKernelTest, SuccessSynchronous) {
99
97
100
98
ASSERT_SUCCESS (olMemFree (Mem));
101
99
}
100
+
101
+ TEST_P (olLaunchKernelLocalMemTest, Success) {
102
+ LaunchArgs.NumGroups .x = 4 ;
103
+ LaunchArgs.DynSharedMemory = 64 * sizeof (uint32_t );
104
+
105
+ void *Mem;
106
+ ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
107
+ LaunchArgs.GroupSize .x * LaunchArgs.NumGroups .x *
108
+ sizeof (uint32_t ),
109
+ &Mem));
110
+ struct {
111
+ void *Mem;
112
+ } Args{Mem};
113
+
114
+ ASSERT_SUCCESS (olLaunchKernel (Queue, Device, Kernel, &Args, sizeof (Args),
115
+ &LaunchArgs, nullptr ));
116
+
117
+ ASSERT_SUCCESS (olWaitQueue (Queue));
118
+
119
+ uint32_t *Data = (uint32_t *)Mem;
120
+ for (uint32_t i = 0 ; i < LaunchArgs.GroupSize .x * LaunchArgs.NumGroups .x ; i++)
121
+ ASSERT_EQ (Data[i], (i % 64 ) * 2 );
122
+
123
+ ASSERT_SUCCESS (olMemFree (Mem));
124
+ }
125
+
126
+ TEST_P (olLaunchKernelLocalMemReductionTest, Success) {
127
+ LaunchArgs.NumGroups .x = 4 ;
128
+ LaunchArgs.DynSharedMemory = 64 * sizeof (uint32_t );
129
+
130
+ void *Mem;
131
+ ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
132
+ LaunchArgs.NumGroups .x * sizeof (uint32_t ), &Mem));
133
+ struct {
134
+ void *Mem;
135
+ } Args{Mem};
136
+
137
+ ASSERT_SUCCESS (olLaunchKernel (Queue, Device, Kernel, &Args, sizeof (Args),
138
+ &LaunchArgs, nullptr ));
139
+
140
+ ASSERT_SUCCESS (olWaitQueue (Queue));
141
+
142
+ uint32_t *Data = (uint32_t *)Mem;
143
+ for (uint32_t i = 0 ; i < LaunchArgs.NumGroups .x ; i++)
144
+ ASSERT_EQ (Data[i], 2 * LaunchArgs.GroupSize .x );
145
+
146
+ ASSERT_SUCCESS (olMemFree (Mem));
147
+ }
148
+
149
+ TEST_P (olLaunchKernelLocalMemStaticTest, Success) {
150
+ LaunchArgs.NumGroups .x = 4 ;
151
+ LaunchArgs.DynSharedMemory = 0 ;
152
+
153
+ void *Mem;
154
+ ASSERT_SUCCESS (olMemAlloc (Device, OL_ALLOC_TYPE_MANAGED,
155
+ LaunchArgs.NumGroups .x * sizeof (uint32_t ), &Mem));
156
+ struct {
157
+ void *Mem;
158
+ } Args{Mem};
159
+
160
+ ASSERT_SUCCESS (olLaunchKernel (Queue, Device, Kernel, &Args, sizeof (Args),
161
+ &LaunchArgs, nullptr ));
162
+
163
+ ASSERT_SUCCESS (olWaitQueue (Queue));
164
+
165
+ uint32_t *Data = (uint32_t *)Mem;
166
+ for (uint32_t i = 0 ; i < LaunchArgs.NumGroups .x ; i++)
167
+ ASSERT_EQ (Data[i], 2 * LaunchArgs.GroupSize .x );
168
+
169
+ ASSERT_SUCCESS (olMemFree (Mem));
170
+ }
0 commit comments