@@ -185,6 +185,51 @@ namespace detail {
185
185
}
186
186
}
187
187
188
+ TEST_CASE (" kernel_dim built-in range mapper behaves as expected" , " [range-mapper]" ) {
189
+ using celerity::access ::kernel_dim;
190
+ {
191
+ range_mapper rm{kernel_dim (0 ), cl::sycl::access ::mode::read , range<1 >{128 }};
192
+ auto sr = rm.map_1 (chunk<1 >{{1 }, {4 }, {7 }});
193
+ CHECK (sr.offset == id<1 >{1 });
194
+ CHECK (sr.range == range<1 >{4 });
195
+ }
196
+ {
197
+ range_mapper rm{kernel_dim (1 ), cl::sycl::access ::mode::read , range<1 >{128 }};
198
+ auto sr = rm.map_1 (chunk<3 >{{1 , 2 , 3 }, {4 , 5 , 6 }, {7 , 8 , 9 }});
199
+ CHECK (sr.offset == id<1 >{2 });
200
+ CHECK (sr.range == range<1 >{5 });
201
+ }
202
+ }
203
+
204
+ TEST_CASE (" components built-in range mapper behaves as expected" , " [range-mapper]" ) {
205
+ using celerity::access ::components;
206
+ using celerity::access ::kernel_dim;
207
+ {
208
+ range_mapper rm{components (all (), all (), all ()), cl::sycl::access ::mode::read , range<3 >{128 , 128 , 128 }};
209
+ auto sr = rm.map_3 (chunk<3 >{{1 , 2 , 3 }, {40 , 50 , 60 }, {70 , 80 , 90 }});
210
+ CHECK (sr.offset == id<3 >{0 , 0 , 0 });
211
+ CHECK (sr.range == range<3 >{128 , 128 , 128 });
212
+ }
213
+ {
214
+ range_mapper rm{components (fixed (subrange<1 >(19 , 31 )), fixed (subrange<1 >(15 , 44 ))), cl::sycl::access ::mode::read , range<2 >{128 , 128 }};
215
+ auto sr = rm.map_2 (chunk<3 >{{1 , 2 , 3 }, {40 , 50 , 60 }, {70 , 80 , 90 }});
216
+ CHECK (sr.offset == id<2 >{19 , 15 });
217
+ CHECK (sr.range == range<2 >{31 , 44 });
218
+ }
219
+ {
220
+ range_mapper rm{components (kernel_dim (2 ), kernel_dim (0 ), kernel_dim (1 )), cl::sycl::access ::mode::read , range<3 >{128 , 128 , 128 }};
221
+ auto sr = rm.map_3 (chunk<3 >{{1 , 2 , 3 }, {40 , 50 , 60 }, {70 , 80 , 90 }});
222
+ CHECK (sr.offset == id<3 >{3 , 1 , 2 });
223
+ CHECK (sr.range == range<3 >{60 , 40 , 50 });
224
+ }
225
+ {
226
+ range_mapper rm{components (kernel_dim (0 ), kernel_dim (0 )), cl::sycl::access ::mode::read , range<2 >{128 , 128 }};
227
+ auto sr = rm.map_2 (chunk<1 >{{1 }, {40 }, {70 }});
228
+ CHECK (sr.offset == id<2 >{1 , 1 });
229
+ CHECK (sr.range == range<2 >{40 , 40 });
230
+ }
231
+ }
232
+
188
233
TEST_CASE (" even_split built-in range mapper behaves as expected" , " [range-mapper]" ) {
189
234
{
190
235
range_mapper rm{even_split<3 >(), cl::sycl::access ::mode::read , range<3 >{128 , 345 , 678 }};
0 commit comments