Skip to content

Commit a9d9aa3

Browse files
committed
Improvements to align CTS and Spec for Device:
- Rework urDeviceGetInfoTest to move all enums to their own tests instead of a switch case - #2290 - Remove the UR/OpenCL Device enum map function - no point maintaining both a switch case and a separate mapping function - Update some spec wording for consistency - Add missing Device info enums to OpenCL adapater - Add new urDevicePartition test for checking UR_DEVICE_INFO_PARENT_DEVICE - Move UUR_RETURN_ON_FATAL_FAILURE and UUR_ASSERT_SUCCESS_OR_UNSUPPORTED to join similar macros in checks.h - Update spec to say info queries that return char[] are null-terminated - Update UR_DEVICE_INFO_MAX_IMAGE_LINEAR_WIDTH/HEIGHT/PITCH should be uint32_t, matching SYCL RT - Add missing unsupported device enums to HIP adapter Addressed feedback: - Reverted bindless image types back to size_t - Moved ComponentDevices test to a separate PlatformTest derived fixture - Added new ASSERT_GET_INFO macro as a helper to validate simple numerical GetInfo queries - Added new stringPropertyIsValid helper function to validate string queries
1 parent b487b62 commit a9d9aa3

File tree

16 files changed

+3629
-883
lines changed

16 files changed

+3629
-883
lines changed

include/ur_api.h

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,20 +1441,20 @@ UR_APIEXPORT ur_result_t UR_APICALL urPlatformGet(
14411441
///////////////////////////////////////////////////////////////////////////////
14421442
/// @brief Supported platform info
14431443
typedef enum ur_platform_info_t {
1444-
/// [char[]] The string denoting name of the platform. The size of the
1445-
/// info needs to be dynamically queried.
1446-
UR_PLATFORM_INFO_NAME = 1,
1447-
/// [char[]] The string denoting name of the vendor of the platform. The
1444+
/// [char[]] The null-terminated string denoting name of the platform. The
14481445
/// size of the info needs to be dynamically queried.
1446+
UR_PLATFORM_INFO_NAME = 1,
1447+
/// [char[]] The null-terminated string denoting name of the vendor of the
1448+
/// platform. The size of the info needs to be dynamically queried.
14491449
UR_PLATFORM_INFO_VENDOR_NAME = 2,
1450-
/// [char[]] The string denoting the version of the platform. The size of
1451-
/// the info needs to be dynamically queried.
1450+
/// [char[]] The null-terminated string denoting the version of the
1451+
/// platform. The size of the info needs to be dynamically queried.
14521452
UR_PLATFORM_INFO_VERSION = 3,
1453-
/// [char[]] The string denoting extensions supported by the platform. The
1454-
/// size of the info needs to be dynamically queried.
1453+
/// [char[]] The null-terminated string denoting extensions supported by
1454+
/// the platform. The size of the info needs to be dynamically queried.
14551455
UR_PLATFORM_INFO_EXTENSIONS = 4,
1456-
/// [char[]] The string denoting profile of the platform. The size of the
1457-
/// info needs to be dynamically queried.
1456+
/// [char[]] The null-terminated string denoting profile of the platform.
1457+
/// The size of the info needs to be dynamically queried.
14581458
UR_PLATFORM_INFO_PROFILE = 5,
14591459
/// [::ur_platform_backend_t] The backend of the platform. Identifies the
14601460
/// native backend adapter implementing this platform.
@@ -2036,7 +2036,8 @@ typedef enum ur_device_info_t {
20362036
UR_DEVICE_INFO_QUEUE_ON_DEVICE_PROPERTIES = 60,
20372037
/// [::ur_queue_flags_t] host queue property bit-field
20382038
UR_DEVICE_INFO_QUEUE_ON_HOST_PROPERTIES = 61,
2039-
/// [char[]] a semi-colon separated list of built-in kernels
2039+
/// [char[]] a null-terminated semi-colon separated list of built-in
2040+
/// kernels
20402041
UR_DEVICE_INFO_BUILT_IN_KERNELS = 62,
20412042
/// [::ur_platform_handle_t] the platform associated with the device
20422043
UR_DEVICE_INFO_PLATFORM = 63,
@@ -2045,21 +2046,22 @@ typedef enum ur_device_info_t {
20452046
/// It is unsuitable for general use in applications. This feature is
20462047
/// provided for identifying memory leaks.
20472048
UR_DEVICE_INFO_REFERENCE_COUNT = 64,
2048-
/// [char[]] IL version
2049+
/// [char[]] null-terminated IL version
20492050
UR_DEVICE_INFO_IL_VERSION = 65,
2050-
/// [char[]] Device name
2051+
/// [char[]] null-terminated device name
20512052
UR_DEVICE_INFO_NAME = 66,
2052-
/// [char[]] Device vendor
2053+
/// [char[]] null-terminated device vendor
20532054
UR_DEVICE_INFO_VENDOR = 67,
2054-
/// [char[]] Driver version
2055+
/// [char[]] null-terminated driver version
20552056
UR_DEVICE_INFO_DRIVER_VERSION = 68,
2056-
/// [char[]] Device profile
2057+
/// [char[]] null-terminated device profile
20572058
UR_DEVICE_INFO_PROFILE = 69,
2058-
/// [char[]] Device version
2059+
/// [char[]] null-terminated device version
20592060
UR_DEVICE_INFO_VERSION = 70,
2060-
/// [char[]] Version of backend runtime
2061+
/// [char[]] null-terminated version of backend runtime
20612062
UR_DEVICE_INFO_BACKEND_RUNTIME_VERSION = 71,
2062-
/// [char[]] Return a space separated list of extension names
2063+
/// [char[]] Return a null-terminated space separated list of extension
2064+
/// names
20632065
UR_DEVICE_INFO_EXTENSIONS = 72,
20642066
/// [size_t] Maximum size in bytes of internal printf buffer
20652067
UR_DEVICE_INFO_PRINTF_BUFFER_SIZE = 73,
@@ -2079,9 +2081,8 @@ typedef enum ur_device_info_t {
20792081
/// If the device does not support any affinity domains, then 0 will be
20802082
/// returned.
20812083
UR_DEVICE_INFO_PARTITION_AFFINITY_DOMAIN = 78,
2082-
/// [::ur_device_partition_property_t[]] return an array of
2083-
/// ::ur_device_partition_property_t for properties specified in
2084-
/// ::urDevicePartition
2084+
/// [::ur_device_partition_property_t[]] returns an array of properties
2085+
/// specified in ::urDevicePartition
20852086
UR_DEVICE_INFO_PARTITION_TYPE = 79,
20862087
/// [uint32_t] max number of sub groups
20872088
UR_DEVICE_INFO_MAX_NUM_SUB_GROUPS = 80,
@@ -2106,7 +2107,7 @@ typedef enum ur_device_info_t {
21062107
UR_DEVICE_INFO_USM_SYSTEM_SHARED_SUPPORT = 87,
21072108
/// [uint8_t[]][optional-query] return device UUID
21082109
UR_DEVICE_INFO_UUID = 88,
2109-
/// [char[]][optional-query] return device PCI address
2110+
/// [char[]][optional-query] return null-terminated device PCI address
21102111
UR_DEVICE_INFO_PCI_ADDRESS = 89,
21112112
/// [uint32_t][optional-query] return Intel GPU EU count
21122113
UR_DEVICE_INFO_GPU_EU_COUNT = 90,
@@ -2252,20 +2253,20 @@ typedef enum ur_device_info_t {
22522253
/// [::ur_bool_t] returns true if the device supports sampling cubemapped
22532254
/// images across face boundaries
22542255
UR_DEVICE_INFO_CUBEMAP_SEAMLESS_FILTERING_SUPPORT_EXP = 0x2011,
2255-
/// [::ur_bool_t] returns true if the device is capable of fetching USM
2256-
/// backed 1D sampled image data.
2256+
/// [::ur_bool_t] returns true if the device supports fetching USM backed
2257+
/// 1D sampled image data.
22572258
UR_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_1D_USM_EXP = 0x2012,
2258-
/// [::ur_bool_t] returns true if the device is capable of fetching
2259-
/// non-USM backed 1D sampled image data.
2259+
/// [::ur_bool_t] returns true if the device supports fetching non-USM
2260+
/// backed 1D sampled image data.
22602261
UR_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_1D_EXP = 0x2013,
2261-
/// [::ur_bool_t] returns true if the device is capable of fetching USM
2262-
/// backed 2D sampled image data.
2262+
/// [::ur_bool_t] returns true if the device supports fetching USM backed
2263+
/// 2D sampled image data.
22632264
UR_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_2D_USM_EXP = 0x2014,
2264-
/// [::ur_bool_t] returns true if the device is capable of fetching
2265-
/// non-USM backed 2D sampled image data.
2265+
/// [::ur_bool_t] returns true if the device supports fetching non-USM
2266+
/// backed 2D sampled image data.
22662267
UR_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_2D_EXP = 0x2015,
2267-
/// [::ur_bool_t] returns true if the device is capable of fetching
2268-
/// non-USM backed 3D sampled image data.
2268+
/// [::ur_bool_t] returns true if the device supports fetching non-USM
2269+
/// backed 3D sampled image data.
22692270
UR_DEVICE_INFO_BINDLESS_SAMPLED_IMAGE_FETCH_3D_EXP = 0x2017,
22702271
/// [::ur_bool_t] returns true if the device supports timestamp recording
22712272
UR_DEVICE_INFO_TIMESTAMP_RECORDING_SUPPORT_EXP = 0x2018,
@@ -2275,11 +2276,11 @@ typedef enum ur_device_info_t {
22752276
/// [::ur_bool_t] returns true if the device supports unique addressing
22762277
/// per dimension.
22772278
UR_DEVICE_INFO_BINDLESS_UNIQUE_ADDRESSING_PER_DIM_EXP = 0x201A,
2278-
/// [::ur_bool_t] returns true if the device is capable of sampling USM
2279-
/// backed 1D sampled image data.
2279+
/// [::ur_bool_t] returns true if the device supports sampling USM backed
2280+
/// 1D sampled image data.
22802281
UR_DEVICE_INFO_BINDLESS_SAMPLE_1D_USM_EXP = 0x201B,
2281-
/// [::ur_bool_t] returns true if the device is capable of sampling USM
2282-
/// backed 2D sampled image data.
2282+
/// [::ur_bool_t] returns true if the device supports sampling USM backed
2283+
/// 2D sampled image data.
22832284
UR_DEVICE_INFO_BINDLESS_SAMPLE_2D_USM_EXP = 0x201C,
22842285
/// [::ur_bool_t] returns true if the device supports enqueueing of native
22852286
/// work
@@ -5571,12 +5572,12 @@ typedef enum ur_program_info_t {
55715572
UR_PROGRAM_INFO_DEVICES = 3,
55725573
/// [char[]] Return program IL if the program was created with
55735574
/// ::urProgramCreateWithIL, otherwise return size will be set to 0 and
5574-
/// nothing will be returned.
5575+
/// nothing will be returned. This is not null-terminated.
55755576
UR_PROGRAM_INFO_IL = 4,
55765577
/// [size_t[]] Return program binary sizes for each device.
55775578
UR_PROGRAM_INFO_BINARY_SIZES = 5,
55785579
/// [unsigned char[]] Return program binaries for all devices for this
5579-
/// Program.
5580+
/// Program. These are not null-terminated.
55805581
UR_PROGRAM_INFO_BINARIES = 6,
55815582
/// [size_t][optional-query] Number of kernels in Program, return type
55825583
/// size_t.

scripts/core/device.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ etors:
320320
- name: QUEUE_ON_HOST_PROPERTIES
321321
desc: "[$x_queue_flags_t] host queue property bit-field"
322322
- name: BUILT_IN_KERNELS
323-
desc: "[char[]] a semi-colon separated list of built-in kernels"
323+
desc: "[char[]] a null-terminated semi-colon separated list of built-in kernels"
324324
- name: PLATFORM
325325
desc: "[$x_platform_handle_t] the platform associated with the device"
326326
- name: REFERENCE_COUNT
@@ -329,21 +329,21 @@ etors:
329329
The reference count returned should be considered immediately stale.
330330
It is unsuitable for general use in applications. This feature is provided for identifying memory leaks.
331331
- name: IL_VERSION
332-
desc: "[char[]] IL version"
332+
desc: "[char[]] null-terminated IL version"
333333
- name: NAME
334-
desc: "[char[]] Device name"
334+
desc: "[char[]] null-terminated device name"
335335
- name: VENDOR
336-
desc: "[char[]] Device vendor"
336+
desc: "[char[]] null-terminated device vendor"
337337
- name: DRIVER_VERSION
338-
desc: "[char[]] Driver version"
338+
desc: "[char[]] null-terminated driver version"
339339
- name: PROFILE
340-
desc: "[char[]] Device profile"
340+
desc: "[char[]] null-terminated device profile"
341341
- name: VERSION
342-
desc: "[char[]] Device version"
342+
desc: "[char[]] null-terminated device version"
343343
- name: BACKEND_RUNTIME_VERSION
344-
desc: "[char[]] Version of backend runtime"
344+
desc: "[char[]] null-terminated version of backend runtime"
345345
- name: EXTENSIONS
346-
desc: "[char[]] Return a space separated list of extension names"
346+
desc: "[char[]] Return a null-terminated space separated list of extension names"
347347
- name: PRINTF_BUFFER_SIZE
348348
desc: "[size_t] Maximum size in bytes of internal printf buffer"
349349
- name: PREFERRED_INTEROP_USER_SYNC
@@ -359,7 +359,7 @@ etors:
359359
[$x_device_affinity_domain_flags_t] Returns a bit-field of the supported affinity domains for partitioning.
360360
If the device does not support any affinity domains, then 0 will be returned.
361361
- name: PARTITION_TYPE
362-
desc: "[$x_device_partition_property_t[]] return an array of $x_device_partition_property_t for properties specified in $xDevicePartition"
362+
desc: "[$x_device_partition_property_t[]] returns an array of properties specified in $xDevicePartition"
363363
- name: MAX_NUM_SUB_GROUPS
364364
desc: "[uint32_t] max number of sub groups"
365365
- name: SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS
@@ -379,7 +379,7 @@ etors:
379379
- name: UUID
380380
desc: "[uint8_t[]][optional-query] return device UUID"
381381
- name: PCI_ADDRESS
382-
desc: "[char[]][optional-query] return device PCI address"
382+
desc: "[char[]][optional-query] return null-terminated device PCI address"
383383
- name: GPU_EU_COUNT
384384
desc: "[uint32_t][optional-query] return Intel GPU EU count"
385385
- name: GPU_EU_SIMD_WIDTH

scripts/core/exp-bindless-images.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,19 @@ etors:
8888
desc: "[$x_bool_t] returns true if the device supports sampling cubemapped images across face boundaries"
8989
- name: BINDLESS_SAMPLED_IMAGE_FETCH_1D_USM_EXP
9090
value: "0x2012"
91-
desc: "[$x_bool_t] returns true if the device is capable of fetching USM backed 1D sampled image data."
91+
desc: "[$x_bool_t] returns true if the device supports fetching USM backed 1D sampled image data."
9292
- name: BINDLESS_SAMPLED_IMAGE_FETCH_1D_EXP
9393
value: "0x2013"
94-
desc: "[$x_bool_t] returns true if the device is capable of fetching non-USM backed 1D sampled image data."
94+
desc: "[$x_bool_t] returns true if the device supports fetching non-USM backed 1D sampled image data."
9595
- name: BINDLESS_SAMPLED_IMAGE_FETCH_2D_USM_EXP
9696
value: "0x2014"
97-
desc: "[$x_bool_t] returns true if the device is capable of fetching USM backed 2D sampled image data."
97+
desc: "[$x_bool_t] returns true if the device supports fetching USM backed 2D sampled image data."
9898
- name: BINDLESS_SAMPLED_IMAGE_FETCH_2D_EXP
9999
value: "0x2015"
100-
desc: "[$x_bool_t] returns true if the device is capable of fetching non-USM backed 2D sampled image data."
100+
desc: "[$x_bool_t] returns true if the device supports fetching non-USM backed 2D sampled image data."
101101
- name: BINDLESS_SAMPLED_IMAGE_FETCH_3D_EXP
102102
value: "0x2017"
103-
desc: "[$x_bool_t] returns true if the device is capable of fetching non-USM backed 3D sampled image data."
103+
desc: "[$x_bool_t] returns true if the device supports fetching non-USM backed 3D sampled image data."
104104
- name: IMAGE_ARRAY_SUPPORT_EXP
105105
value: "0x2019"
106106
desc: "[$x_bool_t] returns true if the device supports allocating and accessing image array resources."
@@ -109,10 +109,10 @@ etors:
109109
desc: "[$x_bool_t] returns true if the device supports unique addressing per dimension."
110110
- name: BINDLESS_SAMPLE_1D_USM_EXP
111111
value: "0x201B"
112-
desc: "[$x_bool_t] returns true if the device is capable of sampling USM backed 1D sampled image data."
112+
desc: "[$x_bool_t] returns true if the device supports sampling USM backed 1D sampled image data."
113113
- name: BINDLESS_SAMPLE_2D_USM_EXP
114114
value: "0x201C"
115-
desc: "[$x_bool_t] returns true if the device is capable of sampling USM backed 2D sampled image data."
115+
desc: "[$x_bool_t] returns true if the device supports sampling USM backed 2D sampled image data."
116116
--- #--------------------------------------------------------------------------
117117
type: enum
118118
extend: true

scripts/core/platform.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,20 +59,20 @@ typed_etors: True
5959
etors:
6060
- name: NAME
6161
value: "1"
62-
desc: "[char[]] The string denoting name of the platform. The size of the info needs to be dynamically queried."
62+
desc: "[char[]] The null-terminated string denoting name of the platform. The size of the info needs to be dynamically queried."
6363
- name: VENDOR_NAME
6464
value: "2"
65-
desc: "[char[]] The string denoting name of the vendor of the platform. The size of the info needs to be dynamically queried."
65+
desc: "[char[]] The null-terminated string denoting name of the vendor of the platform. The size of the info needs to be dynamically queried."
6666
- name: VERSION
6767
value: "3"
68-
desc: "[char[]] The string denoting the version of the platform. The size of the info needs to be dynamically queried."
68+
desc: "[char[]] The null-terminated string denoting the version of the platform. The size of the info needs to be dynamically queried."
6969
- name: EXTENSIONS
7070
value: "4"
71-
desc: "[char[]] The string denoting extensions supported by the platform. The size of the info needs to be dynamically queried."
71+
desc: "[char[]] The null-terminated string denoting extensions supported by the platform. The size of the info needs to be dynamically queried."
7272
todo: "document extensions names and their meaning"
7373
- name: PROFILE
7474
value: "5"
75-
desc: "[char[]] The string denoting profile of the platform. The size of the info needs to be dynamically queried."
75+
desc: "[char[]] The null-terminated string denoting profile of the platform. The size of the info needs to be dynamically queried."
7676
todo: "currently always return FULL_PROFILE, deprecate?"
7777
- name: BACKEND
7878
value: "6"

scripts/core/program.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,11 @@ etors:
381381
[$x_device_handle_t[]] Return list of devices associated with a program.
382382
This is either the list of devices associated with the context or a subset of those devices when the program is created using $xProgramCreateWithBinary.
383383
- name: IL
384-
desc: "[char[]] Return program IL if the program was created with $xProgramCreateWithIL, otherwise return size will be set to 0 and nothing will be returned."
384+
desc: "[char[]] Return program IL if the program was created with $xProgramCreateWithIL, otherwise return size will be set to 0 and nothing will be returned. This is not null-terminated."
385385
- name: BINARY_SIZES
386386
desc: "[size_t[]] Return program binary sizes for each device."
387387
- name: BINARIES
388-
desc: "[unsigned char[]] Return program binaries for all devices for this Program."
388+
desc: "[unsigned char[]] Return program binaries for all devices for this Program. These are not null-terminated."
389389
- name: NUM_KERNELS
390390
desc: "[size_t][optional-query] Number of kernels in Program, return type size_t."
391391
- name: KERNEL_NAMES

source/adapters/cuda/device.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -286,14 +286,14 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
286286
case UR_DEVICE_INFO_IMAGE_SUPPORTED: {
287287
bool Enabled = false;
288288

289-
if (std::getenv("SYCL_PI_CUDA_ENABLE_IMAGE_SUPPORT") != nullptr ||
290-
std::getenv("UR_CUDA_ENABLE_IMAGE_SUPPORT") != nullptr) {
289+
if (std::getenv("SYCL_PI_CUDA_ENABLE_IMAGE_SUPPORTED") != nullptr ||
290+
std::getenv("UR_CUDA_ENABLE_IMAGE_SUPPORTED") != nullptr) {
291291
Enabled = true;
292292
} else {
293293
logger::always(
294294
"Images are not fully supported by the CUDA BE, their support is "
295295
"disabled by default. Their partial support can be activated by "
296-
"setting UR_CUDA_ENABLE_IMAGE_SUPPORT environment variable at "
296+
"setting UR_CUDA_ENABLE_IMAGE_SUPPORTED environment variable at "
297297
"runtime.");
298298
}
299299

@@ -862,21 +862,21 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
862862
UR_CHECK_ERROR(cuDeviceGetAttribute(
863863
&tex_max_linear_width,
864864
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH, hDevice->get()));
865-
return ReturnValue(tex_max_linear_width);
865+
return ReturnValue(static_cast<size_t>(tex_max_linear_width));
866866
}
867867
case UR_DEVICE_INFO_MAX_IMAGE_LINEAR_HEIGHT_EXP: {
868868
int32_t tex_max_linear_height = 0;
869869
UR_CHECK_ERROR(cuDeviceGetAttribute(
870870
&tex_max_linear_height,
871871
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT, hDevice->get()));
872-
return ReturnValue(tex_max_linear_height);
872+
return ReturnValue(static_cast<size_t>(tex_max_linear_height));
873873
}
874874
case UR_DEVICE_INFO_MAX_IMAGE_LINEAR_PITCH_EXP: {
875875
int32_t tex_max_linear_pitch = 0;
876876
UR_CHECK_ERROR(cuDeviceGetAttribute(
877877
&tex_max_linear_pitch,
878878
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH, hDevice->get()));
879-
return ReturnValue(tex_max_linear_pitch);
879+
return ReturnValue(static_cast<size_t>(tex_max_linear_pitch));
880880
}
881881
case UR_DEVICE_INFO_MIPMAP_SUPPORT_EXP: {
882882
// CUDA supports mipmaps.

0 commit comments

Comments
 (0)