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.gz

115s =================================== 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 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s
115s 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: ValueError
115s _______________ 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 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s
115s 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: MemoryError
115s _______________ 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 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
115s
115s 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

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to