Skip to content

Commit 4dac76c

Browse files
Merge pull request #1690 from IntelPython/handle-possible-errors
Handle possible NULL return from DPCTLDevice_GetMaxWorkGroupSize1d, 2d
2 parents 183bfd7 + 3952ef7 commit 4dac76c

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

dpctl/_sycl_device.pyx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,13 +193,21 @@ cdef str _device_type_to_filter_string_part(_device_type DTy):
193193
return "unknown"
194194

195195

196-
cdef void _init_helper(_SyclDevice device, DPCTLSyclDeviceRef DRef):
196+
cdef void _init_helper(_SyclDevice device, DPCTLSyclDeviceRef DRef) except *:
197197
"Populate attributes of device from opaque device reference DRef"
198198
device._device_ref = DRef
199199
device._name = DPCTLDevice_GetName(DRef)
200+
if device._name is NULL:
201+
raise RuntimeError("Descriptor 'name' not available")
200202
device._driver_version = DPCTLDevice_GetDriverVersion(DRef)
203+
if device._driver_version is NULL:
204+
raise RuntimeError("Descriptor 'driver_version' not available")
201205
device._vendor = DPCTLDevice_GetVendor(DRef)
206+
if device._vendor is NULL:
207+
raise RuntimeError("Descriptor 'vendor' not available")
202208
device._max_work_item_sizes = DPCTLDevice_GetMaxWorkItemSizes3d(DRef)
209+
if device._max_work_item_sizes is NULL:
210+
raise RuntimeError("Descriptor 'max_work_item_sizes3d' not available")
203211

204212

205213
@functools.lru_cache(maxsize=None)
@@ -938,6 +946,8 @@ cdef class SyclDevice(_SyclDevice):
938946
max_work_item_sizes1d = DPCTLDevice_GetMaxWorkItemSizes1d(
939947
self._device_ref
940948
)
949+
if max_work_item_sizes1d is NULL:
950+
raise RuntimeError("error obtaining 'max_work_item_sizes1d'")
941951
s0 = max_work_item_sizes1d[0]
942952
DPCTLSize_t_Array_Delete(max_work_item_sizes1d)
943953
return (s0, )
@@ -960,6 +970,8 @@ cdef class SyclDevice(_SyclDevice):
960970
max_work_item_sizes2d = DPCTLDevice_GetMaxWorkItemSizes2d(
961971
self._device_ref
962972
)
973+
if max_work_item_sizes2d is NULL:
974+
raise RuntimeError("error obtaining 'max_work_item_sizes2d'")
963975
s0 = max_work_item_sizes2d[0]
964976
s1 = max_work_item_sizes2d[1]
965977
DPCTLSize_t_Array_Delete(max_work_item_sizes2d)

0 commit comments

Comments
 (0)