You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: cuda_core/cuda/core/_layout.pyx
+14-15Lines changed: 14 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ cdef class _StridedLayout:
29
29
Otherwise, the strides are assumed to be implicitly C-contiguous and the resulting
30
30
layout's :attr:`strides` will be None.
31
31
itemsize : int
32
-
The number of bytes per single element (dtype size). Must be a power of two.
32
+
The number of bytes per single element (dtype size).
33
33
divide_strides : bool, optional
34
34
If True, the provided :attr:`strides` will be divided by the :attr:`itemsize`.
35
35
@@ -40,7 +40,7 @@ cdef class _StridedLayout:
40
40
Attributes
41
41
----------
42
42
itemsize : int
43
-
The number of bytes per single element (dtype size). Must be a power of two.
43
+
The number of bytes per single element (dtype size).
44
44
slice_offset : int
45
45
The offset (as a number of elements, not bytes) of the element at
46
46
index ``(0,) * ndim``. See also :attr:`slice_offset_in_bytes`.
@@ -636,7 +636,6 @@ cdef class _StridedLayout:
636
636
In either case, the ``volume * itemsize`` of the layout remains the same.
637
637
638
638
The conversion is subject to the following constraints:
639
-
* The old and new itemsizes must be powers of two.
640
639
* The extent at ``axis`` must be a positive integer.
641
640
* The stride at ``axis`` must be 1.
642
641
@@ -1214,10 +1213,10 @@ cdef inline int64_t gcd(int64_t a, int64_t b) except? -1 nogil:
1214
1213
1215
1214
cdef inline int pack_extents(BaseLayout& out_layout, stride_t& out_slice_offset, BaseLayout& in_layout, stride_t slice_offset, int itemsize, int new_itemsize, intptr_t data_ptr, bint keep_dim, int axis) except-1 nogil:
1216
1215
cdef int ndim = in_layout.ndim
1217
-
if new_itemsize <=0or new_itemsize & (new_itemsize -1):
1218
-
raiseValueError(f"new itemsize must be a power of two, got {new_itemsize}.")
1219
-
if itemsize <=0or itemsize & (itemsize -1):
1220
-
raiseValueError(f"itemsize must be a power of two, got {itemsize}.")
1216
+
if new_itemsize <=0:
1217
+
raiseValueError(f"new itemsize must be greater than zero, got {new_itemsize}.")
1218
+
if itemsize <=0:
1219
+
raiseValueError(f"itemsize must be greater than zero, got {itemsize}.")
1221
1220
if new_itemsize <= itemsize:
1222
1221
if new_itemsize == itemsize:
1223
1222
return1
@@ -1270,10 +1269,10 @@ cdef inline int unpack_extents(BaseLayout &out_layout, BaseLayout &in_layout, in
1270
1269
cdef int ndim = in_layout.ndim
1271
1270
ifnot _normalize_axis(axis, ndim):
1272
1271
raiseValueError(f"Invalid axis: {axis} out of range for {ndim}D tensor")
1273
-
if new_itemsize <=0or new_itemsize & (new_itemsize -1):
1274
-
raiseValueError(f"new itemsize must be a power of two, got {new_itemsize}.")
1275
-
if itemsize <=0or itemsize & (itemsize -1):
1276
-
raiseValueError(f"itemsize must be a power of two, got {itemsize}.")
1272
+
if new_itemsize <=0:
1273
+
raiseValueError(f"new itemsize must be greater than zero, got {new_itemsize}.")
1274
+
if itemsize <=0:
1275
+
raiseValueError(f"itemsize must be greater than zero, got {itemsize}.")
1277
1276
if new_itemsize >= itemsize:
1278
1277
if new_itemsize == itemsize:
1279
1278
return1
@@ -1301,10 +1300,10 @@ cdef inline int unpack_extents(BaseLayout &out_layout, BaseLayout &in_layout, in
1301
1300
1302
1301
cdef inline int max_compatible_itemsize(BaseLayout& layout, stride_t slice_offset, int itemsize, int max_itemsize, intptr_t data_ptr, int axis) except? -1 nogil:
1303
1302
cdef int ndim = layout.ndim
1304
-
if max_itemsize <=0or max_itemsize & (max_itemsize -1):
1305
-
raiseValueError(f"max_itemsize must be a power of two, got {max_itemsize}.")
1306
-
if itemsize <=0or itemsize & (itemsize -1):
1307
-
raiseValueError(f"itemsize must be a power of two, got {itemsize}.")
1303
+
if max_itemsize <=0:
1304
+
raiseValueError(f"max_itemsize must be greater than zero, got {max_itemsize}.")
1305
+
if itemsize <=0:
1306
+
raiseValueError(f"itemsize must be greater than zero, got {itemsize}.")
1308
1307
ifnot _normalize_axis(axis, ndim):
1309
1308
raiseValueError(f"Invalid axis: {axis} out of range for {ndim}D tensor")
0 commit comments