@@ -2243,6 +2243,25 @@ void handler::setKernelIsCooperative(bool KernelIsCooperative) {
2243
2243
impl->MKernelIsCooperative = KernelIsCooperative;
2244
2244
}
2245
2245
2246
+ #ifndef __INTEL_PREVIEW_BREAKING_CHANGES
2247
+ void handler::setKernelClusterLaunch (sycl::range<3 > ClusterSize, int Dims) {
2248
+ throwIfGraphAssociated<
2249
+ syclex::detail::UnsupportedGraphFeatures::
2250
+ sycl_ext_oneapi_experimental_cuda_cluster_launch>();
2251
+ impl->MKernelUsesClusterLaunch = true ;
2252
+
2253
+ if (Dims == 1 ) {
2254
+ sycl::range<1 > ClusterSizeTrimmed = {ClusterSize[0 ]};
2255
+ impl->MNDRDesc .setClusterDimensions (ClusterSizeTrimmed);
2256
+ } else if (Dims == 2 ) {
2257
+ sycl::range<2 > ClusterSizeTrimmed = {ClusterSize[0 ], ClusterSize[1 ]};
2258
+ impl->MNDRDesc .setClusterDimensions (ClusterSizeTrimmed);
2259
+ } else if (Dims == 3 ) {
2260
+ impl->MNDRDesc .setClusterDimensions (ClusterSize);
2261
+ }
2262
+ }
2263
+ #endif
2264
+
2246
2265
void handler::setKernelClusterLaunch (sycl::range<3 > ClusterSize) {
2247
2266
throwIfGraphAssociated<
2248
2267
syclex::detail::UnsupportedGraphFeatures::
@@ -2419,6 +2438,56 @@ bool handler::HasAssociatedAccessor(detail::AccessorImplHost *Req,
2419
2438
void handler::setType (sycl::detail::CGType Type) { impl->MCGType = Type; }
2420
2439
sycl::detail::CGType handler::getType () const { return impl->MCGType ; }
2421
2440
2441
+ #ifndef __INTEL_PREVIEW_BREAKING_CHANGES
2442
+ void handler::setNDRangeDescriptorPadded (sycl::range<3 > N,
2443
+ bool SetNumWorkGroups, int Dims) {
2444
+ if (Dims == 1 ) {
2445
+ sycl::range<1 > Range = {N[0 ]};
2446
+ impl->MNDRDesc = NDRDescT{Range, SetNumWorkGroups};
2447
+ } else if (Dims == 2 ) {
2448
+ sycl::range<2 > Range = {N[0 ], N[1 ]};
2449
+ impl->MNDRDesc = NDRDescT{Range, SetNumWorkGroups};
2450
+ } else if (Dims == 3 ) {
2451
+ impl->MNDRDesc = NDRDescT{N, SetNumWorkGroups};
2452
+ }
2453
+ }
2454
+
2455
+ void handler::setNDRangeDescriptorPadded (sycl::range<3 > NumWorkItems,
2456
+ sycl::id<3 > Offset, int Dims) {
2457
+ if (Dims == 1 ) {
2458
+ sycl::range<1 > NumWorkItemsTrimmed = {NumWorkItems[0 ]};
2459
+ sycl::id<1 > OffsetTrimmed = {Offset[0 ]};
2460
+ impl->MNDRDesc = NDRDescT{NumWorkItemsTrimmed, OffsetTrimmed};
2461
+ } else if (Dims == 2 ) {
2462
+ sycl::range<2 > NumWorkItemsTrimmed = {NumWorkItems[0 ], NumWorkItems[1 ]};
2463
+ sycl::id<2 > OffsetTrimmed = {Offset[0 ], Offset[1 ]};
2464
+ impl->MNDRDesc = NDRDescT{NumWorkItemsTrimmed, OffsetTrimmed};
2465
+ } else if (Dims == 3 ) {
2466
+ impl->MNDRDesc = NDRDescT{NumWorkItems, Offset};
2467
+ }
2468
+ }
2469
+
2470
+ void handler::setNDRangeDescriptorPadded (sycl::range<3 > NumWorkItems,
2471
+ sycl::range<3 > LocalSize,
2472
+ sycl::id<3 > Offset, int Dims) {
2473
+ if (Dims == 1 ) {
2474
+ sycl::range<1 > NumWorkItemsTrimmed = {NumWorkItems[0 ]};
2475
+ sycl::range<1 > LocalSizeTrimmed = {LocalSize[0 ]};
2476
+ sycl::id<1 > OffsetTrimmed = {Offset[0 ]};
2477
+ impl->MNDRDesc =
2478
+ NDRDescT{NumWorkItemsTrimmed, LocalSizeTrimmed, OffsetTrimmed};
2479
+ } else if (Dims == 2 ) {
2480
+ sycl::range<2 > NumWorkItemsTrimmed = {NumWorkItems[0 ], NumWorkItems[1 ]};
2481
+ sycl::range<2 > LocalSizeTrimmed = {LocalSize[0 ], LocalSize[1 ]};
2482
+ sycl::id<2 > OffsetTrimmed = {Offset[0 ], Offset[1 ]};
2483
+ impl->MNDRDesc =
2484
+ NDRDescT{NumWorkItemsTrimmed, LocalSizeTrimmed, OffsetTrimmed};
2485
+ } else if (Dims == 3 ) {
2486
+ impl->MNDRDesc = NDRDescT{NumWorkItems, LocalSize, Offset};
2487
+ }
2488
+ }
2489
+ #endif
2490
+
2422
2491
void handler::setNDRangeDescriptor (sycl::range<3 > N, bool SetNumWorkGroups) {
2423
2492
impl->MNDRDesc = NDRDescT{N, SetNumWorkGroups};
2424
2493
}
0 commit comments