Source: python-sparse Version: 0.13.0-1 Severity: serious X-Debbugs-CC: nu...@packages.debian.org Tags: sid trixie User: debian...@lists.debian.org Usertags: needs-update Control: affects -1 src:numba
Dear maintainer(s),With a recent upload of numba the autopkgtest of python-sparse fails in testing when that autopkgtest is run with the binary packages of numba from unstable. It passes when run with only packages from testing. In tabular form:
pass fail numba from testing 0.57.1+dfsg-1 python-sparse from testing 0.13.0-1 all others from testing from testing I copied some of the output at the bottom of this report.Currently this regression is blocking the migration of numba to testing [1]. Of course, numba shouldn't just break your autopkgtest (or even worse, your package), but it seems to me that numba isn't going to fix the situation.
If this is a real problem in your package (and not only in your autopkgtest), the right binary package(s) from numba should really add a versioned Breaks on the unfixed version of (one of your) package(s). Note: the Breaks is nice even if the issue is only in the autopkgtest as it helps the migration software to figure out the right versions to combine in the tests.
More information about this bug and the reason for filing it can be found on https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation Paul [1] https://qa.debian.org/excuses.php?package=numba https://ci.debian.net/data/autopkgtest/testing/amd64/p/python-sparse/38059394/log.gz115s =================================== FAILURES =================================== 115s _______________ test_tensordot[coo-gcxs-a_shape1-b_shape1-axes1] _______________
115s 115s a_shape = (3, 4), b_shape = (4, 3), axes = (0, 1), a_format = 'coo' 115s b_format = 'gcxs' 115s 115s @pytest.mark.parametrize( 115s "a_shape,b_shape,axes", 115s [ 115s [(3, 4), (4, 3), (1, 0)], 115s [(3, 4), (4, 3), (0, 1)], 115s [(3, 4, 5), (4, 3), (1, 0)], 115s [(3, 4), (5, 4, 3), (1, 1)], 115s [(3, 4), (5, 4, 3), ((0, 1), (2, 1))], 115s [(3, 4), (5, 4, 3), ((1, 0), (1, 2))], 115s [(3, 4, 5), (4,), (1, 0)], 115s [(4,), (3, 4, 5), (0, 1)], 115s [(4,), (4,), (0, 0)], 115s [(4,), (4,), 0], 115s ], 115s ) 115s @pytest.mark.parametrize( 115s "a_format, b_format",115s [("coo", "coo"), ("coo", "gcxs"), ("gcxs", "coo"), ("gcxs", "gcxs")],
115s ) 115s def test_tensordot(a_shape, b_shape, axes, a_format, b_format): 115s sa = sparse.random(a_shape, density=0.5, format=a_format) 115s sb = sparse.random(b_shape, density=0.5, format=b_format) 115s 115s a = sa.todense() 115s b = sb.todense() 115s 115s a_b = np.tensordot(a, b, axes) 115s 115s # tests for return_type=None 115s sa_sb = sparse.tensordot(sa, sb, axes) 115s sa_b = sparse.tensordot(sa, b, axes) 115s a_sb = sparse.tensordot(a, sb, axes) 115s 115s assert_eq(a_b, sa_sb) 115s assert_eq(a_b, sa_b) 115s assert_eq(a_b, a_sb) 115s if all(isinstance(arr, COO) for arr in [sa, sb]): 115s assert isinstance(sa_sb, COO) 115s else: 115s assert isinstance(sa_sb, GCXS) 115s assert isinstance(sa_b, np.ndarray) 115s assert isinstance(a_sb, np.ndarray) 115s 115s # tests for return_type=COO 115s sa_b = sparse.tensordot(sa, b, axes, return_type=COO) 115s > a_sb = sparse.tensordot(a, sb, axes, return_type=COO) 115s 115s tests/test_dot.py:58:115s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s /usr/lib/python3/dist-packages/sparse/_common.py:198: in tensordot 115s res = _dot(at, bt, return_type) 115s /usr/lib/python3/dist-packages/sparse/_common.py:425: in _dot 115s out = GCXS(115s /usr/lib/python3/dist-packages/sparse/_compressed/compressed.py:195: in __init__
115s self._prune()115s /usr/lib/python3/dist-packages/sparse/_compressed/compressed.py:817: in _prune 115s np.cumsum(np.bincount(coords[0], minlength=row_size), out=indptr[1:]) 115s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s115s args = (array([7304680739967889201, 3701732606794297453, 1,
115s 1, 2, 2, 115s 3, 3]),) 115s kwargs = {'minlength': 4}115s relevant_args = (array([7304680739967889201, 3701732606794297453, 1,
115s 1, 2, 2, 115s 3, 3]), None) 115s 115s > ???115s E ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.
115s 115s <__array_function__ internals>:200: ValueError115s _______________ test_tensordot[coo-gcxs-a_shape3-b_shape3-axes3] _______________
115s 115s a_shape = (3, 4), b_shape = (5, 4, 3), axes = (1, 1), a_format = 'coo' 115s b_format = 'gcxs' 115s 115s @pytest.mark.parametrize( 115s "a_shape,b_shape,axes", 115s [ 115s [(3, 4), (4, 3), (1, 0)], 115s [(3, 4), (4, 3), (0, 1)], 115s [(3, 4, 5), (4, 3), (1, 0)], 115s [(3, 4), (5, 4, 3), (1, 1)], 115s [(3, 4), (5, 4, 3), ((0, 1), (2, 1))], 115s [(3, 4), (5, 4, 3), ((1, 0), (1, 2))], 115s [(3, 4, 5), (4,), (1, 0)], 115s [(4,), (3, 4, 5), (0, 1)], 115s [(4,), (4,), (0, 0)], 115s [(4,), (4,), 0], 115s ], 115s ) 115s @pytest.mark.parametrize( 115s "a_format, b_format",115s [("coo", "coo"), ("coo", "gcxs"), ("gcxs", "coo"), ("gcxs", "gcxs")],
115s ) 115s def test_tensordot(a_shape, b_shape, axes, a_format, b_format): 115s sa = sparse.random(a_shape, density=0.5, format=a_format) 115s sb = sparse.random(b_shape, density=0.5, format=b_format) 115s 115s a = sa.todense() 115s b = sb.todense() 115s 115s a_b = np.tensordot(a, b, axes) 115s 115s # tests for return_type=None 115s sa_sb = sparse.tensordot(sa, sb, axes) 115s sa_b = sparse.tensordot(sa, b, axes) 115s a_sb = sparse.tensordot(a, sb, axes) 115s 115s assert_eq(a_b, sa_sb) 115s assert_eq(a_b, sa_b) 115s assert_eq(a_b, a_sb) 115s if all(isinstance(arr, COO) for arr in [sa, sb]): 115s assert isinstance(sa_sb, COO) 115s else: 115s assert isinstance(sa_sb, GCXS) 115s assert isinstance(sa_b, np.ndarray) 115s assert isinstance(a_sb, np.ndarray) 115s 115s # tests for return_type=COO 115s sa_b = sparse.tensordot(sa, b, axes, return_type=COO) 115s > a_sb = sparse.tensordot(a, sb, axes, return_type=COO) 115s 115s tests/test_dot.py:58:115s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s /usr/lib/python3/dist-packages/sparse/_common.py:198: in tensordot 115s res = _dot(at, bt, return_type) 115s /usr/lib/python3/dist-packages/sparse/_common.py:425: in _dot 115s out = GCXS(115s /usr/lib/python3/dist-packages/sparse/_compressed/compressed.py:195: in __init__
115s self._prune()115s /usr/lib/python3/dist-packages/sparse/_compressed/compressed.py:817: in _prune 115s np.cumsum(np.bincount(coords[0], minlength=row_size), out=indptr[1:]) 115s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s115s args = (array([ 92935672, 2, 8, 4294969460, 92935696, 115s 4294967297, 95773504, 25769803777,... 1, 1, 1, 1, 115s 1, 1, 1, 1, 1]),)
115s kwargs = {'minlength': 3}115s relevant_args = (array([ 92935672, 2, 8, 4294969460, 92935696, 115s 4294967297, 95773504, 25769803777,... 1, 1, 1, 115s 1, 1, 1, 1, 1]), None)
115s 115s > ???115s E numpy.core._exceptions._ArrayMemoryError: Unable to allocate 256. GiB for an array with shape (34359738371,) and data type int64
115s 115s <__array_function__ internals>:200: MemoryError115s _______________ test_tensordot[coo-gcxs-a_shape7-b_shape7-axes7] _______________
115s 115s a_shape = (4,), b_shape = (3, 4, 5), axes = (0, 1), a_format = 'coo' 115s b_format = 'gcxs' 115s 115s @pytest.mark.parametrize( 115s "a_shape,b_shape,axes", 115s [ 115s [(3, 4), (4, 3), (1, 0)], 115s [(3, 4), (4, 3), (0, 1)], 115s [(3, 4, 5), (4, 3), (1, 0)], 115s [(3, 4), (5, 4, 3), (1, 1)], 115s [(3, 4), (5, 4, 3), ((0, 1), (2, 1))], 115s [(3, 4), (5, 4, 3), ((1, 0), (1, 2))], 115s [(3, 4, 5), (4,), (1, 0)], 115s [(4,), (3, 4, 5), (0, 1)], 115s [(4,), (4,), (0, 0)], 115s [(4,), (4,), 0], 115s ], 115s ) 115s @pytest.mark.parametrize( 115s "a_format, b_format",115s [("coo", "coo"), ("coo", "gcxs"), ("gcxs", "coo"), ("gcxs", "gcxs")],
115s ) 115s def test_tensordot(a_shape, b_shape, axes, a_format, b_format): 115s sa = sparse.random(a_shape, density=0.5, format=a_format) 115s sb = sparse.random(b_shape, density=0.5, format=b_format) 115s 115s a = sa.todense() 115s b = sb.todense() 115s 115s a_b = np.tensordot(a, b, axes) 115s 115s # tests for return_type=None 115s sa_sb = sparse.tensordot(sa, sb, axes) 115s sa_b = sparse.tensordot(sa, b, axes) 115s a_sb = sparse.tensordot(a, sb, axes) 115s 115s assert_eq(a_b, sa_sb) 115s assert_eq(a_b, sa_b) 115s assert_eq(a_b, a_sb) 115s if all(isinstance(arr, COO) for arr in [sa, sb]): 115s assert isinstance(sa_sb, COO) 115s else: 115s assert isinstance(sa_sb, GCXS) 115s assert isinstance(sa_b, np.ndarray) 115s assert isinstance(a_sb, np.ndarray) 115s 115s # tests for return_type=COO 115s sa_b = sparse.tensordot(sa, b, axes, return_type=COO) 115s > a_sb = sparse.tensordot(a, sb, axes, return_type=COO) 115s 115s tests/test_dot.py:58:115s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s /usr/lib/python3/dist-packages/sparse/_common.py:198: in tensordot 115s res = _dot(at, bt, return_type) 115s /usr/lib/python3/dist-packages/sparse/_common.py:425: in _dot 115s out = GCXS(115s /usr/lib/python3/dist-packages/sparse/_compressed/compressed.py:195: in __init__
115s self._prune()115s /usr/lib/python3/dist-packages/sparse/_compressed/compressed.py:817: in _prune 115s np.cumsum(np.bincount(coords[0], minlength=row_size), out=indptr[1:]) 115s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s115s args = (array([140611529669312, 140611525615744, 140611529695520, 140611526270736, 115s 140611529954992, 140611529497968, 140611530646432, 140611530966048,
115s 0, 4294967296]),) 115s kwargs = {'minlength': 1}115s relevant_args = (array([140611529669312, 140611525615744, 140611529695520, 140611526270736, 115s 140611529954992, 140611529497968, 140611530646432, 140611530966048,
115s 0, 4294967296]), None) 115s 115s > ???115s E numpy.core._exceptions._ArrayMemoryError: Unable to allocate 1023. TiB for an array with shape (140611530966049,) and data type int64
115s 115s <__array_function__ internals>:200: MemoryError
OpenPGP_signature.asc
Description: OpenPGP digital signature