Skip to content

Commit 4f60321

Browse files
authored
[Offload] Add ol_dimensions_t and convert ranges from size_t -> uint32_t (#143901)
This is a three element x, y, z size_t vector that can be used any place where a 3D vector is required. This ensures that all vectors across liboffload are the same and don't require any resizing/reordering dances.
1 parent 5c1a021 commit 4f60321

File tree

4 files changed

+22
-21
lines changed

4 files changed

+22
-21
lines changed

offload/liboffload/API/Common.td

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,16 @@ def : Struct {
148148
];
149149
}
150150

151+
def : Struct {
152+
let name = "ol_dimensions_t";
153+
let desc = "A three element vector";
154+
let members = [
155+
StructMember<"uint32_t", "x", "X">,
156+
StructMember<"uint32_t", "y", "Y">,
157+
StructMember<"uint32_t", "z", "Z">,
158+
];
159+
}
160+
151161
def : Function {
152162
let name = "olInit";
153163
let desc = "Perform initialization of the Offload library and plugins";

offload/liboffload/API/Kernel.td

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,8 @@ def : Struct {
2929
let desc = "Size-related arguments for a kernel launch.";
3030
let members = [
3131
StructMember<"size_t", "Dimensions", "Number of work dimensions">,
32-
StructMember<"size_t", "NumGroupsX", "Number of work groups on the X dimension">,
33-
StructMember<"size_t", "NumGroupsY", "Number of work groups on the Y dimension">,
34-
StructMember<"size_t", "NumGroupsZ", "Number of work groups on the Z dimension">,
35-
StructMember<"size_t", "GroupSizeX", "Size of a work group on the X dimension.">,
36-
StructMember<"size_t", "GroupSizeY", "Size of a work group on the Y dimension.">,
37-
StructMember<"size_t", "GroupSizeZ", "Size of a work group on the Z dimension.">,
32+
StructMember<"struct ol_dimensions_t", "NumGroups", "Number of work groups in each dimension">,
33+
StructMember<"struct ol_dimensions_t", "GroupSize", "Size of a work group in each dimension">,
3834
StructMember<"size_t", "DynSharedMemory", "Size of dynamic shared memory in bytes.">
3935
];
4036
}

offload/liboffload/src/OffloadImpl.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -499,12 +499,12 @@ Error olLaunchKernel_impl(ol_queue_handle_t Queue, ol_device_handle_t Device,
499499
auto *QueueImpl = Queue ? Queue->AsyncInfo : nullptr;
500500
AsyncInfoWrapperTy AsyncInfoWrapper(*DeviceImpl, QueueImpl);
501501
KernelArgsTy LaunchArgs{};
502-
LaunchArgs.NumTeams[0] = LaunchSizeArgs->NumGroupsX;
503-
LaunchArgs.NumTeams[1] = LaunchSizeArgs->NumGroupsY;
504-
LaunchArgs.NumTeams[2] = LaunchSizeArgs->NumGroupsZ;
505-
LaunchArgs.ThreadLimit[0] = LaunchSizeArgs->GroupSizeX;
506-
LaunchArgs.ThreadLimit[1] = LaunchSizeArgs->GroupSizeY;
507-
LaunchArgs.ThreadLimit[2] = LaunchSizeArgs->GroupSizeZ;
502+
LaunchArgs.NumTeams[0] = LaunchSizeArgs->NumGroups.x;
503+
LaunchArgs.NumTeams[1] = LaunchSizeArgs->NumGroups.y;
504+
LaunchArgs.NumTeams[2] = LaunchSizeArgs->NumGroups.z;
505+
LaunchArgs.ThreadLimit[0] = LaunchSizeArgs->GroupSize.x;
506+
LaunchArgs.ThreadLimit[1] = LaunchSizeArgs->GroupSize.y;
507+
LaunchArgs.ThreadLimit[2] = LaunchSizeArgs->GroupSize.z;
508508
LaunchArgs.DynCGroupMem = LaunchSizeArgs->DynSharedMemory;
509509

510510
KernelLaunchParamsTy Params;

offload/unittests/OffloadAPI/kernel/olLaunchKernel.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,8 @@ struct LaunchKernelTestBase : OffloadQueueTest {
1919
DeviceBin->getBufferSize(), &Program));
2020
ASSERT_SUCCESS(olGetKernel(Program, kernel, &Kernel));
2121
LaunchArgs.Dimensions = 1;
22-
LaunchArgs.GroupSizeX = 64;
23-
LaunchArgs.GroupSizeY = 1;
24-
LaunchArgs.GroupSizeZ = 1;
25-
26-
LaunchArgs.NumGroupsX = 1;
27-
LaunchArgs.NumGroupsY = 1;
28-
LaunchArgs.NumGroupsZ = 1;
22+
LaunchArgs.GroupSize = {64, 1, 1};
23+
LaunchArgs.NumGroups = {1, 1, 1};
2924

3025
LaunchArgs.DynSharedMemory = 0;
3126
}
@@ -60,7 +55,7 @@ OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olLaunchKernelNoArgsTest);
6055
TEST_P(olLaunchKernelTest, Success) {
6156
void *Mem;
6257
ASSERT_SUCCESS(olMemAlloc(Device, OL_ALLOC_TYPE_MANAGED,
63-
LaunchArgs.GroupSizeX * sizeof(uint32_t), &Mem));
58+
LaunchArgs.GroupSize.x * sizeof(uint32_t), &Mem));
6459
struct {
6560
void *Mem;
6661
} Args{Mem};
@@ -88,7 +83,7 @@ TEST_P(olLaunchKernelNoArgsTest, Success) {
8883
TEST_P(olLaunchKernelTest, SuccessSynchronous) {
8984
void *Mem;
9085
ASSERT_SUCCESS(olMemAlloc(Device, OL_ALLOC_TYPE_MANAGED,
91-
LaunchArgs.GroupSizeX * sizeof(uint32_t), &Mem));
86+
LaunchArgs.GroupSize.x * sizeof(uint32_t), &Mem));
9287

9388
struct {
9489
void *Mem;

0 commit comments

Comments
 (0)