@@ -62,12 +62,71 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
6262 case UR_DEVICE_INFO_VENDOR :
6363 olInfo = OL_DEVICE_INFO_VENDOR ;
6464 break ;
65+ case UR_DEVICE_INFO_VENDOR_ID :
66+ olInfo = OL_DEVICE_INFO_VENDOR_ID ;
67+ break ;
6568 case UR_DEVICE_INFO_DRIVER_VERSION :
6669 olInfo = OL_DEVICE_INFO_DRIVER_VERSION ;
6770 break ;
6871 case UR_DEVICE_INFO_PLATFORM :
6972 return ReturnValue (hDevice->Platform );
7073 break ;
74+ case UR_DEVICE_INFO_MAX_COMPUTE_UNITS :
75+ case UR_DEVICE_INFO_NUM_COMPUTE_UNITS :
76+ olInfo = OL_DEVICE_INFO_NUM_COMPUTE_UNITS ;
77+ break ;
78+ case UR_DEVICE_INFO_SINGLE_FP_CONFIG :
79+ olInfo = OL_DEVICE_INFO_SINGLE_FP_CONFIG ;
80+ break ;
81+ case UR_DEVICE_INFO_HALF_FP_CONFIG :
82+ olInfo = OL_DEVICE_INFO_HALF_FP_CONFIG ;
83+ break ;
84+ case UR_DEVICE_INFO_DOUBLE_FP_CONFIG :
85+ olInfo = OL_DEVICE_INFO_DOUBLE_FP_CONFIG ;
86+ break ;
87+ case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_CHAR :
88+ case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_CHAR :
89+ olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_CHAR ;
90+ break ;
91+ case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_SHORT :
92+ case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_SHORT :
93+ olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_SHORT ;
94+ break ;
95+ case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_INT :
96+ case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT :
97+ olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT ;
98+ break ;
99+ case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG :
100+ case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG :
101+ olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG ;
102+ break ;
103+ case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_FLOAT :
104+ case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT :
105+ olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT ;
106+ break ;
107+ case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_DOUBLE :
108+ case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_DOUBLE :
109+ olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_DOUBLE ;
110+ break ;
111+ case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_HALF :
112+ case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_HALF :
113+ olInfo = OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_HALF ;
114+ break ;
115+ case UR_DEVICE_INFO_MAX_CLOCK_FREQUENCY :
116+ olInfo = OL_DEVICE_INFO_MAX_CLOCK_FREQUENCY ;
117+ break ;
118+ case UR_DEVICE_INFO_MEMORY_CLOCK_RATE :
119+ olInfo = OL_DEVICE_INFO_MEMORY_CLOCK_RATE ;
120+ break ;
121+ case UR_DEVICE_INFO_ADDRESS_BITS :
122+ olInfo = OL_DEVICE_INFO_ADDRESS_BITS ;
123+ break ;
124+ case UR_DEVICE_INFO_MAX_MEM_ALLOC_SIZE :
125+ olInfo = OL_DEVICE_INFO_MAX_MEM_ALLOC_SIZE ;
126+ break ;
127+ case UR_DEVICE_INFO_GLOBAL_MEM_SIZE :
128+ olInfo = OL_DEVICE_INFO_GLOBAL_MEM_SIZE ;
129+ break ;
71130 case UR_DEVICE_INFO_USM_DEVICE_SUPPORT :
72131 case UR_DEVICE_INFO_USM_HOST_SUPPORT :
73132 case UR_DEVICE_INFO_USM_SINGLE_SHARED_SUPPORT :
@@ -164,51 +223,6 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
164223 }
165224 return UR_RESULT_SUCCESS ;
166225 }
167- case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_CHAR : {
168- return ReturnValue (1u );
169- }
170- case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_SHORT : {
171- return ReturnValue (1u );
172- }
173- case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_INT : {
174- return ReturnValue (1u );
175- }
176- case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_LONG : {
177- return ReturnValue (1u );
178- }
179- case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_FLOAT : {
180- return ReturnValue (1u );
181- }
182- case UR_DEVICE_INFO_PREFERRED_VECTOR_WIDTH_DOUBLE : {
183- return ReturnValue (1u );
184- }
185- case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_CHAR : {
186- return ReturnValue (1u );
187- }
188- case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_SHORT : {
189- return ReturnValue (1u );
190- }
191- case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT : {
192- return ReturnValue (1u );
193- }
194- case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG : {
195- return ReturnValue (1u );
196- }
197- case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT : {
198- return ReturnValue (1u );
199- }
200- case UR_DEVICE_INFO_NATIVE_VECTOR_WIDTH_DOUBLE : {
201- return ReturnValue (1u );
202- }
203- case UR_DEVICE_INFO_SINGLE_FP_CONFIG :
204- case UR_DEVICE_INFO_DOUBLE_FP_CONFIG : {
205- // This minimal set of flags will at least signal to sycl that we support
206- // the basic FP types.
207- ur_device_fp_capability_flags_t SupportedFlags =
208- UR_DEVICE_FP_CAPABILITY_FLAG_INF_NAN |
209- UR_DEVICE_FP_CAPABILITY_FLAG_ROUND_TO_NEAREST ;
210- return ReturnValue (SupportedFlags);
211- }
212226 case UR_DEVICE_INFO_AVAILABLE : {
213227 return ReturnValue (ur_bool_t {true });
214228 }
@@ -229,10 +243,12 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
229243 if (pPropValue) {
230244 OL_RETURN_ON_ERR (
231245 olGetDeviceInfo (hDevice->OffloadDevice , olInfo, propSize, pPropValue));
232- // Need to explicitly map this type
233- if (olInfo == OL_DEVICE_INFO_TYPE ) {
234- auto urPropPtr = reinterpret_cast <ur_device_type_t *>(pPropValue);
235- auto olPropPtr = reinterpret_cast <ol_device_type_t *>(pPropValue);
246+
247+ // Need to explicitly map these types
248+ switch (olInfo) {
249+ case OL_DEVICE_INFO_TYPE : {
250+ auto *urPropPtr = reinterpret_cast <ur_device_type_t *>(pPropValue);
251+ auto *olPropPtr = reinterpret_cast <ol_device_type_t *>(pPropValue);
236252
237253 switch (*olPropPtr) {
238254 case OL_DEVICE_TYPE_CPU :
@@ -244,6 +260,36 @@ UR_APIEXPORT ur_result_t UR_APICALL urDeviceGetInfo(ur_device_handle_t hDevice,
244260 default :
245261 break ;
246262 }
263+ break ;
264+ }
265+ case OL_DEVICE_INFO_SINGLE_FP_CONFIG :
266+ case OL_DEVICE_INFO_HALF_FP_CONFIG :
267+ case OL_DEVICE_INFO_DOUBLE_FP_CONFIG : {
268+ auto olValue =
269+ *reinterpret_cast <ol_device_fp_capability_flags_t *>(pPropValue);
270+ ur_device_fp_capability_flags_t urValue{0 };
271+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_CORRECTLY_ROUNDED_DIVIDE_SQRT )
272+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_CORRECTLY_ROUNDED_DIVIDE_SQRT ;
273+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_ROUND_TO_NEAREST )
274+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_ROUND_TO_NEAREST ;
275+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_ROUND_TO_ZERO )
276+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_ROUND_TO_ZERO ;
277+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_ROUND_TO_INF )
278+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_ROUND_TO_INF ;
279+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_INF_NAN )
280+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_INF_NAN ;
281+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_DENORM )
282+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_DENORM ;
283+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_FMA )
284+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_FMA ;
285+ if (olValue & OL_DEVICE_FP_CAPABILITY_FLAG_SOFT_FLOAT )
286+ urValue |= UR_DEVICE_FP_CAPABILITY_FLAG_SOFT_FLOAT ;
287+ auto *urPropPtr =
288+ reinterpret_cast <ur_device_fp_capability_flags_t *>(pPropValue);
289+ *urPropPtr = urValue;
290+ }
291+ default :
292+ break ;
247293 }
248294 }
249295
0 commit comments