99
1010#include " ur_api.h"
1111#include < cstdarg>
12+ #include < sycl/detail/cuda_definitions.hpp>
1213#include < sycl/detail/pi.h>
1314#include < ur/ur.hpp>
1415
@@ -18,38 +19,128 @@ static pi_result ur2piResult(ur_result_t urResult) {
1819 return PI_SUCCESS;
1920
2021 switch (urResult) {
21- case UR_RESULT_ERROR_UNKNOWN:
22- return PI_ERROR_UNKNOWN;
23- case UR_RESULT_ERROR_DEVICE_LOST:
24- return PI_ERROR_DEVICE_NOT_FOUND;
2522 case UR_RESULT_ERROR_INVALID_OPERATION:
2623 return PI_ERROR_INVALID_OPERATION;
27- case UR_RESULT_ERROR_INVALID_PLATFORM :
28- return PI_ERROR_INVALID_PLATFORM ;
29- case UR_RESULT_ERROR_INVALID_ARGUMENT :
30- return PI_ERROR_INVALID_ARG_VALUE ;
24+ case UR_RESULT_ERROR_INVALID_QUEUE_PROPERTIES :
25+ return PI_ERROR_INVALID_QUEUE_PROPERTIES ;
26+ case UR_RESULT_ERROR_INVALID_QUEUE :
27+ return PI_ERROR_INVALID_QUEUE ;
3128 case UR_RESULT_ERROR_INVALID_VALUE:
3229 return PI_ERROR_INVALID_VALUE;
33- case UR_RESULT_ERROR_INVALID_EVENT:
34- return PI_ERROR_INVALID_EVENT;
30+ case UR_RESULT_ERROR_INVALID_CONTEXT:
31+ return PI_ERROR_INVALID_CONTEXT;
32+ case UR_RESULT_ERROR_INVALID_PLATFORM:
33+ return PI_ERROR_INVALID_PLATFORM;
3534 case UR_RESULT_ERROR_INVALID_BINARY:
3635 return PI_ERROR_INVALID_BINARY;
37- case UR_RESULT_ERROR_INVALID_KERNEL_NAME:
38- return PI_ERROR_INVALID_KERNEL_NAME;
39- case UR_RESULT_ERROR_INVALID_FUNCTION_NAME:
40- return PI_ERROR_BUILD_PROGRAM_FAILURE;
36+ case UR_RESULT_ERROR_INVALID_PROGRAM:
37+ return PI_ERROR_INVALID_PROGRAM;
38+ case UR_RESULT_ERROR_INVALID_SAMPLER:
39+ return PI_ERROR_INVALID_SAMPLER;
40+ case UR_RESULT_ERROR_INVALID_MEM_OBJECT:
41+ return PI_ERROR_INVALID_MEM_OBJECT;
42+ case UR_RESULT_ERROR_INVALID_EVENT:
43+ return PI_ERROR_INVALID_EVENT;
44+ case UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST:
45+ return PI_ERROR_INVALID_EVENT_WAIT_LIST;
46+ case UR_RESULT_ERROR_MISALIGNED_SUB_BUFFER_OFFSET:
47+ return PI_ERROR_MISALIGNED_SUB_BUFFER_OFFSET;
4148 case UR_RESULT_ERROR_INVALID_WORK_GROUP_SIZE:
4249 return PI_ERROR_INVALID_WORK_GROUP_SIZE;
43- case UR_RESULT_ERROR_OUT_OF_DEVICE_MEMORY:
44- return PI_ERROR_OUT_OF_RESOURCES;
50+ case UR_RESULT_ERROR_COMPILER_NOT_AVAILABLE:
51+ return PI_ERROR_COMPILER_NOT_AVAILABLE;
52+ case UR_RESULT_ERROR_PROFILING_INFO_NOT_AVAILABLE:
53+ return PI_ERROR_PROFILING_INFO_NOT_AVAILABLE;
54+ case UR_RESULT_ERROR_DEVICE_NOT_FOUND:
55+ return PI_ERROR_DEVICE_NOT_FOUND;
56+ case UR_RESULT_ERROR_INVALID_DEVICE:
57+ return PI_ERROR_INVALID_DEVICE;
58+ case UR_RESULT_ERROR_DEVICE_REQUIRES_RESET:
59+ case UR_RESULT_ERROR_DEVICE_LOST:
60+ return PI_ERROR_DEVICE_NOT_AVAILABLE;
61+ case UR_RESULT_ERROR_DEVICE_PARTITION_FAILED:
62+ return PI_ERROR_DEVICE_PARTITION_FAILED;
63+ case UR_RESULT_ERROR_INVALID_DEVICE_PARTITION_COUNT:
64+ return PI_ERROR_INVALID_DEVICE_PARTITION_COUNT;
65+ case UR_RESULT_ERROR_INVALID_WORK_ITEM_SIZE:
66+ return PI_ERROR_INVALID_WORK_ITEM_SIZE;
67+ case UR_RESULT_ERROR_INVALID_WORK_DIMENSION:
68+ return PI_ERROR_INVALID_WORK_DIMENSION;
69+ case UR_RESULT_ERROR_INVALID_KERNEL_ARGS:
70+ return PI_ERROR_INVALID_KERNEL_ARGS;
71+ case UR_RESULT_ERROR_INVALID_KERNEL:
72+ return PI_ERROR_INVALID_KERNEL;
73+ case UR_RESULT_ERROR_INVALID_KERNEL_NAME:
74+ return PI_ERROR_INVALID_KERNEL_NAME;
75+ case UR_RESULT_ERROR_INVALID_KERNEL_ARGUMENT_INDEX:
76+ return PI_ERROR_INVALID_ARG_INDEX;
77+ case UR_RESULT_ERROR_INVALID_KERNEL_ARGUMENT_SIZE:
78+ return PI_ERROR_INVALID_ARG_SIZE;
79+ case UR_RESULT_ERROR_INVALID_KERNEL_ATTRIBUTE_VALUE:
80+ return PI_ERROR_INVALID_VALUE;
81+ case UR_RESULT_ERROR_INVALID_IMAGE_SIZE:
82+ return PI_ERROR_INVALID_IMAGE_SIZE;
83+ case UR_RESULT_ERROR_INVALID_IMAGE_FORMAT_DESCRIPTOR:
84+ return PI_ERROR_INVALID_IMAGE_FORMAT_DESCRIPTOR;
85+ case UR_RESULT_ERROR_IMAGE_FORMAT_NOT_SUPPORTED:
86+ return PI_ERROR_IMAGE_FORMAT_NOT_SUPPORTED;
87+ case UR_RESULT_ERROR_MEM_OBJECT_ALLOCATION_FAILURE:
88+ return PI_ERROR_MEM_OBJECT_ALLOCATION_FAILURE;
89+ case UR_RESULT_ERROR_INVALID_PROGRAM_EXECUTABLE:
90+ return PI_ERROR_INVALID_PROGRAM_EXECUTABLE;
91+ case UR_RESULT_ERROR_UNINITIALIZED:
92+ return PI_ERROR_UNINITIALIZED;
4593 case UR_RESULT_ERROR_OUT_OF_HOST_MEMORY:
4694 return PI_ERROR_OUT_OF_HOST_MEMORY;
95+ case UR_RESULT_ERROR_OUT_OF_DEVICE_MEMORY:
96+ case UR_RESULT_ERROR_OUT_OF_RESOURCES:
97+ return PI_ERROR_OUT_OF_RESOURCES;
4798 case UR_RESULT_ERROR_PROGRAM_BUILD_FAILURE:
4899 return PI_ERROR_BUILD_PROGRAM_FAILURE;
49- case UR_RESULT_ERROR_UNINITIALIZED:
50- return PI_ERROR_UNINITIALIZED;
100+ case UR_RESULT_ERROR_PROGRAM_LINK_FAILURE:
101+ return PI_ERROR_LINK_PROGRAM_FAILURE;
102+ case UR_RESULT_ERROR_UNSUPPORTED_VERSION:
103+ case UR_RESULT_ERROR_UNSUPPORTED_FEATURE:
104+ case UR_RESULT_ERROR_INVALID_ARGUMENT:
105+ case UR_RESULT_ERROR_INVALID_NULL_HANDLE:
106+ case UR_RESULT_ERROR_HANDLE_OBJECT_IN_USE:
107+ case UR_RESULT_ERROR_INVALID_NULL_POINTER:
108+ return PI_ERROR_INVALID_VALUE;
109+ case UR_RESULT_ERROR_INVALID_SIZE:
110+ case UR_RESULT_ERROR_UNSUPPORTED_SIZE:
111+ return PI_ERROR_INVALID_BUFFER_SIZE;
112+ case UR_RESULT_ERROR_UNSUPPORTED_ALIGNMENT:
113+ return PI_ERROR_INVALID_VALUE;
114+ case UR_RESULT_ERROR_INVALID_SYNCHRONIZATION_OBJECT:
115+ case UR_RESULT_ERROR_INVALID_ENUMERATION:
116+ case UR_RESULT_ERROR_UNSUPPORTED_ENUMERATION:
117+ return PI_ERROR_INVALID_VALUE;
118+ case UR_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMAT:
119+ return PI_ERROR_IMAGE_FORMAT_NOT_SUPPORTED;
120+ case UR_RESULT_ERROR_INVALID_NATIVE_BINARY:
121+ return PI_ERROR_INVALID_BINARY;
122+ case UR_RESULT_ERROR_INVALID_GLOBAL_NAME:
123+ return PI_ERROR_INVALID_VALUE;
124+ case UR_RESULT_ERROR_INVALID_FUNCTION_NAME:
125+ return PI_ERROR_FUNCTION_ADDRESS_IS_NOT_AVAILABLE;
126+ case UR_RESULT_ERROR_INVALID_GROUP_SIZE_DIMENSION:
127+ return PI_ERROR_INVALID_WORK_DIMENSION;
128+ case UR_RESULT_ERROR_INVALID_GLOBAL_WIDTH_DIMENSION:
129+ return PI_ERROR_INVALID_VALUE;
130+
131+ case UR_RESULT_ERROR_PROGRAM_UNLINKED:
132+ return PI_ERROR_INVALID_PROGRAM_EXECUTABLE;
133+ case UR_RESULT_ERROR_OVERLAPPING_REGIONS:
134+ return PI_ERROR_MEM_COPY_OVERLAP;
135+ case UR_RESULT_ERROR_INVALID_HOST_PTR:
136+ return PI_ERROR_INVALID_HOST_PTR;
137+ case UR_RESULT_ERROR_INVALID_USM_SIZE:
138+ return PI_ERROR_INVALID_BUFFER_SIZE;
139+ case UR_RESULT_ERROR_OBJECT_ALLOCATION_FAILURE:
140+ return PI_ERROR_OUT_OF_RESOURCES;
51141 case UR_RESULT_ERROR_ADAPTER_SPECIFIC:
52142 return PI_ERROR_PLUGIN_SPECIFIC_ERROR;
143+ case UR_RESULT_ERROR_UNKNOWN:
53144 default :
54145 return PI_ERROR_UNKNOWN;
55146 };
@@ -253,6 +344,10 @@ inline pi_result ur2piDeviceInfoValue(ur_device_info_t ParamName,
253344 return PI_QUEUE_FLAG_ON_DEVICE;
254345 case UR_QUEUE_FLAG_ON_DEVICE_DEFAULT:
255346 return PI_QUEUE_FLAG_ON_DEVICE_DEFAULT;
347+ case UR_QUEUE_FLAG_SYNC_WITH_DEFAULT_STREAM:
348+ return static_cast <uint64_t >(__SYCL_PI_CUDA_SYNC_WITH_DEFAULT);
349+ case UR_QUEUE_FLAG_USE_DEFAULT_STREAM:
350+ return static_cast <uint64_t >(__SYCL_PI_CUDA_USE_DEFAULT_STREAM);
256351 default :
257352 die (" UR_DEVICE_INFO_QUEUE_PROPERTIES: unhandled value" );
258353 }
@@ -1014,7 +1109,7 @@ inline pi_result piDeviceGetInfo(pi_device Device, pi_device_info ParamName,
10141109 break ;
10151110 }
10161111 case PI_EXT_CODEPLAY_DEVICE_INFO_MAX_REGISTERS_PER_WORK_GROUP: {
1017- InfoType = UR_EXT_DEVICE_INFO_MAX_REGISTERS_PER_WORK_GROUP ;
1112+ InfoType = UR_DEVICE_INFO_MAX_REGISTERS_PER_WORK_GROUP ;
10181113 break ;
10191114 }
10201115 default :
@@ -1380,6 +1475,10 @@ inline pi_result piextQueueCreate(pi_context Context, pi_device Device,
13801475 UrProperties.flags |= UR_QUEUE_FLAG_PRIORITY_LOW;
13811476 if (Properties[1 ] & PI_EXT_ONEAPI_QUEUE_FLAG_PRIORITY_HIGH)
13821477 UrProperties.flags |= UR_QUEUE_FLAG_PRIORITY_HIGH;
1478+ if (Properties[1 ] & __SYCL_PI_CUDA_SYNC_WITH_DEFAULT)
1479+ UrProperties.flags |= UR_QUEUE_FLAG_SYNC_WITH_DEFAULT_STREAM;
1480+ if (Properties[1 ] & __SYCL_PI_CUDA_USE_DEFAULT_STREAM)
1481+ UrProperties.flags |= UR_QUEUE_FLAG_USE_DEFAULT_STREAM;
13831482
13841483 ur_queue_index_properties_t IndexProperties{};
13851484 IndexProperties.stype = UR_STRUCTURE_TYPE_QUEUE_INDEX_PROPERTIES;
@@ -1943,15 +2042,16 @@ inline pi_result piKernelSetArg(pi_kernel Kernel, pi_uint32 ArgIndex,
19432042
19442043 ur_kernel_handle_t UrKernel = reinterpret_cast <ur_kernel_handle_t >(Kernel);
19452044
1946- HANDLE_ERRORS (urKernelSetArgValue (UrKernel, ArgIndex, ArgSize, ArgValue));
2045+ HANDLE_ERRORS (
2046+ urKernelSetArgValue (UrKernel, ArgIndex, ArgSize, nullptr , ArgValue));
19472047 return PI_SUCCESS;
19482048}
19492049
19502050inline pi_result piKernelSetArgPointer (pi_kernel Kernel, pi_uint32 ArgIndex,
19512051 size_t ArgSize, const void *ArgValue) {
19522052 std::ignore = ArgSize;
19532053 ur_kernel_handle_t UrKernel = reinterpret_cast <ur_kernel_handle_t >(Kernel);
1954- HANDLE_ERRORS (urKernelSetArgPointer (UrKernel, ArgIndex, ArgValue));
2054+ HANDLE_ERRORS (urKernelSetArgPointer (UrKernel, ArgIndex, nullptr , ArgValue));
19552055
19562056 return PI_SUCCESS;
19572057}
@@ -2013,17 +2113,15 @@ inline pi_result piKernelSetExecInfo(pi_kernel Kernel,
20132113 break ;
20142114 }
20152115 case PI_EXT_KERNEL_EXEC_INFO_CACHE_CONFIG: {
2016- PropName = UR_EXT_KERNEL_EXEC_INFO_CACHE_CONFIG ;
2116+ PropName = UR_KERNEL_EXEC_INFO_CACHE_CONFIG ;
20172117 auto Param = (*(static_cast <const pi_kernel_cache_config *>(ParamValue)));
20182118 if (Param == PI_EXT_KERNEL_EXEC_INFO_CACHE_LARGE_SLM) {
2019- PropValue =
2020- static_cast <uint64_t >(UR_EXT_KERNEL_EXEC_INFO_CACHE_LARGE_SLM);
2119+ PropValue = static_cast <uint64_t >(UR_KERNEL_CACHE_CONFIG_LARGE_SLM);
20212120 } else if (Param == PI_EXT_KERNEL_EXEC_INFO_CACHE_LARGE_DATA) {
2022- PropValue =
2023- static_cast <uint64_t >(UR_EXT_KERNEL_EXEC_INFO_CACHE_LARGE_DATA);
2121+ PropValue = static_cast <uint64_t >(UR_KERNEL_CACHE_CONFIG_LARGE_DATA);
20242122 break ;
20252123 } else if (Param == PI_EXT_KERNEL_EXEC_INFO_CACHE_DEFAULT) {
2026- PropValue = static_cast <uint64_t >(UR_EXT_KERNEL_EXEC_INFO_CACHE_DEFAULT );
2124+ PropValue = static_cast <uint64_t >(UR_KERNEL_CACHE_CONFIG_DEFAULT );
20272125 } else {
20282126 die (" piKernelSetExecInfo: unsupported ParamValue\n " );
20292127 }
@@ -2032,8 +2130,8 @@ inline pi_result piKernelSetExecInfo(pi_kernel Kernel,
20322130 default :
20332131 die (" piKernelSetExecInfo: unsupported ParamName\n " );
20342132 }
2035- HANDLE_ERRORS (
2036- urKernelSetExecInfo (UrKernel, PropName, ParamValueSize, &PropValue));
2133+ HANDLE_ERRORS (urKernelSetExecInfo (UrKernel, PropName, ParamValueSize, nullptr ,
2134+ &PropValue));
20372135
20382136 return PI_SUCCESS;
20392137}
@@ -2211,7 +2309,8 @@ inline pi_result piextKernelSetArgPointer(pi_kernel Kernel, pi_uint32 ArgIndex,
22112309 const void *ArgValue) {
22122310 ur_kernel_handle_t UrKernel = reinterpret_cast <ur_kernel_handle_t >(Kernel);
22132311
2214- HANDLE_ERRORS (urKernelSetArgValue (UrKernel, ArgIndex, ArgSize, ArgValue));
2312+ HANDLE_ERRORS (
2313+ urKernelSetArgValue (UrKernel, ArgIndex, ArgSize, nullptr , ArgValue));
22152314
22162315 return PI_SUCCESS;
22172316}
@@ -3919,7 +4018,7 @@ inline pi_result piextKernelSetArgSampler(pi_kernel Kernel, pi_uint32 ArgIndex,
39194018 ur_sampler_handle_t UrSampler =
39204019 reinterpret_cast <ur_sampler_handle_t >(*ArgValue);
39214020
3922- HANDLE_ERRORS (urKernelSetArgSampler (UrKernel, ArgIndex, UrSampler));
4021+ HANDLE_ERRORS (urKernelSetArgSampler (UrKernel, ArgIndex, nullptr , UrSampler));
39234022
39244023 return PI_SUCCESS;
39254024}
0 commit comments