12 namespace Acts::Sycl {
14 const uint32_t workGroupSize) {
15 auto q = (numThreads + workGroupSize - 1) / workGroupSize;
16 return cl::sycl::nd_range<1>{cl::sycl::range<1>(q * workGroupSize),
17 cl::sycl::range<1>(workGroupSize)};
21 const uint32_t numThreadsDim1,
22 const uint32_t workGroupSize) {
23 uint32_t wgSizeDim0 = 1;
24 uint32_t wgSizeDim1 = workGroupSize;
26 while (numThreadsDim1 < wgSizeDim1 && 1 < wgSizeDim1 && wgSizeDim1 % 2 == 0) {
30 auto q1 = (numThreadsDim0 + wgSizeDim0 + 1) / wgSizeDim0;
31 auto q2 = (numThreadsDim1 + wgSizeDim1 + 1) / wgSizeDim1;
32 return cl::sycl::nd_range<2>{
33 cl::sycl::range<2>(q1 * wgSizeDim0, q2 * wgSizeDim1),
34 cl::sycl::range<2>(wgSizeDim0, wgSizeDim1)};