Skip to content

Commit 41b597c

Browse files
KornevNikitabb-ur
authored andcommitted
Add long long vector width device info support (#21783)
Add support for preferred/native vector width long long. Spec: KhronosGroup/SYCL-Docs#961
1 parent 6846450 commit 41b597c

13 files changed

Lines changed: 114 additions & 6 deletions

File tree

include/unified-runtime/ur_api.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2374,6 +2374,10 @@ typedef enum ur_device_info_t {
23742374
UR_DEVICE_INFO_LUID = 129,
23752375
/// [uint32_t][optional-query] return device Windows node mask
23762376
UR_DEVICE_INFO_NODE_MASK = 130,
2377+
/// [uint32_t] preferred vector width for long long
2378+
UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG = 131,
2379+
/// [uint32_t] native vector width for long long
2380+
UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG = 132,
23772381
/// [::ur_bool_t] Returns true if the device supports the use of
23782382
/// command-buffers.
23792383
UR_DEVICE_INFO_COMMAND_BUFFER_SUPPORT_EXP = 0x1000,

include/unified-runtime/ur_print.hpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3172,6 +3172,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_device_info_t value) {
31723172
case UR_DEVICE_INFO_NODE_MASK:
31733173
os << "UR_DEVICE_INFO_NODE_MASK";
31743174
break;
3175+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG:
3176+
os << "UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG";
3177+
break;
3178+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG:
3179+
os << "UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG";
3180+
break;
31753181
case UR_DEVICE_INFO_COMMAND_BUFFER_SUPPORT_EXP:
31763182
os << "UR_DEVICE_INFO_COMMAND_BUFFER_SUPPORT_EXP";
31773183
break;
@@ -4986,6 +4992,32 @@ inline ur_result_t printTagged(std::ostream &os, const void *ptr,
49864992

49874993
os << ")";
49884994
} break;
4995+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG: {
4996+
const uint32_t *tptr = (const uint32_t *)ptr;
4997+
if (sizeof(uint32_t) > size) {
4998+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(uint32_t)
4999+
<< ")";
5000+
return UR_RESULT_ERROR_INVALID_SIZE;
5001+
}
5002+
os << (const void *)(tptr) << " (";
5003+
5004+
os << *tptr;
5005+
5006+
os << ")";
5007+
} break;
5008+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG: {
5009+
const uint32_t *tptr = (const uint32_t *)ptr;
5010+
if (sizeof(uint32_t) > size) {
5011+
os << "invalid size (is: " << size << ", expected: >=" << sizeof(uint32_t)
5012+
<< ")";
5013+
return UR_RESULT_ERROR_INVALID_SIZE;
5014+
}
5015+
os << (const void *)(tptr) << " (";
5016+
5017+
os << *tptr;
5018+
5019+
os << ")";
5020+
} break;
49895021
case UR_DEVICE_INFO_COMMAND_BUFFER_SUPPORT_EXP: {
49905022
const ur_bool_t *tptr = (const ur_bool_t *)ptr;
49915023
if (sizeof(ur_bool_t) > size) {

scripts/core/device.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,10 @@ etors:
470470
desc: "[uint8_t[]][optional-query] return device Windows LUID"
471471
- name: NODE_MASK
472472
desc: "[uint32_t][optional-query] return device Windows node mask"
473+
- name: PREFERRED_VECTOR_WIDTH_LONG_LONG
474+
desc: "[uint32_t] preferred vector width for long long"
475+
- name: NATIVE_VECTOR_WIDTH_LONG_LONG
476+
desc: "[uint32_t] native vector width for long long"
473477
--- #--------------------------------------------------------------------------
474478
type: function
475479
desc: "Retrieves various information about device"

source/adapters/cuda/device.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
129129
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_INT: {
130130
return ReturnValue(1u);
131131
}
132-
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG: {
132+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG:
133+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG: {
133134
return ReturnValue(1u);
134135
}
135136
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_FLOAT: {
@@ -150,7 +151,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
150151
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT: {
151152
return ReturnValue(1u);
152153
}
153-
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG: {
154+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG:
155+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG: {
154156
return ReturnValue(1u);
155157
}
156158
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT: {

source/adapters/hip/device.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
137137
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_INT: {
138138
return ReturnValue(1u);
139139
}
140-
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG: {
140+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG:
141+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG: {
141142
return ReturnValue(1u);
142143
}
143144
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_FLOAT: {
@@ -158,7 +159,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
158159
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT: {
159160
return ReturnValue(1u);
160161
}
161-
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG: {
162+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG:
163+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG: {
162164
return ReturnValue(1u);
163165
}
164166
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT: {

source/adapters/level_zero/device.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,9 +783,11 @@ ur_result_t urDeviceGetInfo(
783783
return ReturnValue(
784784
Device->ZeDeviceVectorWidthPropertiesExt->preferred_vector_width_int);
785785
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG:
786+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG:
786787
return ReturnValue(
787788
Device->ZeDeviceVectorWidthPropertiesExt->native_vector_width_long);
788789
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG:
790+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG:
789791
return ReturnValue(
790792
Device->ZeDeviceVectorWidthPropertiesExt->preferred_vector_width_long);
791793
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT:

source/adapters/native_cpu/device.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
228228
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_SHORT:
229229
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_INT:
230230
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG:
231+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG:
231232
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_FLOAT:
232233
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_DOUBLE:
233234
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_HALF:
@@ -240,6 +241,7 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
240241
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT:
241242
return ReturnValue(uint32_t{8});
242243
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG:
244+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG:
243245
return ReturnValue(uint32_t{4});
244246
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT:
245247
return ReturnValue(uint32_t{8});

source/adapters/offload/device.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,9 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
107107
olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT;
108108
break;
109109
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG:
110+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG:
110111
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG:
112+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG:
111113
olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG;
112114
break;
113115
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_FLOAT:

source/adapters/opencl/device.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
887887

888888
return UR_RESULT_SUCCESS;
889889
}
890-
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG: {
890+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG:
891+
case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG: {
891892
CL_RETURN_ON_FAILURE(clGetDeviceInfo(hDevice->CLDevice,
892893
CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG,
893894
propSize, pPropValue, pPropSizeRet));
@@ -936,7 +937,8 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
936937

937938
return UR_RESULT_SUCCESS;
938939
}
939-
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG: {
940+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG:
941+
case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG: {
940942
CL_RETURN_ON_FAILURE(clGetDeviceInfo(hDevice->CLDevice,
941943
CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG,
942944
propSize, pPropValue, pPropSizeRet));

test/conformance/device/urDeviceGetInfo.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,23 @@ TEST_P(urDeviceGetInfoTest, SuccessPreferredVectorWidthHalf) {
326326
property_value);
327327
}
328328

329+
TEST_P(urDeviceGetInfoTest, SuccessPreferredVectorWidthLongLong) {
330+
size_t property_size = 0;
331+
const ur_device_info_t property_name =
332+
UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG_LONG;
333+
334+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
335+
urDeviceGetInfo(device, property_name, 0, nullptr, &property_size),
336+
property_name);
337+
ASSERT_EQ(property_size, sizeof(uint32_t));
338+
339+
uint32_t property_value = 0;
340+
ASSERT_QUERY_RETURNS_VALUE(urDeviceGetInfo(device, property_name,
341+
property_size, &property_value,
342+
nullptr),
343+
property_value);
344+
}
345+
329346
TEST_P(urDeviceGetInfoTest, SuccessNativeVectorWidthChar) {
330347
size_t property_size = 0;
331348
const ur_device_info_t property_name =
@@ -444,6 +461,23 @@ TEST_P(urDeviceGetInfoTest, SuccessNativeVectorWidthHalf) {
444461
property_value);
445462
}
446463

464+
TEST_P(urDeviceGetInfoTest, SuccessNativeVectorWidthLongLong) {
465+
size_t property_size = 0;
466+
const ur_device_info_t property_name =
467+
UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG_LONG;
468+
469+
ASSERT_SUCCESS_OR_OPTIONAL_QUERY(
470+
urDeviceGetInfo(device, property_name, 0, nullptr, &property_size),
471+
property_name);
472+
ASSERT_EQ(property_size, sizeof(uint32_t));
473+
474+
uint32_t property_value = 0;
475+
ASSERT_QUERY_RETURNS_VALUE(urDeviceGetInfo(device, property_name,
476+
property_size, &property_value,
477+
nullptr),
478+
property_value);
479+
}
480+
447481
TEST_P(urDeviceGetInfoTest, SuccessMaxClockFrequency) {
448482
size_t property_size = 0;
449483
const ur_device_info_t property_name = UR_DEVICE_INFO_MAX_CLOCK_FREQUENCY;

0 commit comments

Comments
 (0)