@@ -706,7 +706,12 @@ cdef class SyclDevice(_SyclDevice):
706
706
the sub-devices.
707
707
"""
708
708
cdef DPCTLDeviceVectorRef DVRef = NULL
709
- DVRef = DPCTLDevice_CreateSubDevicesEqually(self ._device_ref, count)
709
+ if count > 0 :
710
+ DVRef = DPCTLDevice_CreateSubDevicesEqually(self ._device_ref, count)
711
+ else :
712
+ raise ValueError (
713
+ " Creating sub-devices with zero compute units is requested"
714
+ )
710
715
if DVRef is NULL :
711
716
raise SubDeviceCreationError(" Sub-devices were not created." )
712
717
return _get_devices(DVRef)
@@ -720,6 +725,7 @@ cdef class SyclDevice(_SyclDevice):
720
725
"""
721
726
cdef int ncounts = len (counts)
722
727
cdef size_t * counts_buff = NULL
728
+ cdef size_t min_count = 1
723
729
cdef DPCTLDeviceVectorRef DVRef = NULL
724
730
cdef int i
725
731
@@ -734,10 +740,17 @@ cdef class SyclDevice(_SyclDevice):
734
740
)
735
741
for i in range (ncounts):
736
742
counts_buff[i] = counts[i]
737
- DVRef = DPCTLDevice_CreateSubDevicesByCounts(
738
- self ._device_ref, counts_buff, ncounts
739
- )
743
+ if counts_buff[i] == 0 :
744
+ min_count = 0
745
+ if min_count:
746
+ DVRef = DPCTLDevice_CreateSubDevicesByCounts(
747
+ self ._device_ref, counts_buff, ncounts
748
+ )
740
749
free(counts_buff)
750
+ if min_count == 0 :
751
+ raise ValueError (
752
+ " Targeted sub-device execution units must positive"
753
+ )
741
754
if DVRef is NULL :
742
755
raise SubDeviceCreationError(" Sub-devices were not created." )
743
756
return _get_devices(DVRef)
0 commit comments