Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MAINT: update OpenBLAS to 0.3.19 #20660

Merged
merged 2 commits into from
Jan 19, 2022
Merged

Conversation

DWesl
Copy link
Contributor

@DWesl DWesl commented Dec 25, 2021

Not sure what the usual timeline on updating this is.

Running the CI on this PR is one way to narrow down the Cygwin problems addressed in PR #20654.
If this build also has four failures, then OpenBLAS is probably the problem.
If this build uses the new OpenBLAS with no problems, then I need to see what else changed in the Cygwin packages around the time the builds started failing.

Not sure what the usual timeline on updating this is.
Running the CI on this PR is one way to narrow down the Cygwin problems addressed in PR#20654.
If this build also has four failures, then OpenBLAS is probably the problem.
If this build uses the new OpenBLAS with no problems, then I need to see what else changed
in the Cygwin packages around the time the builds started failing.
@DWesl
Copy link
Contributor Author

DWesl commented Dec 25, 2021

Apparently the pre-built OpenBLAS downloads aren't in the expected place yet, or they changed their naming scheme.

@mattip mattip changed the title MAINT: update OpenBLAS to 0.3.18 MAINT: update OpenBLAS to 0.3.19 Dec 26, 2021
@mattip
Copy link
Member

mattip commented Dec 27, 2021

close/reopen to trigger CI now that 0.3.19 was built

@mattip mattip closed this Dec 27, 2021
@mattip mattip reopened this Dec 27, 2021
@mattip
Copy link
Member

mattip commented Dec 27, 2021

@martin-frbg it seems something changed in 0.3.19 or the way we are building it that causes it to fail NumPy tests. This was first noticed in the cygwin builds, and is now visible in the default build. Ideas?

@martin-frbg
Copy link

unfortunately I have no idea what could have gone wrong in the conda build. 0.3.19 is not supposed to bring major differences for x86_64 in normal operation, and my builds passed the LAPACK testsuite.

@rgommers
Copy link
Member

unfortunately I have no idea what could have gone wrong in the conda build. 0.3.19 is not supposed to bring major differences for x86_64 in normal operation, and my builds passed the LAPACK testsuite.

It's not the conda build, it's the standalone build of OpenBLAS from https://github.com/MacPython/openblas-libs that is used in our CI and PyPI wheels.

@martin-frbg it seems something changed in 0.3.19 or the way we are building it that causes it to fail NumPy tests.

To be concrete, there's 5 test failures on the "smoke test" CI job (TravisCI failures are unrelated) for inv, cond, cholesky (2x), and tensorinv. It could be a single root cause.

Pytest output is pretty awful/unreadable, but here it is:

2021-12-27T16:26:04.6104267Z ____________________________ TestInv.test_sq_cases _____________________________
2021-12-27T16:26:04.6107080Z 
2021-12-27T16:26:04.6109561Z self = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6113187Z require = {'square'}, exclude = {'generalized', 'size-0'}
2021-12-27T16:26:04.6115453Z 
2021-12-27T16:26:04.6117701Z     def check_cases(self, require=set(), exclude=set()):
2021-12-27T16:26:04.6119931Z         """
2021-12-27T16:26:04.6122207Z         Run func on each of the cases with all of the tags in require, and none
2021-12-27T16:26:04.6124613Z         of the tags in exclude
2021-12-27T16:26:04.6126920Z         """
2021-12-27T16:26:04.6129114Z         for case in self.TEST_CASES:
2021-12-27T16:26:04.6131391Z             # filter by require and exclude
2021-12-27T16:26:04.6133665Z             if case.tags & require != require:
2021-12-27T16:26:04.6135890Z                 continue
2021-12-27T16:26:04.6137575Z             if case.tags & exclude:
2021-12-27T16:26:04.6139010Z                 continue
2021-12-27T16:26:04.6140467Z     
2021-12-27T16:26:04.6141895Z             try:
2021-12-27T16:26:04.6143304Z >               case.check(self.do)
2021-12-27T16:26:04.6144599Z 
2021-12-27T16:26:04.6145991Z case       = <LinalgCase: 8x8>
2021-12-27T16:26:04.6147789Z exclude    = {'generalized', 'size-0'}
2021-12-27T16:26:04.6150302Z msg        = 'In test case: <LinalgCase: 8x8>\n\nTraceback (most recent call last):\n  File "/home/runner/work/numpy/numpy/builds/v... 0., 0., 0., 0., 0., 0., 0.],\n       [0., 1., 0., 0., 0., 0., 0., 0.],\n       [0., 0., 1., 0., 0., 0., 0., 0.],...\n'
2021-12-27T16:26:04.6152383Z require    = {'square'}
2021-12-27T16:26:04.6154163Z self       = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6155751Z 
2021-12-27T16:26:04.6158083Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:350: 
2021-12-27T16:26:04.6160182Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6161433Z 
2021-12-27T16:26:04.6162813Z self = <LinalgCase: 8x8>
2021-12-27T16:26:04.6164698Z do = <bound method InvCases.do of <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>>
2021-12-27T16:26:04.6166398Z 
2021-12-27T16:26:04.6167761Z     def check(self, do):
2021-12-27T16:26:04.6169137Z         """
2021-12-27T16:26:04.6170670Z         Run the function `do` on this test case, expanding arguments
2021-12-27T16:26:04.6172212Z         """
2021-12-27T16:26:04.6173661Z >       do(self.a, self.b, tags=self.tags)
2021-12-27T16:26:04.6174989Z 
2021-12-27T16:26:04.6176788Z do         = <bound method InvCases.do of <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>>
2021-12-27T16:26:04.6178665Z self       = <LinalgCase: 8x8>
2021-12-27T16:26:04.6179956Z 
2021-12-27T16:26:04.6182396Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:85: 
2021-12-27T16:26:04.6183824Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6185013Z 
2021-12-27T16:26:04.6186615Z self = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6188299Z a = array([[0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581,
2021-12-27T16:26:04.6189633Z         0.27259261, 0.27646426, 0.80187218],
2021-12-27T16:26:04.6190890Z      ...289],
2021-12-27T16:26:04.6192175Z        [0.79052413, 0.99208147, 0.95880176, 0.79196414, 0.28525096,
2021-12-27T16:26:04.6193492Z         0.62491671, 0.4780938 , 0.19567518]])
2021-12-27T16:26:04.6194193Z b = array([0.38231745, 0.05387369, 0.45164841, 0.98200474, 0.1239427 ,
2021-12-27T16:26:04.6194767Z        0.1193809 , 0.73852306, 0.58730363])
2021-12-27T16:26:04.6195546Z tags = frozenset({'square'})
2021-12-27T16:26:04.6196015Z 
2021-12-27T16:26:04.6196545Z     def do(self, a, b, tags):
2021-12-27T16:26:04.6197155Z         a_inv = linalg.inv(a)
2021-12-27T16:26:04.6197853Z >       assert_almost_equal(dot_generalized(a, a_inv),
2021-12-27T16:26:04.6198655Z                             identity_like_generalized(a))
2021-12-27T16:26:04.6199164Z 
2021-12-27T16:26:04.6199862Z a          = array([[0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581,
2021-12-27T16:26:04.6200461Z         0.27259261, 0.27646426, 0.80187218],
2021-12-27T16:26:04.6200968Z      ...289],
2021-12-27T16:26:04.6201582Z        [0.79052413, 0.99208147, 0.95880176, 0.79196414, 0.28525096,
2021-12-27T16:26:04.6202068Z         0.62491671, 0.4780938 , 0.19567518]])
2021-12-27T16:26:04.6202897Z a_inv      = array([[-2.17851004e-01,  2.44612829e+02,  9.32825958e+00,
2021-12-27T16:26:04.6203653Z          1.16647242e+02,  2.48607027e-01, -8.96242768e-01,
2021-12-27T16:26:04.6204273Z ...-1.00704836e+01,
2021-12-27T16:26:04.6204931Z         -1.24637672e+02, -5.43636691e-01,  1.05539987e+00,
2021-12-27T16:26:04.6205615Z          3.21918674e+00, -1.06015815e-01]])
2021-12-27T16:26:04.6206144Z b          = array([0.38231745, 0.05387369, 0.45164841, 0.98200474, 0.1239427 ,
2021-12-27T16:26:04.6206641Z        0.1193809 , 0.73852306, 0.58730363])
2021-12-27T16:26:04.6207423Z self       = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6208379Z tags       = frozenset({'square'})
2021-12-27T16:26:04.6208779Z 
2021-12-27T16:26:04.6210058Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:531: 
2021-12-27T16:26:04.6211162Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6211550Z 
2021-12-27T16:26:04.6212205Z a = array([[ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01,
2021-12-27T16:26:04.6212936Z         -1.43064736e+02, -5.18971847e-01,  1.23431113e+00,
2021-12-27T16:26:04.6213553Z ...-6.57795524e-01,
2021-12-27T16:26:04.6214205Z         -8.31118732e+00,  1.20375904e-02,  8.34401574e-02,
2021-12-27T16:26:04.6214961Z          1.49383043e-01,  7.59701283e-02]])
2021-12-27T16:26:04.6215466Z b = array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6215929Z        [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6216423Z        [0., 0., 1., 0., 0., 0., 0., ...   [0., 0., 0., 0., 0., 1., 0., 0.],
2021-12-27T16:26:04.6216986Z        [0., 0., 0., 0., 0., 0., 1., 0.],
2021-12-27T16:26:04.6217447Z        [0., 0., 0., 0., 0., 0., 0., 1.]])
2021-12-27T16:26:04.6218038Z single_decimal = 6, double_decimal = 12, kw = {}, decimal = 12
2021-12-27T16:26:04.6218508Z 
2021-12-27T16:26:04.6219105Z     def assert_almost_equal(a, b, single_decimal=6, double_decimal=12, **kw):
2021-12-27T16:26:04.6219879Z         if asarray(a).dtype.type in (single, csingle):
2021-12-27T16:26:04.6220750Z             decimal = single_decimal
2021-12-27T16:26:04.6221284Z         else:
2021-12-27T16:26:04.6221799Z             decimal = double_decimal
2021-12-27T16:26:04.6222438Z >       old_assert_almost_equal(a, b, decimal=decimal, **kw)
2021-12-27T16:26:04.6222911Z 
2021-12-27T16:26:04.6223635Z a          = array([[ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01,
2021-12-27T16:26:04.6224397Z         -1.43064736e+02, -5.18971847e-01,  1.23431113e+00,
2021-12-27T16:26:04.6225033Z ...-6.57795524e-01,
2021-12-27T16:26:04.6225699Z         -8.31118732e+00,  1.20375904e-02,  8.34401574e-02,
2021-12-27T16:26:04.6226361Z          1.49383043e-01,  7.59701283e-02]])
2021-12-27T16:26:04.6226875Z b          = array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6227361Z        [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6227837Z        [0., 0., 1., 0., 0., 0., 0., ...   [0., 0., 0., 0., 0., 1., 0., 0.],
2021-12-27T16:26:04.6228331Z        [0., 0., 0., 0., 0., 0., 1., 0.],
2021-12-27T16:26:04.6228795Z        [0., 0., 0., 0., 0., 0., 0., 1.]])
2021-12-27T16:26:04.6229245Z decimal    = 12
2021-12-27T16:26:04.6229729Z double_decimal = 12
2021-12-27T16:26:04.6230182Z kw         = {}
2021-12-27T16:26:04.6230649Z single_decimal = 6
2021-12-27T16:26:04.6231015Z 
2021-12-27T16:26:04.6232275Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:41: 
2021-12-27T16:26:04.6233501Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6233890Z 
2021-12-27T16:26:04.6234593Z actual = array([[ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01,
2021-12-27T16:26:04.6235334Z         -1.43064736e+02, -5.18971847e-01,  1.23431113e+00,
2021-12-27T16:26:04.6235952Z ...-6.57795524e-01,
2021-12-27T16:26:04.6236623Z         -8.31118732e+00,  1.20375904e-02,  8.34401574e-02,
2021-12-27T16:26:04.6237415Z          1.49383043e-01,  7.59701283e-02]])
2021-12-27T16:26:04.6237950Z desired = array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6238446Z        [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6238941Z        [0., 0., 1., 0., 0., 0., 0., ...   [0., 0., 0., 0., 0., 1., 0., 0.],
2021-12-27T16:26:04.6239428Z        [0., 0., 0., 0., 0., 0., 1., 0.],
2021-12-27T16:26:04.6239875Z        [0., 0., 0., 0., 0., 0., 0., 1.]])
2021-12-27T16:26:04.6240564Z decimal = 12, err_msg = '', verbose = True
2021-12-27T16:26:04.6240996Z 
2021-12-27T16:26:04.6241876Z     def assert_almost_equal(actual,desired,decimal=7,err_msg='',verbose=True):
2021-12-27T16:26:04.6245160Z         """
2021-12-27T16:26:04.6245697Z         Raises an AssertionError if two items are not equal up to desired
2021-12-27T16:26:04.6246253Z         precision.
2021-12-27T16:26:04.6246595Z     
2021-12-27T16:26:04.6247235Z         .. note:: It is recommended to use one of `assert_allclose`,
2021-12-27T16:26:04.6247912Z                   `assert_array_almost_equal_nulp` or `assert_array_max_ulp`
2021-12-27T16:26:04.6248599Z                   instead of this function for more consistent floating point
2021-12-27T16:26:04.6249157Z                   comparisons.
2021-12-27T16:26:04.6249514Z     
2021-12-27T16:26:04.6250025Z         The test verifies that the elements of `actual` and `desired` satisfy.
2021-12-27T16:26:04.6250541Z     
2021-12-27T16:26:04.6251201Z             ``abs(desired-actual) < 1.5 * 10**(-decimal)``
2021-12-27T16:26:04.6251618Z     
2021-12-27T16:26:04.6252164Z         That is a looser test than originally documented, but agrees with what the
2021-12-27T16:26:04.6252939Z         actual implementation in `assert_array_almost_equal` did up to rounding
2021-12-27T16:26:04.6253740Z         vagaries. An exception is raised at conflicting values. For ndarrays this
2021-12-27T16:26:04.6254427Z         delegates to assert_array_almost_equal
2021-12-27T16:26:04.6254840Z     
2021-12-27T16:26:04.6255178Z         Parameters
2021-12-27T16:26:04.6255663Z         ----------
2021-12-27T16:26:04.6256029Z         actual : array_like
2021-12-27T16:26:04.6256450Z             The object to check.
2021-12-27T16:26:04.6256859Z         desired : array_like
2021-12-27T16:26:04.6257303Z             The expected object.
2021-12-27T16:26:04.6257736Z         decimal : int, optional
2021-12-27T16:26:04.6258232Z             Desired precision, default is 7.
2021-12-27T16:26:04.6258721Z         err_msg : str, optional
2021-12-27T16:26:04.6259241Z             The error message to be printed in case of failure.
2021-12-27T16:26:04.6259791Z         verbose : bool, optional
2021-12-27T16:26:04.6260514Z             If True, the conflicting values are appended to the error message.
2021-12-27T16:26:04.6261047Z     
2021-12-27T16:26:04.6261362Z         Raises
2021-12-27T16:26:04.6261800Z         ------
2021-12-27T16:26:04.6262185Z         AssertionError
2021-12-27T16:26:04.6262761Z           If actual and desired are not equal up to specified precision.
2021-12-27T16:26:04.6263280Z     
2021-12-27T16:26:04.6263585Z         See Also
2021-12-27T16:26:04.6264032Z         --------
2021-12-27T16:26:04.6264589Z         assert_allclose: Compare two array_like objects for equality with desired
2021-12-27T16:26:04.6265282Z                          relative and/or absolute precision.
2021-12-27T16:26:04.6265928Z         assert_array_almost_equal_nulp, assert_array_max_ulp, assert_equal
2021-12-27T16:26:04.6266410Z     
2021-12-27T16:26:04.6266735Z         Examples
2021-12-27T16:26:04.6267174Z         --------
2021-12-27T16:26:04.6267826Z         >>> from numpy.testing import assert_almost_equal
2021-12-27T16:26:04.6268396Z         >>> assert_almost_equal(2.3333333333333, 2.33333334)
2021-12-27T16:26:04.6268892Z         >>> assert_almost_equal(2.3333333333333, 2.33333334, decimal=10)
2021-12-27T16:26:04.6269418Z         Traceback (most recent call last):
2021-12-27T16:26:04.6269816Z             ...
2021-12-27T16:26:04.6270274Z         AssertionError:
2021-12-27T16:26:04.6270766Z         Arrays are not almost equal to 10 decimals
2021-12-27T16:26:04.6271225Z          ACTUAL: 2.3333333333333
2021-12-27T16:26:04.6271597Z          DESIRED: 2.33333334
2021-12-27T16:26:04.6271913Z     
2021-12-27T16:26:04.6272326Z         >>> assert_almost_equal(np.array([1.0,2.3333333333333]),
2021-12-27T16:26:04.6272825Z         ...                     np.array([1.0,2.33333334]), decimal=9)
2021-12-27T16:26:04.6273328Z         Traceback (most recent call last):
2021-12-27T16:26:04.6273740Z             ...
2021-12-27T16:26:04.6274109Z         AssertionError:
2021-12-27T16:26:04.6274614Z         Arrays are not almost equal to 9 decimals
2021-12-27T16:26:04.6275062Z         <BLANKLINE>
2021-12-27T16:26:04.6275497Z         Mismatched elements: 1 / 2 (50%)
2021-12-27T16:26:04.6276162Z         Max absolute difference: 6.66669964e-09
2021-12-27T16:26:04.6276834Z         Max relative difference: 2.85715698e-09
2021-12-27T16:26:04.6277295Z          x: array([1.         , 2.333333333])
2021-12-27T16:26:04.6277672Z          y: array([1.        , 2.33333334])
2021-12-27T16:26:04.6278007Z     
2021-12-27T16:26:04.6278284Z         """
2021-12-27T16:26:04.6278775Z         __tracebackhide__ = True  # Hide traceback for py.test
2021-12-27T16:26:04.6279347Z         from numpy.core import ndarray
2021-12-27T16:26:04.6279924Z         from numpy.lib import iscomplexobj, real, imag
2021-12-27T16:26:04.6280389Z     
2021-12-27T16:26:04.6280867Z         # Handle complex numbers: separate into real/imag to handle
2021-12-27T16:26:04.6281460Z         # nan/inf/negative zero correctly
2021-12-27T16:26:04.6282105Z         # XXX: catch ValueError for subclasses of ndarray where iscomplex fail
2021-12-27T16:26:04.6282656Z         try:
2021-12-27T16:26:04.6283193Z             usecomplex = iscomplexobj(actual) or iscomplexobj(desired)
2021-12-27T16:26:04.6283812Z         except ValueError:
2021-12-27T16:26:04.6284263Z             usecomplex = False
2021-12-27T16:26:04.6284615Z     
2021-12-27T16:26:04.6284960Z         def _build_err_msg():
2021-12-27T16:26:04.6285665Z             header = ('Arrays are not almost equal to %d decimals' % decimal)
2021-12-27T16:26:04.6286375Z             return build_err_msg([actual, desired], err_msg, verbose=verbose,
2021-12-27T16:26:04.6286971Z                                  header=header)
2021-12-27T16:26:04.6287318Z     
2021-12-27T16:26:04.6287671Z         if usecomplex:
2021-12-27T16:26:04.6288110Z             if iscomplexobj(actual):
2021-12-27T16:26:04.6288581Z                 actualr = real(actual)
2021-12-27T16:26:04.6289007Z                 actuali = imag(actual)
2021-12-27T16:26:04.6289400Z             else:
2021-12-27T16:26:04.6289779Z                 actualr = actual
2021-12-27T16:26:04.6290152Z                 actuali = 0
2021-12-27T16:26:04.6290593Z             if iscomplexobj(desired):
2021-12-27T16:26:04.6291073Z                 desiredr = real(desired)
2021-12-27T16:26:04.6291550Z                 desiredi = imag(desired)
2021-12-27T16:26:04.6291945Z             else:
2021-12-27T16:26:04.6292336Z                 desiredr = desired
2021-12-27T16:26:04.6292752Z                 desiredi = 0
2021-12-27T16:26:04.6293092Z             try:
2021-12-27T16:26:04.6293611Z                 assert_almost_equal(actualr, desiredr, decimal=decimal)
2021-12-27T16:26:04.6294306Z                 assert_almost_equal(actuali, desiredi, decimal=decimal)
2021-12-27T16:26:04.6294921Z             except AssertionError:
2021-12-27T16:26:04.6295468Z                 raise AssertionError(_build_err_msg())
2021-12-27T16:26:04.6295904Z     
2021-12-27T16:26:04.6296430Z         if isinstance(actual, (ndarray, tuple, list)) \
2021-12-27T16:26:04.6297043Z                 or isinstance(desired, (ndarray, tuple, list)):
2021-12-27T16:26:04.6297730Z >           return assert_array_almost_equal(actual, desired, decimal, err_msg)
2021-12-27T16:26:04.6298166Z 
2021-12-27T16:26:04.6298522Z __tracebackhide__ = True
2021-12-27T16:26:04.6299159Z _build_err_msg = <function assert_almost_equal.<locals>._build_err_msg at 0x7fb03f14eee0>
2021-12-27T16:26:04.6300065Z actual     = array([[ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01,
2021-12-27T16:26:04.6300806Z         -1.43064736e+02, -5.18971847e-01,  1.23431113e+00,
2021-12-27T16:26:04.6301300Z ...-6.57795524e-01,
2021-12-27T16:26:04.6301821Z         -8.31118732e+00,  1.20375904e-02,  8.34401574e-02,
2021-12-27T16:26:04.6302362Z          1.49383043e-01,  7.59701283e-02]])
2021-12-27T16:26:04.6302711Z decimal    = 12
2021-12-27T16:26:04.6303109Z desired    = array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6303489Z        [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6303865Z        [0., 0., 1., 0., 0., 0., 0., ...   [0., 0., 0., 0., 0., 1., 0., 0.],
2021-12-27T16:26:04.6304236Z        [0., 0., 0., 0., 0., 0., 1., 0.],
2021-12-27T16:26:04.6304564Z        [0., 0., 0., 0., 0., 0., 0., 1.]])
2021-12-27T16:26:04.6305013Z err_msg    = ''
2021-12-27T16:26:04.6305432Z imag       = <function imag at 0x7fb063b91f70>
2021-12-27T16:26:04.6306043Z iscomplexobj = <function iscomplexobj at 0x7fb063b943a0>
2021-12-27T16:26:04.6306775Z ndarray    = <class 'numpy.ndarray'>
2021-12-27T16:26:04.6307289Z real       = <function real at 0x7fb063b91dc0>
2021-12-27T16:26:04.6307758Z usecomplex = False
2021-12-27T16:26:04.6308141Z verbose    = True
2021-12-27T16:26:04.6308390Z 
2021-12-27T16:26:04.6309540Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py:583: 
2021-12-27T16:26:04.6310493Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6310759Z 
2021-12-27T16:26:04.6311301Z x = array([[ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01,
2021-12-27T16:26:04.6311887Z         -1.43064736e+02, -5.18971847e-01,  1.23431113e+00,
2021-12-27T16:26:04.6312379Z ...-6.57795524e-01,
2021-12-27T16:26:04.6312899Z         -8.31118732e+00,  1.20375904e-02,  8.34401574e-02,
2021-12-27T16:26:04.6313443Z          1.49383043e-01,  7.59701283e-02]])
2021-12-27T16:26:04.6313830Z y = array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6314180Z        [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6314554Z        [0., 0., 1., 0., 0., 0., 0., ...   [0., 0., 0., 0., 0., 1., 0., 0.],
2021-12-27T16:26:04.6314908Z        [0., 0., 0., 0., 0., 0., 1., 0.],
2021-12-27T16:26:04.6315255Z        [0., 0., 0., 0., 0., 0., 0., 1.]])
2021-12-27T16:26:04.6315815Z decimal = 12, err_msg = '', verbose = True
2021-12-27T16:26:04.6316113Z 
2021-12-27T16:26:04.6316781Z     def assert_array_almost_equal(x, y, decimal=6, err_msg='', verbose=True):
2021-12-27T16:26:04.6317287Z         """
2021-12-27T16:26:04.6317807Z         Raises an AssertionError if two objects are not equal up to desired
2021-12-27T16:26:04.6318386Z         precision.
2021-12-27T16:26:04.6318711Z     
2021-12-27T16:26:04.6319322Z         .. note:: It is recommended to use one of `assert_allclose`,
2021-12-27T16:26:04.6319975Z                   `assert_array_almost_equal_nulp` or `assert_array_max_ulp`
2021-12-27T16:26:04.6320673Z                   instead of this function for more consistent floating point
2021-12-27T16:26:04.6321242Z                   comparisons.
2021-12-27T16:26:04.6321582Z     
2021-12-27T16:26:04.6322118Z         The test verifies identical shapes and that the elements of ``actual`` and
2021-12-27T16:26:04.6322699Z         ``desired`` satisfy.
2021-12-27T16:26:04.6323052Z     
2021-12-27T16:26:04.6323632Z             ``abs(desired-actual) < 1.5 * 10**(-decimal)``
2021-12-27T16:26:04.6324062Z     
2021-12-27T16:26:04.6324758Z         That is a looser test than originally documented, but agrees with what the
2021-12-27T16:26:04.6325563Z         actual implementation did up to rounding vagaries. An exception is raised
2021-12-27T16:26:04.6326384Z         at shape mismatch or conflicting values. In contrast to the standard usage
2021-12-27T16:26:04.6327144Z         in numpy, NaNs are compared like numbers, no assertion is raised if both
2021-12-27T16:26:04.6327872Z         objects have NaNs in the same positions.
2021-12-27T16:26:04.6328726Z     
2021-12-27T16:26:04.6329056Z         Parameters
2021-12-27T16:26:04.6329571Z         ----------
2021-12-27T16:26:04.6329913Z         x : array_like
2021-12-27T16:26:04.6330335Z             The actual object to check.
2021-12-27T16:26:04.6330740Z         y : array_like
2021-12-27T16:26:04.6331190Z             The desired, expected object.
2021-12-27T16:26:04.6331677Z         decimal : int, optional
2021-12-27T16:26:04.6332159Z             Desired precision, default is 6.
2021-12-27T16:26:04.6332644Z         err_msg : str, optional
2021-12-27T16:26:04.6333164Z           The error message to be printed in case of failure.
2021-12-27T16:26:04.6333708Z         verbose : bool, optional
2021-12-27T16:26:04.6334320Z             If True, the conflicting values are appended to the error message.
2021-12-27T16:26:04.6334827Z     
2021-12-27T16:26:04.6335141Z         Raises
2021-12-27T16:26:04.6335569Z         ------
2021-12-27T16:26:04.6335956Z         AssertionError
2021-12-27T16:26:04.6336534Z             If actual and desired are not equal up to specified precision.
2021-12-27T16:26:04.6337047Z     
2021-12-27T16:26:04.6337348Z         See Also
2021-12-27T16:26:04.6337800Z         --------
2021-12-27T16:26:04.6338372Z         assert_allclose: Compare two array_like objects for equality with desired
2021-12-27T16:26:04.6339055Z                          relative and/or absolute precision.
2021-12-27T16:26:04.6339702Z         assert_array_almost_equal_nulp, assert_array_max_ulp, assert_equal
2021-12-27T16:26:04.6340178Z     
2021-12-27T16:26:04.6340593Z         Examples
2021-12-27T16:26:04.6341065Z         --------
2021-12-27T16:26:04.6341516Z         the first assert does not raise an exception
2021-12-27T16:26:04.6341950Z     
2021-12-27T16:26:04.6342423Z         >>> np.testing.assert_array_almost_equal([1.0,2.333,np.nan],
2021-12-27T16:26:04.6342980Z         ...                                      [1.0,2.333,np.nan])
2021-12-27T16:26:04.6343328Z     
2021-12-27T16:26:04.6343821Z         >>> np.testing.assert_array_almost_equal([1.0,2.33333,np.nan],
2021-12-27T16:26:04.6344403Z         ...                                      [1.0,2.33339,np.nan], decimal=5)
2021-12-27T16:26:04.6344893Z         Traceback (most recent call last):
2021-12-27T16:26:04.6345303Z             ...
2021-12-27T16:26:04.6345677Z         AssertionError:
2021-12-27T16:26:04.6346181Z         Arrays are not almost equal to 5 decimals
2021-12-27T16:26:04.6346628Z         <BLANKLINE>
2021-12-27T16:26:04.6347071Z         Mismatched elements: 1 / 3 (33.3%)
2021-12-27T16:26:04.6347719Z         Max absolute difference: 6.e-05
2021-12-27T16:26:04.6348375Z         Max relative difference: 2.57136612e-05
2021-12-27T16:26:04.6348844Z          x: array([1.     , 2.33333,     nan])
2021-12-27T16:26:04.6349232Z          y: array([1.     , 2.33339,     nan])
2021-12-27T16:26:04.6349571Z     
2021-12-27T16:26:04.6350062Z         >>> np.testing.assert_array_almost_equal([1.0,2.33333,np.nan],
2021-12-27T16:26:04.6350617Z         ...                                      [1.0,2.33333, 5], decimal=5)
2021-12-27T16:26:04.6351098Z         Traceback (most recent call last):
2021-12-27T16:26:04.6351494Z             ...
2021-12-27T16:26:04.6351878Z         AssertionError:
2021-12-27T16:26:04.6352366Z         Arrays are not almost equal to 5 decimals
2021-12-27T16:26:04.6352824Z         <BLANKLINE>
2021-12-27T16:26:04.6353258Z         x and y nan location mismatch:
2021-12-27T16:26:04.6353684Z          x: array([1.     , 2.33333,     nan])
2021-12-27T16:26:04.6354074Z          y: array([1.     , 2.33333, 5.     ])
2021-12-27T16:26:04.6354520Z     
2021-12-27T16:26:04.6354820Z         """
2021-12-27T16:26:04.6355294Z         __tracebackhide__ = True  # Hide traceback for py.test
2021-12-27T16:26:04.6355968Z         from numpy.core import number, float_, result_type, array
2021-12-27T16:26:04.6356699Z         from numpy.core.numerictypes import issubdtype
2021-12-27T16:26:04.6357439Z         from numpy.core.fromnumeric import any as npany
2021-12-27T16:26:04.6358048Z     
2021-12-27T16:26:04.6358378Z         def compare(x, y):
2021-12-27T16:26:04.6358743Z             try:
2021-12-27T16:26:04.6359155Z                 if npany(gisinf(x)) or npany( gisinf(y)):
2021-12-27T16:26:04.6359626Z                     xinfid = gisinf(x)
2021-12-27T16:26:04.6360040Z                     yinfid = gisinf(y)
2021-12-27T16:26:04.6360467Z                     if not (xinfid == yinfid).all():
2021-12-27T16:26:04.6360910Z                         return False
2021-12-27T16:26:04.6361499Z                     # if one item, x and y is +- inf
2021-12-27T16:26:04.6361952Z                     if x.size == y.size == 1:
2021-12-27T16:26:04.6362362Z                         return x == y
2021-12-27T16:26:04.6362736Z                     x = x[~xinfid]
2021-12-27T16:26:04.6363119Z                     y = y[~yinfid]
2021-12-27T16:26:04.6363666Z             except (TypeError, NotImplementedError):
2021-12-27T16:26:04.6364202Z                 pass
2021-12-27T16:26:04.6364505Z     
2021-12-27T16:26:04.6364982Z             # make sure y is an inexact type to avoid abs(MIN_INT); will cause
2021-12-27T16:26:04.6365524Z             # casting of x later.
2021-12-27T16:26:04.6365942Z             dtype = result_type(y, 1.)
2021-12-27T16:26:04.6366415Z             y = np.asanyarray(y, dtype)
2021-12-27T16:26:04.6366952Z             z = abs(x - y)
2021-12-27T16:26:04.6367280Z     
2021-12-27T16:26:04.6367686Z             if not issubdtype(z.dtype, number):
2021-12-27T16:26:04.6368244Z                 z = z.astype(float_)  # handle object arrays
2021-12-27T16:26:04.6368667Z     
2021-12-27T16:26:04.6369180Z             return z < 1.5 * 10.0**(-decimal)
2021-12-27T16:26:04.6369548Z     
2021-12-27T16:26:04.6370055Z >       assert_array_compare(compare, x, y, err_msg=err_msg, verbose=verbose,
2021-12-27T16:26:04.6370947Z                  header=('Arrays are not almost equal to %d decimals' % decimal),
2021-12-27T16:26:04.6371530Z                  precision=decimal)
2021-12-27T16:26:04.6371814Z 
2021-12-27T16:26:04.6372183Z __tracebackhide__ = True
2021-12-27T16:26:04.6372775Z array      = <built-in function array>
2021-12-27T16:26:04.6373435Z compare    = <function assert_array_almost_equal.<locals>.compare at 0x7fb03f921b80>
2021-12-27T16:26:04.6374009Z decimal    = 12
2021-12-27T16:26:04.6374447Z err_msg    = ''
2021-12-27T16:26:04.6374994Z float_     = <class 'numpy.float64'>
2021-12-27T16:26:04.6375558Z issubdtype = <function issubdtype at 0x7fb063d2f670>
2021-12-27T16:26:04.6376144Z npany      = <function any at 0x7fb063ceb160>
2021-12-27T16:26:04.6376781Z number     = <class 'numpy.number'>
2021-12-27T16:26:04.6377334Z result_type = <function result_type at 0x7fb063db4dc0>
2021-12-27T16:26:04.6377835Z verbose    = True
2021-12-27T16:26:04.6378416Z x          = array([[ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01,
2021-12-27T16:26:04.6379021Z         -1.43064736e+02, -5.18971847e-01,  1.23431113e+00,
2021-12-27T16:26:04.6379498Z ...-6.57795524e-01,
2021-12-27T16:26:04.6380039Z         -8.31118732e+00,  1.20375904e-02,  8.34401574e-02,
2021-12-27T16:26:04.6380697Z          1.49383043e-01,  7.59701283e-02]])
2021-12-27T16:26:04.6381073Z y          = array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6381449Z        [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6381811Z        [0., 0., 1., 0., 0., 0., 0., ...   [0., 0., 0., 0., 0., 1., 0., 0.],
2021-12-27T16:26:04.6382182Z        [0., 0., 0., 0., 0., 0., 1., 0.],
2021-12-27T16:26:04.6382527Z        [0., 0., 0., 0., 0., 0., 0., 1.]])
2021-12-27T16:26:04.6382746Z 
2021-12-27T16:26:04.6384003Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py:1046: 
2021-12-27T16:26:04.6385040Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6385286Z 
2021-12-27T16:26:04.6385845Z comparison = <function assert_array_almost_equal.<locals>.compare at 0x7fb03f921b80>
2021-12-27T16:26:04.6386776Z x = array([ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01, -1.43064736e+02,
2021-12-27T16:26:04.6387449Z        -5.18971847e-01,  1.23431113e+00,  3...8381e+01, -6.57795524e-01, -8.31118732e+00,
2021-12-27T16:26:04.6388102Z         1.20375904e-02,  8.34401574e-02,  1.49383043e-01,  7.59701283e-02])
2021-12-27T16:26:04.6388542Z y = array([1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.,
2021-12-27T16:26:04.6388980Z        0., 1., 0., 0., 0., 0., 0., 0., 0., ...1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,
2021-12-27T16:26:04.6389380Z        0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1.])
2021-12-27T16:26:04.6390276Z err_msg = '\nMismatched elements: 64 / 64 (100%)\nMax absolute difference: 297.93150699\nMax relative difference: 11.78455267'
2021-12-27T16:26:04.6391282Z verbose = True, header = 'Arrays are not almost equal to 12 decimals'
2021-12-27T16:26:04.6391903Z precision = 12, equal_nan = True, equal_inf = True
2021-12-27T16:26:04.6392246Z 
2021-12-27T16:26:04.6392965Z     def assert_array_compare(comparison, x, y, err_msg='', verbose=True, header='',
2021-12-27T16:26:04.6393682Z                              precision=6, equal_nan=True, equal_inf=True):
2021-12-27T16:26:04.6394312Z         __tracebackhide__ = True  # Hide traceback for py.test
2021-12-27T16:26:04.6395100Z         from numpy.core import array, array2string, isnan, inf, bool_, errstate, all, max, object_
2021-12-27T16:26:04.6395680Z     
2021-12-27T16:26:04.6396048Z         x = np.asanyarray(x)
2021-12-27T16:26:04.6396476Z         y = np.asanyarray(y)
2021-12-27T16:26:04.6396843Z     
2021-12-27T16:26:04.6397269Z         # original array for output formatting
2021-12-27T16:26:04.6397699Z         ox, oy = x, y
2021-12-27T16:26:04.6398018Z     
2021-12-27T16:26:04.6398346Z         def isnumber(x):
2021-12-27T16:26:04.6399075Z             return x.dtype.char in '?bhilqpBHILQPefdgFDG'
2021-12-27T16:26:04.6399579Z     
2021-12-27T16:26:04.6399910Z         def istime(x):
2021-12-27T16:26:04.6400348Z             return x.dtype.char in "Mm"
2021-12-27T16:26:04.6400723Z     
2021-12-27T16:26:04.6401326Z         def func_assert_same_pos(x, y, func=isnan, hasval='nan'):
2021-12-27T16:26:04.6401826Z             """Handling nan/inf.
2021-12-27T16:26:04.6402179Z     
2021-12-27T16:26:04.6402674Z             Combine results of running func on x and y, checking that they are True
2021-12-27T16:26:04.6403261Z             at the same locations.
2021-12-27T16:26:04.6403626Z     
2021-12-27T16:26:04.6403910Z             """
2021-12-27T16:26:04.6404407Z             __tracebackhide__ = True  # Hide traceback for py.test
2021-12-27T16:26:04.6404871Z     
2021-12-27T16:26:04.6405199Z             x_id = func(x)
2021-12-27T16:26:04.6405543Z             y_id = func(y)
2021-12-27T16:26:04.6406274Z             # We include work-arounds here to handle three types of slightly
2021-12-27T16:26:04.6406942Z             # pathological ndarray subclasses:
2021-12-27T16:26:04.6407559Z             # (1) all() on `masked` array scalars can return masked arrays, so we
2021-12-27T16:26:04.6408080Z             #     use != True
2021-12-27T16:26:04.6408602Z             # (2) __eq__ on some ndarray subclasses returns Python booleans
2021-12-27T16:26:04.6409507Z             #     instead of element-wise comparisons, so we cast to bool_() and
2021-12-27T16:26:04.6410139Z             #     use isinstance(..., bool) checks
2021-12-27T16:26:04.6410967Z             # (3) subclasses with bare-bones __array_function__ implementations may
2021-12-27T16:26:04.6411701Z             #     not implement np.all(), so favor using the .all() method
2021-12-27T16:26:04.6412635Z             # We are not committed to supporting such subclasses, but it's nice to
2021-12-27T16:26:04.6413269Z             # support them if possible.
2021-12-27T16:26:04.6413742Z             if bool_(x_id == y_id).all() != True:
2021-12-27T16:26:04.6414171Z                 msg = build_err_msg([x, y],
2021-12-27T16:26:04.6414869Z                                     err_msg + '\nx and y %s location mismatch:'
2021-12-27T16:26:04.6415543Z                                     % (hasval), verbose=verbose, header=header,
2021-12-27T16:26:04.6416333Z                                     names=('x', 'y'), precision=precision)
2021-12-27T16:26:04.6416897Z                 raise AssertionError(msg)
2021-12-27T16:26:04.6417479Z             # If there is a scalar, then here we know the array has the same
2021-12-27T16:26:04.6418155Z             # flag as it everywhere, so we should return the scalar flag.
2021-12-27T16:26:04.6418757Z             if isinstance(x_id, bool) or x_id.ndim == 0:
2021-12-27T16:26:04.6419238Z                 return bool_(x_id)
2021-12-27T16:26:04.6419712Z             elif isinstance(y_id, bool) or y_id.ndim == 0:
2021-12-27T16:26:04.6420194Z                 return bool_(y_id)
2021-12-27T16:26:04.6420672Z             else:
2021-12-27T16:26:04.6421020Z                 return y_id
2021-12-27T16:26:04.6421353Z     
2021-12-27T16:26:04.6421638Z         try:
2021-12-27T16:26:04.6422104Z             cond = (x.shape == () or y.shape == ()) or x.shape == y.shape
2021-12-27T16:26:04.6422572Z             if not cond:
2021-12-27T16:26:04.6422974Z                 msg = build_err_msg([x, y],
2021-12-27T16:26:04.6423390Z                                     err_msg
2021-12-27T16:26:04.6424059Z                                     + f'\n(shapes {x.shape}, {y.shape} mismatch)',
2021-12-27T16:26:04.6424696Z                                     verbose=verbose, header=header,
2021-12-27T16:26:04.6425443Z                                     names=('x', 'y'), precision=precision)
2021-12-27T16:26:04.6426006Z                 raise AssertionError(msg)
2021-12-27T16:26:04.6426417Z     
2021-12-27T16:26:04.6426766Z             flagged = bool_(False)
2021-12-27T16:26:04.6427232Z             if isnumber(x) and isnumber(y):
2021-12-27T16:26:04.6427659Z                 if equal_nan:
2021-12-27T16:26:04.6428366Z                     flagged = func_assert_same_pos(x, y, func=isnan, hasval='nan')
2021-12-27T16:26:04.6428827Z     
2021-12-27T16:26:04.6429167Z                 if equal_inf:
2021-12-27T16:26:04.6429628Z                     flagged |= func_assert_same_pos(x, y,
2021-12-27T16:26:04.6430139Z                                                     func=lambda xy: xy == +inf,
2021-12-27T16:26:04.6430776Z                                                     hasval='+inf')
2021-12-27T16:26:04.6431248Z                     flagged |= func_assert_same_pos(x, y,
2021-12-27T16:26:04.6431938Z                                                     func=lambda xy: xy == -inf,
2021-12-27T16:26:04.6432574Z                                                     hasval='-inf')
2021-12-27T16:26:04.6432924Z     
2021-12-27T16:26:04.6433304Z             elif istime(x) and istime(y):
2021-12-27T16:26:04.6433901Z                 # If one is datetime64 and the other timedelta64 there is no point
2021-12-27T16:26:04.6434601Z                 if equal_nan and x.dtype.type == y.dtype.type:
2021-12-27T16:26:04.6435266Z                     flagged = func_assert_same_pos(x, y, func=isnat, hasval="NaT")
2021-12-27T16:26:04.6435732Z     
2021-12-27T16:26:04.6436100Z             if flagged.ndim > 0:
2021-12-27T16:26:04.6436546Z                 x, y = x[~flagged], y[~flagged]
2021-12-27T16:26:04.6437093Z                 # Only do the comparison if actual values are left
2021-12-27T16:26:04.6437572Z                 if x.size == 0:
2021-12-27T16:26:04.6437942Z                     return
2021-12-27T16:26:04.6438322Z             elif flagged:
2021-12-27T16:26:04.6438848Z                 # no sense doing comparison if everything is flagged.
2021-12-27T16:26:04.6439367Z                 return
2021-12-27T16:26:04.6439783Z     
2021-12-27T16:26:04.6440155Z             val = comparison(x, y)
2021-12-27T16:26:04.6440502Z     
2021-12-27T16:26:04.6440878Z             if isinstance(val, bool):
2021-12-27T16:26:04.6441293Z                 cond = val
2021-12-27T16:26:04.6441674Z                 reduced = array([val])
2021-12-27T16:26:04.6442064Z             else:
2021-12-27T16:26:04.6442517Z                 reduced = val.ravel()
2021-12-27T16:26:04.6442974Z                 cond = reduced.all()
2021-12-27T16:26:04.6443329Z     
2021-12-27T16:26:04.6443814Z             # The below comparison is a hack to ensure that fully masked
2021-12-27T16:26:04.6444504Z             # results, for which val.ravel().all() returns np.ma.masked,
2021-12-27T16:26:04.6445191Z             # do not trigger a failure (np.ma.masked != True evaluates as
2021-12-27T16:26:04.6445802Z             # np.ma.masked, which is falsy).
2021-12-27T16:26:04.6446236Z             if cond != True:
2021-12-27T16:26:04.6446972Z                 n_mismatch = reduced.size - reduced.sum(dtype=intp)
2021-12-27T16:26:04.6447730Z                 n_elements = flagged.size if flagged.ndim != 0 else reduced.size
2021-12-27T16:26:04.6448419Z                 percent_mismatch = 100 * n_mismatch / n_elements
2021-12-27T16:26:04.6448906Z                 remarks = [
2021-12-27T16:26:04.6449537Z                     'Mismatched elements: {} / {} ({:.3g}%)'.format(
2021-12-27T16:26:04.6450159Z                         n_mismatch, n_elements, percent_mismatch)]
2021-12-27T16:26:04.6450618Z     
2021-12-27T16:26:04.6451214Z                 with errstate(invalid='ignore', divide='ignore'):
2021-12-27T16:26:04.6451972Z                     # ignore errors for non-numeric types
2021-12-27T16:26:04.6452597Z                     with contextlib.suppress(TypeError):
2021-12-27T16:26:04.6453281Z                         error = abs(x - y)
2021-12-27T16:26:04.6453715Z                         max_abs_error = max(error)
2021-12-27T16:26:04.6454415Z                         if getattr(error, 'dtype', object_) == object_:
2021-12-27T16:26:04.6455217Z                             remarks.append('Max absolute difference: '
2021-12-27T16:26:04.6455787Z                                             + str(max_abs_error))
2021-12-27T16:26:04.6456200Z                         else:
2021-12-27T16:26:04.6456872Z                             remarks.append('Max absolute difference: '
2021-12-27T16:26:04.6457519Z                                             + array2string(max_abs_error))
2021-12-27T16:26:04.6457938Z     
2021-12-27T16:26:04.6458433Z                         # note: this definition of relative error matches that one
2021-12-27T16:26:04.6459104Z                         # used by assert_allclose (found in np.isclose)
2021-12-27T16:26:04.6459715Z                         # Filter values where the divisor would be zero
2021-12-27T16:26:04.6460244Z                         nonzero = bool_(y != 0)
2021-12-27T16:26:04.6460770Z                         if all(~nonzero):
2021-12-27T16:26:04.6461213Z                             max_rel_error = array(inf)
2021-12-27T16:26:04.6461635Z                         else:
2021-12-27T16:26:04.6462124Z                             max_rel_error = max(error[nonzero] / abs(y[nonzero]))
2021-12-27T16:26:04.6462924Z                         if getattr(error, 'dtype', object_) == object_:
2021-12-27T16:26:04.6463736Z                             remarks.append('Max relative difference: '
2021-12-27T16:26:04.6464321Z                                             + str(max_rel_error))
2021-12-27T16:26:04.6464733Z                         else:
2021-12-27T16:26:04.6465409Z                             remarks.append('Max relative difference: '
2021-12-27T16:26:04.6466043Z                                             + array2string(max_rel_error))
2021-12-27T16:26:04.6466447Z     
2021-12-27T16:26:04.6466985Z                 err_msg += '\n' + '\n'.join(remarks)
2021-12-27T16:26:04.6467482Z                 msg = build_err_msg([ox, oy], err_msg,
2021-12-27T16:26:04.6468122Z                                     verbose=verbose, header=header,
2021-12-27T16:26:04.6468893Z                                     names=('x', 'y'), precision=precision)
2021-12-27T16:26:04.6469428Z >               raise AssertionError(msg)
2021-12-27T16:26:04.6469923Z E               AssertionError: 
2021-12-27T16:26:04.6470439Z E               Arrays are not almost equal to 12 decimals
2021-12-27T16:26:04.6470927Z E               
2021-12-27T16:26:04.6471342Z E               Mismatched elements: 64 / 64 (100%)
2021-12-27T16:26:04.6471840Z E               Max absolute difference: 297.93150699
2021-12-27T16:26:04.6472364Z E               Max relative difference: 11.78455267
2021-12-27T16:26:04.6473064Z E                x: array([[ 2.674578049108e-01, -2.979315069851e+02, -1.147431619613e+01,
2021-12-27T16:26:04.6473732Z E                       -1.430647360960e+02, -5.189718468224e-01,  1.234311127361e+00,
2021-12-27T16:26:04.6474339Z E                        3.649272904281e+00,  1.032375302713e-02],...
2021-12-27T16:26:04.6474746Z E                y: array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6475137Z E                      [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6475498Z E                      [0., 0., 1., 0., 0., 0., 0., 0.],...
2021-12-27T16:26:04.6475751Z 
2021-12-27T16:26:04.6476123Z __tracebackhide__ = True
2021-12-27T16:26:04.6476594Z all        = <function all at 0x7fb063ceb310>
2021-12-27T16:26:04.6477225Z array      = <built-in function array>
2021-12-27T16:26:04.6477814Z array2string = <function array2string at 0x7fb063d12280>
2021-12-27T16:26:04.6478488Z bool_      = <class 'numpy.bool_'>
2021-12-27T16:26:04.6479135Z comparison = <function assert_array_almost_equal.<locals>.compare at 0x7fb03f921b80>
2021-12-27T16:26:04.6479706Z cond       = False
2021-12-27T16:26:04.6480067Z equal_inf  = True
2021-12-27T16:26:04.6480436Z equal_nan  = True
2021-12-27T16:26:04.6481338Z err_msg    = '\nMismatched elements: 64 / 64 (100%)\nMax absolute difference: 297.93150699\nMax relative difference: 11.78455267'
2021-12-27T16:26:04.6482281Z error      = array([7.32542195e-01, 2.97931507e+02, 1.14743162e+01, 1.43064736e+02,
2021-12-27T16:26:04.6482976Z        5.18971847e-01, 1.23431113e+00, 3.649272...1.66148381e+01, 6.57795524e-01, 8.31118732e+00,
2021-12-27T16:26:04.6483624Z        1.20375904e-02, 8.34401574e-02, 1.49383043e-01, 9.24029872e-01])
2021-12-27T16:26:04.6484269Z errstate   = <class 'numpy.errstate'>
2021-12-27T16:26:04.6484916Z flagged    = array([[False, False, False, False, False, False, False, False],
2021-12-27T16:26:04.6485741Z        [False, False, False, False, False, False, Fal...se, False, False, False, False, False, False, False],
2021-12-27T16:26:04.6486504Z        [False, False, False, False, False, False, False, False]])
2021-12-27T16:26:04.6487283Z func_assert_same_pos = <function assert_array_compare.<locals>.func_assert_same_pos at 0x7fb03d594c10>
2021-12-27T16:26:04.6488182Z header     = 'Arrays are not almost equal to 12 decimals'
2021-12-27T16:26:04.6488634Z inf        = inf
2021-12-27T16:26:04.6489123Z isnan      = <ufunc 'isnan'>
2021-12-27T16:26:04.6489716Z isnumber   = <function assert_array_compare.<locals>.isnumber at 0x7fb03d5949d0>
2021-12-27T16:26:04.6490484Z istime     = <function assert_array_compare.<locals>.istime at 0x7fb03d594dc0>
2021-12-27T16:26:04.6491118Z max        = <function amax at 0x7fb063ceb820>
2021-12-27T16:26:04.6491556Z max_abs_error = 297.9315069850655
2021-12-27T16:26:04.6491948Z max_rel_error = 11.78455266980171
2021-12-27T16:26:04.6493066Z msg        = '\nArrays are not almost equal to 12 decimals\n\nMismatched elements: 64 / 64 (100%)\nMax absolute difference: 297.931...., 0., 0., 0., 0., 0., 0., 0.],\n       [0., 1., 0., 0., 0., 0., 0., 0.],\n       [0., 0., 1., 0., 0., 0., 0., 0.],...'
2021-12-27T16:26:04.6493846Z n_elements = 64
2021-12-27T16:26:04.6494217Z n_mismatch = 64
2021-12-27T16:26:04.6494777Z nonzero    = array([ True, False, False, False, False, False, False, False, False,
2021-12-27T16:26:04.6495651Z         True, False, False, False, False, False,...False, False, False, False, False,
2021-12-27T16:26:04.6496407Z         True, False, False, False, False, False, False, False, False,
2021-12-27T16:26:04.6496898Z         True])
2021-12-27T16:26:04.6497462Z object_    = <class 'numpy.object_'>
2021-12-27T16:26:04.6498114Z ox         = array([[ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01,
2021-12-27T16:26:04.6498817Z         -1.43064736e+02, -5.18971847e-01,  1.23431113e+00,
2021-12-27T16:26:04.6499307Z ...-6.57795524e-01,
2021-12-27T16:26:04.6499831Z         -8.31118732e+00,  1.20375904e-02,  8.34401574e-02,
2021-12-27T16:26:04.6500474Z          1.49383043e-01,  7.59701283e-02]])
2021-12-27T16:26:04.6500860Z oy         = array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6501229Z        [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6501587Z        [0., 0., 1., 0., 0., 0., 0., ...   [0., 0., 0., 0., 0., 1., 0., 0.],
2021-12-27T16:26:04.6501955Z        [0., 0., 0., 0., 0., 0., 1., 0.],
2021-12-27T16:26:04.6502309Z        [0., 0., 0., 0., 0., 0., 0., 1.]])
2021-12-27T16:26:04.6502679Z percent_mismatch = 100.0
2021-12-27T16:26:04.6503085Z precision  = 12
2021-12-27T16:26:04.6503655Z reduced    = array([False, False, False, False, False, False, False, False, False,
2021-12-27T16:26:04.6504461Z        False, False, False, False, False, False,...False, False, False, False, False,
2021-12-27T16:26:04.6505216Z        False, False, False, False, False, False, False, False, False,
2021-12-27T16:26:04.6505706Z        False])
2021-12-27T16:26:04.6506599Z remarks    = ['Mismatched elements: 64 / 64 (100%)', 'Max absolute difference: 297.93150699', 'Max relative difference: 11.78455267']
2021-12-27T16:26:04.6507448Z val        = array([False, False, False, False, False, False, False, False, False,
2021-12-27T16:26:04.6508227Z        False, False, False, False, False, False,...False, False, False, False, False,
2021-12-27T16:26:04.6508977Z        False, False, False, False, False, False, False, False, False,
2021-12-27T16:26:04.6509470Z        False])
2021-12-27T16:26:04.6509825Z verbose    = True
2021-12-27T16:26:04.6510450Z x          = array([ 2.67457805e-01, -2.97931507e+02, -1.14743162e+01, -1.43064736e+02,
2021-12-27T16:26:04.6511147Z        -5.18971847e-01,  1.23431113e+00,  3...8381e+01, -6.57795524e-01, -8.31118732e+00,
2021-12-27T16:26:04.6511806Z         1.20375904e-02,  8.34401574e-02,  1.49383043e-01,  7.59701283e-02])
2021-12-27T16:26:04.6512251Z y          = array([1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.,
2021-12-27T16:26:04.6512684Z        0., 1., 0., 0., 0., 0., 0., 0., 0., ...1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,
2021-12-27T16:26:04.6513077Z        0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1.])
2021-12-27T16:26:04.6513324Z 
2021-12-27T16:26:04.6514556Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py:844: AssertionError
2021-12-27T16:26:04.6515451Z 
2021-12-27T16:26:04.6515974Z The above exception was the direct cause of the following exception:
2021-12-27T16:26:04.6516420Z 
2021-12-27T16:26:04.6517036Z self = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6517569Z 
2021-12-27T16:26:04.6518180Z     @pytest.mark.xfail(sys.platform == 'cygwin',
2021-12-27T16:26:04.6518814Z                        reason="Consistently fails on CI.")
2021-12-27T16:26:04.6519295Z     def test_sq_cases(self):
2021-12-27T16:26:04.6519717Z >       super().test_sq_cases()
2021-12-27T16:26:04.6519986Z 
2021-12-27T16:26:04.6520684Z __class__  = <class 'numpy.linalg.tests.test_linalg.TestInv'>
2021-12-27T16:26:04.6521576Z self       = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6522111Z 
2021-12-27T16:26:04.6523239Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:545: 
2021-12-27T16:26:04.6524329Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6525606Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:360: in test_sq_cases
2021-12-27T16:26:04.6526789Z     self.check_cases(require={'square'},
2021-12-27T16:26:04.6527550Z         self       = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6528295Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6528557Z 
2021-12-27T16:26:04.6529173Z self = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6530113Z require = {'square'}, exclude = {'generalized', 'size-0'}
2021-12-27T16:26:04.6530496Z 
2021-12-27T16:26:04.6530945Z     def check_cases(self, require=set(), exclude=set()):
2021-12-27T16:26:04.6531384Z         """
2021-12-27T16:26:04.6531884Z         Run func on each of the cases with all of the tags in require, and none
2021-12-27T16:26:04.6532443Z         of the tags in exclude
2021-12-27T16:26:04.6532793Z         """
2021-12-27T16:26:04.6533186Z         for case in self.TEST_CASES:
2021-12-27T16:26:04.6533666Z             # filter by require and exclude
2021-12-27T16:26:04.6534179Z             if case.tags & require != require:
2021-12-27T16:26:04.6534612Z                 continue
2021-12-27T16:26:04.6535030Z             if case.tags & exclude:
2021-12-27T16:26:04.6535453Z                 continue
2021-12-27T16:26:04.6535768Z     
2021-12-27T16:26:04.6536075Z             try:
2021-12-27T16:26:04.6536455Z                 case.check(self.do)
2021-12-27T16:26:04.6536926Z             except Exception as e:
2021-12-27T16:26:04.6537537Z                 msg = f'In test case: {case!r}\n\n'
2021-12-27T16:26:04.6538051Z                 msg += traceback.format_exc()
2021-12-27T16:26:04.6538597Z >               raise AssertionError(msg) from e
2021-12-27T16:26:04.6539185Z E               AssertionError: In test case: <LinalgCase: 8x8>
2021-12-27T16:26:04.6539666Z E               
2021-12-27T16:26:04.6540069Z E               Traceback (most recent call last):
2021-12-27T16:26:04.6541671Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 350, in check_cases
2021-12-27T16:26:04.6542826Z E                   case.check(self.do)
2021-12-27T16:26:04.6544254Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 85, in check
2021-12-27T16:26:04.6545438Z E                   do(self.a, self.b, tags=self.tags)
2021-12-27T16:26:04.6546893Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 531, in do
2021-12-27T16:26:04.6548083Z E                   assert_almost_equal(dot_generalized(a, a_inv),
2021-12-27T16:26:04.6551927Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 41, in assert_almost_equal
2021-12-27T16:26:04.6553542Z E                   old_assert_almost_equal(a, b, decimal=decimal, **kw)
2021-12-27T16:26:04.6555313Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py", line 583, in assert_almost_equal
2021-12-27T16:26:04.6556774Z E                   return assert_array_almost_equal(actual, desired, decimal, err_msg)
2021-12-27T16:26:04.6558566Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py", line 1046, in assert_array_almost_equal
2021-12-27T16:26:04.6560208Z E                   assert_array_compare(compare, x, y, err_msg=err_msg, verbose=verbose,
2021-12-27T16:26:04.6562007Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py", line 844, in assert_array_compare
2021-12-27T16:26:04.6563334Z E                   raise AssertionError(msg)
2021-12-27T16:26:04.6564066Z E               AssertionError: 
2021-12-27T16:26:04.6564704Z E               Arrays are not almost equal to 12 decimals
2021-12-27T16:26:04.6565268Z E               
2021-12-27T16:26:04.6565783Z E               Mismatched elements: 64 / 64 (100%)
2021-12-27T16:26:04.6566419Z E               Max absolute difference: 297.93150699
2021-12-27T16:26:04.6567063Z E               Max relative difference: 11.78455267
2021-12-27T16:26:04.6567902Z E                x: array([[ 2.674578049108e-01, -2.979315069851e+02, -1.147431619613e+01,
2021-12-27T16:26:04.6568717Z E                       -1.430647360960e+02, -5.189718468224e-01,  1.234311127361e+00,
2021-12-27T16:26:04.6569457Z E                        3.649272904281e+00,  1.032375302713e-02],...
2021-12-27T16:26:04.6570004Z E                y: array([[1., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6570512Z E                      [0., 1., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.6571013Z E                      [0., 0., 1., 0., 0., 0., 0., 0.],...
2021-12-27T16:26:04.6571388Z 
2021-12-27T16:26:04.6571854Z case       = <LinalgCase: 8x8>
2021-12-27T16:26:04.6572585Z exclude    = {'generalized', 'size-0'}
2021-12-27T16:26:04.6573935Z msg        = 'In test case: <LinalgCase: 8x8>\n\nTraceback (most recent call last):\n  File "/home/runner/work/numpy/numpy/builds/v... 0., 0., 0., 0., 0., 0., 0.],\n       [0., 1., 0., 0., 0., 0., 0., 0.],\n       [0., 0., 1., 0., 0., 0., 0., 0.],...\n'
2021-12-27T16:26:04.6574985Z require    = {'square'}
2021-12-27T16:26:04.6575783Z self       = <numpy.linalg.tests.test_linalg.TestInv object at 0x7fb03f2e8cd0>
2021-12-27T16:26:04.6576447Z 
2021-12-27T16:26:04.6577809Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:354: AssertionError
2021-12-27T16:26:04.6579052Z ____________________________ TestCond.test_sq_cases ____________________________
2021-12-27T16:26:04.6579511Z 
2021-12-27T16:26:04.6580254Z self = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6581526Z require = {'square'}, exclude = {'generalized', 'size-0'}
2021-12-27T16:26:04.6582052Z 
2021-12-27T16:26:04.6582610Z     def check_cases(self, require=set(), exclude=set()):
2021-12-27T16:26:04.6583164Z         """
2021-12-27T16:26:04.6583789Z         Run func on each of the cases with all of the tags in require, and none
2021-12-27T16:26:04.6584463Z         of the tags in exclude
2021-12-27T16:26:04.6584945Z         """
2021-12-27T16:26:04.6585428Z         for case in self.TEST_CASES:
2021-12-27T16:26:04.6586052Z             # filter by require and exclude
2021-12-27T16:26:04.6586688Z             if case.tags & require != require:
2021-12-27T16:26:04.6587255Z                 continue
2021-12-27T16:26:04.6587791Z             if case.tags & exclude:
2021-12-27T16:26:04.6588310Z                 continue
2021-12-27T16:26:04.6588761Z     
2021-12-27T16:26:04.6589171Z             try:
2021-12-27T16:26:04.6589682Z >               case.check(self.do)
2021-12-27T16:26:04.6590071Z 
2021-12-27T16:26:04.6590552Z case       = <LinalgCase: 8x8>
2021-12-27T16:26:04.6591304Z exclude    = {'generalized', 'size-0'}
2021-12-27T16:26:04.6592810Z msg        = 'In test case: <LinalgCase: 8x8>\n\nTraceback (most recent call last):\n  File "/home/runner/work/numpy/numpy/builds/v...rtionError: \nArrays are not almost equal to 11 decimals\n ACTUAL: 1.2217237129204077\n DESIRED: 0.05053833018704241\n'
2021-12-27T16:26:04.6594052Z require    = {'square'}
2021-12-27T16:26:04.6594870Z self       = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6595663Z 
2021-12-27T16:26:04.6596980Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:350: 
2021-12-27T16:26:04.6598080Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6599763Z 
2021-12-27T16:26:04.6600287Z self = <LinalgCase: 8x8>
2021-12-27T16:26:04.6607440Z do = <bound method CondCases.do of <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>>
2021-12-27T16:26:04.6608082Z 
2021-12-27T16:26:04.6608430Z     def check(self, do):
2021-12-27T16:26:04.6608773Z         """
2021-12-27T16:26:04.6609277Z         Run the function `do` on this test case, expanding arguments
2021-12-27T16:26:04.6609757Z         """
2021-12-27T16:26:04.6610166Z >       do(self.a, self.b, tags=self.tags)
2021-12-27T16:26:04.6610483Z 
2021-12-27T16:26:04.6611197Z do         = <bound method CondCases.do of <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>>
2021-12-27T16:26:04.6611993Z self       = <LinalgCase: 8x8>
2021-12-27T16:26:04.6612273Z 
2021-12-27T16:26:04.6613562Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:85: 
2021-12-27T16:26:04.6614529Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6614796Z 
2021-12-27T16:26:04.6615405Z self = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6616094Z a = array([[0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581,
2021-12-27T16:26:04.6616486Z         0.27259261, 0.27646426, 0.80187218],
2021-12-27T16:26:04.6616800Z      ...289],
2021-12-27T16:26:04.6617153Z        [0.79052413, 0.99208147, 0.95880176, 0.79196414, 0.28525096,
2021-12-27T16:26:04.6617508Z         0.62491671, 0.4780938 , 0.19567518]])
2021-12-27T16:26:04.6617898Z b = array([0.38231745, 0.05387369, 0.45164841, 0.98200474, 0.1239427 ,
2021-12-27T16:26:04.6618276Z        0.1193809 , 0.73852306, 0.58730363])
2021-12-27T16:26:04.6618808Z tags = frozenset({'square'})
2021-12-27T16:26:04.6619102Z 
2021-12-27T16:26:04.6619435Z     def do(self, a, b, tags):
2021-12-27T16:26:04.6619888Z         c = asarray(a)  # a might be a matrix
2021-12-27T16:26:04.6620579Z         if 'size-0' in tags:
2021-12-27T16:26:04.6621099Z             assert_raises(LinAlgError, linalg.cond, c)
2021-12-27T16:26:04.6621600Z             return
2021-12-27T16:26:04.6621903Z     
2021-12-27T16:26:04.6622345Z         # +-2 norms
2021-12-27T16:26:04.6622769Z         s = linalg.svd(c, compute_uv=False)
2021-12-27T16:26:04.6623245Z         assert_almost_equal(
2021-12-27T16:26:04.6623834Z             linalg.cond(a), s[..., 0] / s[..., -1],
2021-12-27T16:26:04.6624348Z             single_decimal=5, double_decimal=11)
2021-12-27T16:26:04.6624831Z         assert_almost_equal(
2021-12-27T16:26:04.6625416Z             linalg.cond(a, 2), s[..., 0] / s[..., -1],
2021-12-27T16:26:04.6625922Z             single_decimal=5, double_decimal=11)
2021-12-27T16:26:04.6626387Z         assert_almost_equal(
2021-12-27T16:26:04.6626986Z             linalg.cond(a, -2), s[..., -1] / s[..., 0],
2021-12-27T16:26:04.6627491Z             single_decimal=5, double_decimal=11)
2021-12-27T16:26:04.6627885Z     
2021-12-27T16:26:04.6628211Z         # Other norms
2021-12-27T16:26:04.6628616Z         cinv = np.linalg.inv(c)
2021-12-27T16:26:04.6629056Z         assert_almost_equal(
2021-12-27T16:26:04.6629465Z             linalg.cond(a, 1),
2021-12-27T16:26:04.6630077Z             abs(c).sum(-2).max(-1) * abs(cinv).sum(-2).max(-1),
2021-12-27T16:26:04.6630597Z             single_decimal=5, double_decimal=11)
2021-12-27T16:26:04.6631055Z >       assert_almost_equal(
2021-12-27T16:26:04.6631604Z             linalg.cond(a, -1),
2021-12-27T16:26:04.6632198Z             abs(c).sum(-2).min(-1) * abs(cinv).sum(-2).min(-1),
2021-12-27T16:26:04.6632714Z             single_decimal=5, double_decimal=11)
2021-12-27T16:26:04.6633034Z 
2021-12-27T16:26:04.6633534Z a          = array([[0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581,
2021-12-27T16:26:04.6633930Z         0.27259261, 0.27646426, 0.80187218],
2021-12-27T16:26:04.6634258Z      ...289],
2021-12-27T16:26:04.6634592Z        [0.79052413, 0.99208147, 0.95880176, 0.79196414, 0.28525096,
2021-12-27T16:26:04.6634959Z         0.62491671, 0.4780938 , 0.19567518]])
2021-12-27T16:26:04.6635406Z b          = array([0.38231745, 0.05387369, 0.45164841, 0.98200474, 0.1239427 ,
2021-12-27T16:26:04.6635804Z        0.1193809 , 0.73852306, 0.58730363])
2021-12-27T16:26:04.6636181Z c          = array([[0.19151945, 0.62210877, 0.43772774, 0.78535858, 0.77997581,
2021-12-27T16:26:04.6636582Z         0.27259261, 0.27646426, 0.80187218],
2021-12-27T16:26:04.6636905Z      ...289],
2021-12-27T16:26:04.6637238Z        [0.79052413, 0.99208147, 0.95880176, 0.79196414, 0.28525096,
2021-12-27T16:26:04.6637604Z         0.62491671, 0.4780938 , 0.19567518]])
2021-12-27T16:26:04.6639441Z cinv       = array([[ 2.79048575e-03,  1.24817270e+00, -5.13558583e-03,
2021-12-27T16:26:04.6640068Z          1.31447767e-01,  3.08508254e-01, -1.00996171e+00,
2021-12-27T16:26:04.6640559Z ... 5.53817810e-03,
2021-12-27T16:26:04.6641078Z          0.00000000e+00, -5.21377176e-01,  1.20204199e+00,
2021-12-27T16:26:04.6641620Z          3.21918674e+00,  7.04956963e-01]])
2021-12-27T16:26:04.6642016Z s          = array([4.38971861, 1.22250395, 1.05876066, 0.76100732, 0.60566415,
2021-12-27T16:26:04.6642410Z        0.39957957, 0.25166433, 0.04021937])
2021-12-27T16:26:04.6643069Z self       = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6643891Z tags       = frozenset({'square'})
2021-12-27T16:26:04.6644187Z 
2021-12-27T16:26:04.6645335Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:736: 
2021-12-27T16:26:04.6646284Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6646549Z 
2021-12-27T16:26:04.6646932Z a = 1.2217237129204077, b = 0.05053833018704241, single_decimal = 5
2021-12-27T16:26:04.6647396Z double_decimal = 11, kw = {}, decimal = 11
2021-12-27T16:26:04.6647700Z 
2021-12-27T16:26:04.6648193Z     def assert_almost_equal(a, b, single_decimal=6, double_decimal=12, **kw):
2021-12-27T16:26:04.6648835Z         if asarray(a).dtype.type in (single, csingle):
2021-12-27T16:26:04.6649376Z             decimal = single_decimal
2021-12-27T16:26:04.6649767Z         else:
2021-12-27T16:26:04.6650166Z             decimal = double_decimal
2021-12-27T16:26:04.6650684Z >       old_assert_almost_equal(a, b, decimal=decimal, **kw)
2021-12-27T16:26:04.6651043Z 
2021-12-27T16:26:04.6651348Z a          = 1.2217237129204077
2021-12-27T16:26:04.6651665Z b          = 0.05053833018704241
2021-12-27T16:26:04.6652005Z decimal    = 11
2021-12-27T16:26:04.6652374Z double_decimal = 11
2021-12-27T16:26:04.6652706Z kw         = {}
2021-12-27T16:26:04.6653059Z single_decimal = 5
2021-12-27T16:26:04.6653318Z 
2021-12-27T16:26:04.6654454Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:41: 
2021-12-27T16:26:04.6655412Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6655674Z 
2021-12-27T16:26:04.6656062Z actual = 1.2217237129204077, desired = 0.05053833018704241, decimal = 11
2021-12-27T16:26:04.6656661Z err_msg = '', verbose = True
2021-12-27T16:26:04.6656941Z 
2021-12-27T16:26:04.6657680Z     def assert_almost_equal(actual,desired,decimal=7,err_msg='',verbose=True):
2021-12-27T16:26:04.6658281Z         """
2021-12-27T16:26:04.6658800Z         Raises an AssertionError if two items are not equal up to desired
2021-12-27T16:26:04.6659369Z         precision.
2021-12-27T16:26:04.6659696Z     
2021-12-27T16:26:04.6660326Z         .. note:: It is recommended to use one of `assert_allclose`,
2021-12-27T16:26:04.6667668Z                   `assert_array_almost_equal_nulp` or `assert_array_max_ulp`
2021-12-27T16:26:04.6668379Z                   instead of this function for more consistent floating point
2021-12-27T16:26:04.6668957Z                   comparisons.
2021-12-27T16:26:04.6669299Z     
2021-12-27T16:26:04.6669820Z         The test verifies that the elements of `actual` and `desired` satisfy.
2021-12-27T16:26:04.6670335Z     
2021-12-27T16:26:04.6671095Z             ``abs(desired-actual) < 1.5 * 10**(-decimal)``
2021-12-27T16:26:04.6671520Z     
2021-12-27T16:26:04.6672057Z         That is a looser test than originally documented, but agrees with what the
2021-12-27T16:26:04.6672824Z         actual implementation in `assert_array_almost_equal` did up to rounding
2021-12-27T16:26:04.6673622Z         vagaries. An exception is raised at conflicting values. For ndarrays this
2021-12-27T16:26:04.6674293Z         delegates to assert_array_almost_equal
2021-12-27T16:26:04.6674710Z     
2021-12-27T16:26:04.6675046Z         Parameters
2021-12-27T16:26:04.6675522Z         ----------
2021-12-27T16:26:04.6675898Z         actual : array_like
2021-12-27T16:26:04.6676305Z             The object to check.
2021-12-27T16:26:04.6676725Z         desired : array_like
2021-12-27T16:26:04.6677147Z             The expected object.
2021-12-27T16:26:04.6677597Z         decimal : int, optional
2021-12-27T16:26:04.6678086Z             Desired precision, default is 7.
2021-12-27T16:26:04.6678562Z         err_msg : str, optional
2021-12-27T16:26:04.6679093Z             The error message to be printed in case of failure.
2021-12-27T16:26:04.6679616Z         verbose : bool, optional
2021-12-27T16:26:04.6680233Z             If True, the conflicting values are appended to the error message.
2021-12-27T16:26:04.6680755Z     
2021-12-27T16:26:04.6681052Z         Raises
2021-12-27T16:26:04.6681491Z         ------
2021-12-27T16:26:04.6681859Z         AssertionError
2021-12-27T16:26:04.6682445Z           If actual and desired are not equal up to specified precision.
2021-12-27T16:26:04.6682935Z     
2021-12-27T16:26:04.6683254Z         See Also
2021-12-27T16:26:04.6683689Z         --------
2021-12-27T16:26:04.6684260Z         assert_allclose: Compare two array_like objects for equality with desired
2021-12-27T16:26:04.6684956Z                          relative and/or absolute precision.
2021-12-27T16:26:04.6685585Z         assert_array_almost_equal_nulp, assert_array_max_ulp, assert_equal
2021-12-27T16:26:04.6686084Z     
2021-12-27T16:26:04.6686391Z         Examples
2021-12-27T16:26:04.6686840Z         --------
2021-12-27T16:26:04.6687326Z         >>> from numpy.testing import assert_almost_equal
2021-12-27T16:26:04.6687868Z         >>> assert_almost_equal(2.3333333333333, 2.33333334)
2021-12-27T16:26:04.6688378Z         >>> assert_almost_equal(2.3333333333333, 2.33333334, decimal=10)
2021-12-27T16:26:04.6688888Z         Traceback (most recent call last):
2021-12-27T16:26:04.6689293Z             ...
2021-12-27T16:26:04.6689659Z         AssertionError:
2021-12-27T16:26:04.6690169Z         Arrays are not almost equal to 10 decimals
2021-12-27T16:26:04.6690631Z          ACTUAL: 2.3333333333333
2021-12-27T16:26:04.6690985Z          DESIRED: 2.33333334
2021-12-27T16:26:04.6691313Z     
2021-12-27T16:26:04.6691710Z         >>> assert_almost_equal(np.array([1.0,2.3333333333333]),
2021-12-27T16:26:04.6692220Z         ...                     np.array([1.0,2.33333334]), decimal=9)
2021-12-27T16:26:04.6692711Z         Traceback (most recent call last):
2021-12-27T16:26:04.6693119Z             ...
2021-12-27T16:26:04.6693497Z         AssertionError:
2021-12-27T16:26:04.6693988Z         Arrays are not almost equal to 9 decimals
2021-12-27T16:26:04.6694445Z         <BLANKLINE>
2021-12-27T16:26:04.6694865Z         Mismatched elements: 1 / 2 (50%)
2021-12-27T16:26:04.6695523Z         Max absolute difference: 6.66669964e-09
2021-12-27T16:26:04.6696187Z         Max relative difference: 2.85715698e-09
2021-12-27T16:26:04.6696629Z          x: array([1.         , 2.333333333])
2021-12-27T16:26:04.6697104Z          y: array([1.        , 2.33333334])
2021-12-27T16:26:04.6697425Z     
2021-12-27T16:26:04.6697717Z         """
2021-12-27T16:26:04.6698186Z         __tracebackhide__ = True  # Hide traceback for py.test
2021-12-27T16:26:04.6698764Z         from numpy.core import ndarray
2021-12-27T16:26:04.6699339Z         from numpy.lib import iscomplexobj, real, imag
2021-12-27T16:26:04.6699786Z     
2021-12-27T16:26:04.6700343Z         # Handle complex numbers: separate into real/imag to handle
2021-12-27T16:26:04.6701061Z         # nan/inf/negative zero correctly
2021-12-27T16:26:04.6701716Z         # XXX: catch ValueError for subclasses of ndarray where iscomplex fail
2021-12-27T16:26:04.6702253Z         try:
2021-12-27T16:26:04.6702807Z             usecomplex = iscomplexobj(actual) or iscomplexobj(desired)
2021-12-27T16:26:04.6703421Z         except ValueError:
2021-12-27T16:26:04.6703860Z             usecomplex = False
2021-12-27T16:26:04.6704224Z     
2021-12-27T16:26:04.6704556Z         def _build_err_msg():
2021-12-27T16:26:04.6705310Z             header = ('Arrays are not almost equal to %d decimals' % decimal)
2021-12-27T16:26:04.6706003Z             return build_err_msg([actual, desired], err_msg, verbose=verbose,
2021-12-27T16:26:04.6706595Z                                  header=header)
2021-12-27T16:26:04.6706955Z     
2021-12-27T16:26:04.6707289Z         if usecomplex:
2021-12-27T16:26:04.6707740Z             if iscomplexobj(actual):
2021-12-27T16:26:04.6708201Z                 actualr = real(actual)
2021-12-27T16:26:04.6708642Z                 actuali = imag(actual)
2021-12-27T16:26:04.6709029Z             else:
2021-12-27T16:26:04.6709387Z                 actualr = actual
2021-12-27T16:26:04.6709769Z                 actuali = 0
2021-12-27T16:26:04.6710197Z             if iscomplexobj(desired):
2021-12-27T16:26:04.6710690Z                 desiredr = real(desired)
2021-12-27T16:26:04.6711150Z                 desiredi = imag(desired)
2021-12-27T16:26:04.6711556Z             else:
2021-12-27T16:26:04.6711950Z                 desiredr = desired
2021-12-27T16:26:04.6712353Z                 desiredi = 0
2021-12-27T16:26:04.6712709Z             try:
2021-12-27T16:26:04.6713211Z                 assert_almost_equal(actualr, desiredr, decimal=decimal)
2021-12-27T16:26:04.6713915Z                 assert_almost_equal(actuali, desiredi, decimal=decimal)
2021-12-27T16:26:04.6714510Z             except AssertionError:
2021-12-27T16:26:04.6715071Z                 raise AssertionError(_build_err_msg())
2021-12-27T16:26:04.6715501Z     
2021-12-27T16:26:04.6715927Z         if isinstance(actual, (ndarray, tuple, list)) \
2021-12-27T16:26:04.6716546Z                 or isinstance(desired, (ndarray, tuple, list)):
2021-12-27T16:26:04.6717221Z             return assert_array_almost_equal(actual, desired, decimal, err_msg)
2021-12-27T16:26:04.6717748Z         try:
2021-12-27T16:26:04.6718270Z             # If one of desired/actual is not finite, handle it specially here:
2021-12-27T16:26:04.6718938Z             # check that both are nan if any is a nan, and test for equality
2021-12-27T16:26:04.6719445Z             # otherwise
2021-12-27T16:26:04.6719939Z             if not (gisfinite(desired) and gisfinite(actual)):
2021-12-27T16:26:04.6720515Z                 if gisnan(desired) or gisnan(actual):
2021-12-27T16:26:04.6721049Z                     if not (gisnan(desired) and gisnan(actual)):
2021-12-27T16:26:04.6721636Z                         raise AssertionError(_build_err_msg())
2021-12-27T16:26:04.6722108Z                 else:
2021-12-27T16:26:04.6722504Z                     if not desired == actual:
2021-12-27T16:26:04.6723034Z                         raise AssertionError(_build_err_msg())
2021-12-27T16:26:04.6723491Z                 return
2021-12-27T16:26:04.6724032Z         except (NotImplementedError, TypeError):
2021-12-27T16:26:04.6724596Z             pass
2021-12-27T16:26:04.6725194Z         if abs(desired - actual) >= 1.5 * 10.0**(-decimal):
2021-12-27T16:26:04.6725750Z >           raise AssertionError(_build_err_msg())
2021-12-27T16:26:04.6726371Z E           AssertionError: 
2021-12-27T16:26:04.6726889Z E           Arrays are not almost equal to 11 decimals
2021-12-27T16:26:04.6727335Z E            ACTUAL: 1.2217237129204077
2021-12-27T16:26:04.6727720Z E            DESIRED: 0.05053833018704241
2021-12-27T16:26:04.6727985Z 
2021-12-27T16:26:04.6728342Z __tracebackhide__ = True
2021-12-27T16:26:04.6728965Z _build_err_msg = <function assert_almost_equal.<locals>._build_err_msg at 0x7fb03f9219d0>
2021-12-27T16:26:04.6729613Z actual     = 1.2217237129204077
2021-12-27T16:26:04.6729953Z decimal    = 11
2021-12-27T16:26:04.6730313Z desired    = 0.05053833018704241
2021-12-27T16:26:04.6730784Z err_msg    = ''
2021-12-27T16:26:04.6731213Z imag       = <function imag at 0x7fb063b91f70>
2021-12-27T16:26:04.6731805Z iscomplexobj = <function iscomplexobj at 0x7fb063b943a0>
2021-12-27T16:26:04.6732538Z ndarray    = <class 'numpy.ndarray'>
2021-12-27T16:26:04.6733061Z real       = <function real at 0x7fb063b91dc0>
2021-12-27T16:26:04.6733514Z usecomplex = False
2021-12-27T16:26:04.6733914Z verbose    = True
2021-12-27T16:26:04.6734164Z 
2021-12-27T16:26:04.6735385Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py:599: AssertionError
2021-12-27T16:26:04.6736276Z 
2021-12-27T16:26:04.6736806Z The above exception was the direct cause of the following exception:
2021-12-27T16:26:04.6737237Z 
2021-12-27T16:26:04.6737851Z self = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6738382Z 
2021-12-27T16:26:04.6738718Z     def test_sq_cases(self):
2021-12-27T16:26:04.6739337Z >       self.check_cases(require={'square'},
2021-12-27T16:26:04.6740045Z                          exclude={'generalized', 'size-0'})
2021-12-27T16:26:04.6740469Z 
2021-12-27T16:26:04.6742786Z self       = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6743335Z 
2021-12-27T16:26:04.6744532Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:360: 
2021-12-27T16:26:04.6745494Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6745754Z 
2021-12-27T16:26:04.6746358Z self = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6747304Z require = {'square'}, exclude = {'generalized', 'size-0'}
2021-12-27T16:26:04.6747693Z 
2021-12-27T16:26:04.6748128Z     def check_cases(self, require=set(), exclude=set()):
2021-12-27T16:26:04.6748579Z         """
2021-12-27T16:26:04.6749082Z         Run func on each of the cases with all of the tags in require, and none
2021-12-27T16:26:04.6749627Z         of the tags in exclude
2021-12-27T16:26:04.6749993Z         """
2021-12-27T16:26:04.6750371Z         for case in self.TEST_CASES:
2021-12-27T16:26:04.6750864Z             # filter by require and exclude
2021-12-27T16:26:04.6751362Z             if case.tags & require != require:
2021-12-27T16:26:04.6751810Z                 continue
2021-12-27T16:26:04.6752223Z             if case.tags & exclude:
2021-12-27T16:26:04.6752624Z                 continue
2021-12-27T16:26:04.6752951Z     
2021-12-27T16:26:04.6753239Z             try:
2021-12-27T16:26:04.6753812Z                 case.check(self.do)
2021-12-27T16:26:04.6754268Z             except Exception as e:
2021-12-27T16:26:04.6754896Z                 msg = f'In test case: {case!r}\n\n'
2021-12-27T16:26:04.6755406Z                 msg += traceback.format_exc()
2021-12-27T16:26:04.6755943Z >               raise AssertionError(msg) from e
2021-12-27T16:26:04.6756550Z E               AssertionError: In test case: <LinalgCase: 8x8>
2021-12-27T16:26:04.6757013Z E               
2021-12-27T16:26:04.6757428Z E               Traceback (most recent call last):
2021-12-27T16:26:04.6759052Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 350, in check_cases
2021-12-27T16:26:04.6760207Z E                   case.check(self.do)
2021-12-27T16:26:04.6761660Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 85, in check
2021-12-27T16:26:04.6762836Z E                   do(self.a, self.b, tags=self.tags)
2021-12-27T16:26:04.6764351Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 736, in do
2021-12-27T16:26:04.6765458Z E                   assert_almost_equal(
2021-12-27T16:26:04.6767054Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py", line 41, in assert_almost_equal
2021-12-27T16:26:04.6768329Z E                   old_assert_almost_equal(a, b, decimal=decimal, **kw)
2021-12-27T16:26:04.6769883Z E                 File "/home/runner/work/numpy/numpy/builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/testing/_private/utils.py", line 599, in assert_almost_equal
2021-12-27T16:26:04.6771125Z E                   raise AssertionError(_build_err_msg())
2021-12-27T16:26:04.6771662Z E               AssertionError: 
2021-12-27T16:26:04.6772163Z E               Arrays are not almost equal to 11 decimals
2021-12-27T16:26:04.6772632Z E                ACTUAL: 1.2217237129204077
2021-12-27T16:26:04.6773013Z E                DESIRED: 0.05053833018704241
2021-12-27T16:26:04.6773273Z 
2021-12-27T16:26:04.6773633Z case       = <LinalgCase: 8x8>
2021-12-27T16:26:04.6774231Z exclude    = {'generalized', 'size-0'}
2021-12-27T16:26:04.6775599Z msg        = 'In test case: <LinalgCase: 8x8>\n\nTraceback (most recent call last):\n  File "/home/runner/work/numpy/numpy/builds/v...rtionError: \nArrays are not almost equal to 11 decimals\n ACTUAL: 1.2217237129204077\n DESIRED: 0.05053833018704241\n'
2021-12-27T16:26:04.6776687Z require    = {'square'}
2021-12-27T16:26:04.6777360Z self       = <numpy.linalg.tests.test_linalg.TestCond object at 0x7fb03d2931c0>
2021-12-27T16:26:04.6784962Z 
2021-12-27T16:26:04.6786553Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:354: AssertionError
2021-12-27T16:26:04.6787971Z _______________ TestCholesky.test_basic_property[float32-shape3] _______________
2021-12-27T16:26:04.6788436Z 
2021-12-27T16:26:04.6789095Z self = <numpy.linalg.tests.test_linalg.TestCholesky object at 0x7fb03d2808e0>
2021-12-27T16:26:04.6790034Z shape = (50, 50), dtype = <class 'numpy.float32'>
2021-12-27T16:26:04.6790363Z 
2021-12-27T16:26:04.6790752Z     @pytest.mark.xfail(
2021-12-27T16:26:04.6791494Z         sys.platform == 'cygwin', reason="Consistently fails in CI"
2021-12-27T16:26:04.6791991Z     )
2021-12-27T16:26:04.6792448Z     @pytest.mark.parametrize(
2021-12-27T16:26:04.6793121Z         'shape', [(1, 1), (2, 2), (3, 3), (50, 50), (3, 10, 10)]
2021-12-27T16:26:04.6793475Z     )
2021-12-27T16:26:04.6793912Z     @pytest.mark.parametrize(
2021-12-27T16:26:04.6794781Z         'dtype', (np.float32, np.float64, np.complex64, np.complex128)
2021-12-27T16:26:04.6795315Z     )
2021-12-27T16:26:04.6795750Z     def test_basic_property(self, shape, dtype):
2021-12-27T16:26:04.6796227Z         # Check A = L L^H
2021-12-27T16:26:04.6796619Z         np.random.seed(1)
2021-12-27T16:26:04.6797092Z         a = np.random.randn(*shape)
2021-12-27T16:26:04.6797691Z         if np.issubdtype(dtype, np.complexfloating):
2021-12-27T16:26:04.6798318Z             a = a + 1j*np.random.randn(*shape)
2021-12-27T16:26:04.6798721Z     
2021-12-27T16:26:04.6799068Z         t = list(range(len(shape)))
2021-12-27T16:26:04.6799569Z         t[-2:] = -1, -2
2021-12-27T16:26:04.6799866Z     
2021-12-27T16:26:04.6800420Z         a = np.matmul(a.transpose(t).conj(), a)
2021-12-27T16:26:04.6800918Z         a = np.asarray(a, dtype=dtype)
2021-12-27T16:26:04.6801302Z     
2021-12-27T16:26:04.6801699Z >       c = np.linalg.cholesky(a)
2021-12-27T16:26:04.6802005Z 
2021-12-27T16:26:04.6802562Z a          = array([[ 44.06959   ,  -1.2917366 ,  -0.61489445, ...,  -1.7078063 ,
2021-12-27T16:26:04.6803087Z          -0.06026965,   3.5968263 ],
2021-12-27T16:26:04.6803740Z        [ -1....     [  3.5968263 ,  -0.22433573,  -2.8806841 , ...,   6.9285684 ,
2021-12-27T16:26:04.6804317Z         -11.654396  ,  47.500088  ]], dtype=float32)
2021-12-27T16:26:04.6804902Z dtype      = <class 'numpy.float32'>
2021-12-27T16:26:04.6805687Z self       = <numpy.linalg.tests.test_linalg.TestCholesky object at 0x7fb03d2808e0>
2021-12-27T16:26:04.6806367Z shape      = (50, 50)
2021-12-27T16:26:04.6806819Z t          = [-1, -2]
2021-12-27T16:26:04.6807042Z 
2021-12-27T16:26:04.6808173Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:1808: 
2021-12-27T16:26:04.6809127Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6809607Z <__array_function__ internals>:180: in cholesky
2021-12-27T16:26:04.6810017Z     ???
2021-12-27T16:26:04.6810594Z         args       = (array([[ 44.06959   ,  -1.2917366 ,  -0.61489445, ...,  -1.7078063 ,
2021-12-27T16:26:04.6811123Z          -0.06026965,   3.5968263 ],
2021-12-27T16:26:04.6811683Z        [ -1...   [  3.5968263 ,  -0.22433573,  -2.8806841 , ...,   6.9285684 ,
2021-12-27T16:26:04.6812273Z         -11.654396  ,  47.500088  ]], dtype=float32),)
2021-12-27T16:26:04.6812836Z         dispatcher = <function _unary_dispatcher at 0x7fb063b53280>
2021-12-27T16:26:04.6813523Z         implementation = <function cholesky at 0x7fb063b53790>
2021-12-27T16:26:04.6814024Z         kwargs     = {}
2021-12-27T16:26:04.6814498Z         public_api = <function cholesky at 0x7fb063b53820>
2021-12-27T16:26:04.6815264Z         relevant_args = (array([[ 44.06959   ,  -1.2917366 ,  -0.61489445, ...,  -1.7078063 ,
2021-12-27T16:26:04.6815826Z          -0.06026965,   3.5968263 ],
2021-12-27T16:26:04.6816382Z        [ -1...   [  3.5968263 ,  -0.22433573,  -2.8806841 , ...,   6.9285684 ,
2021-12-27T16:26:04.6816948Z         -11.654396  ,  47.500088  ]], dtype=float32),)
2021-12-27T16:26:04.6818173Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/linalg.py:769: in cholesky
2021-12-27T16:26:04.6819265Z     r = gufunc(a, signature=signature, extobj=extobj)
2021-12-27T16:26:04.6819989Z         a          = array([[ 44.06959   ,  -1.2917366 ,  -0.61489445, ...,  -1.7078063 ,
2021-12-27T16:26:04.6820689Z          -0.06026965,   3.5968263 ],
2021-12-27T16:26:04.6821239Z        [ -1....     [  3.5968263 ,  -0.22433573,  -2.8806841 , ...,   6.9285684 ,
2021-12-27T16:26:04.6821821Z         -11.654396  ,  47.500088  ]], dtype=float32)
2021-12-27T16:26:04.6822436Z         extobj     = [8192, 1536, <function _raise_linalgerror_nonposdef at 0x7fb063b490d0>]
2021-12-27T16:26:04.6823169Z         gufunc     = <ufunc 'cholesky_lo'>
2021-12-27T16:26:04.6823805Z         result_t   = <class 'numpy.float32'>
2021-12-27T16:26:04.6824403Z         signature  = 'd->d'
2021-12-27T16:26:04.6824990Z         t          = <class 'numpy.float64'>
2021-12-27T16:26:04.6825844Z         wrap       = <built-in method __array_prepare__ of numpy.ndarray object at 0x7fb03f21ddb0>
2021-12-27T16:26:04.6826477Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6826737Z 
2021-12-27T16:26:04.6827217Z err = 'invalid value', flag = 8
2021-12-27T16:26:04.6827482Z 
2021-12-27T16:26:04.6827927Z     def _raise_linalgerror_nonposdef(err, flag):
2021-12-27T16:26:04.6828549Z >       raise LinAlgError("Matrix is not positive definite")
2021-12-27T16:26:04.6829317Z E       numpy.linalg.LinAlgError: Matrix is not positive definite
2021-12-27T16:26:04.6829804Z 
2021-12-27T16:26:04.6830367Z err        = 'invalid value'
2021-12-27T16:26:04.6830744Z flag       = 8
2021-12-27T16:26:04.6830968Z 
2021-12-27T16:26:04.6832119Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/linalg.py:91: LinAlgError
2021-12-27T16:26:04.6833464Z _______________ TestCholesky.test_basic_property[float64-shape3] _______________
2021-12-27T16:26:04.6834007Z 
2021-12-27T16:26:04.6834646Z self = <numpy.linalg.tests.test_linalg.TestCholesky object at 0x7fb03d288a30>
2021-12-27T16:26:04.6835578Z shape = (50, 50), dtype = <class 'numpy.float64'>
2021-12-27T16:26:04.6835919Z 
2021-12-27T16:26:04.6836292Z     @pytest.mark.xfail(
2021-12-27T16:26:04.6837049Z         sys.platform == 'cygwin', reason="Consistently fails in CI"
2021-12-27T16:26:04.6837544Z     )
2021-12-27T16:26:04.6837985Z     @pytest.mark.parametrize(
2021-12-27T16:26:04.6838667Z         'shape', [(1, 1), (2, 2), (3, 3), (50, 50), (3, 10, 10)]
2021-12-27T16:26:04.6839004Z     )
2021-12-27T16:26:04.6839460Z     @pytest.mark.parametrize(
2021-12-27T16:26:04.6840314Z         'dtype', (np.float32, np.float64, np.complex64, np.complex128)
2021-12-27T16:26:04.6840850Z     )
2021-12-27T16:26:04.6841292Z     def test_basic_property(self, shape, dtype):
2021-12-27T16:26:04.6841753Z         # Check A = L L^H
2021-12-27T16:26:04.6842158Z         np.random.seed(1)
2021-12-27T16:26:04.6842626Z         a = np.random.randn(*shape)
2021-12-27T16:26:04.6843236Z         if np.issubdtype(dtype, np.complexfloating):
2021-12-27T16:26:04.6843863Z             a = a + 1j*np.random.randn(*shape)
2021-12-27T16:26:04.6844256Z     
2021-12-27T16:26:04.6844618Z         t = list(range(len(shape)))
2021-12-27T16:26:04.6845112Z         t[-2:] = -1, -2
2021-12-27T16:26:04.6845424Z     
2021-12-27T16:26:04.6845819Z         a = np.matmul(a.transpose(t).conj(), a)
2021-12-27T16:26:04.6846322Z         a = np.asarray(a, dtype=dtype)
2021-12-27T16:26:04.6846710Z     
2021-12-27T16:26:04.6847095Z >       c = np.linalg.cholesky(a)
2021-12-27T16:26:04.6847417Z 
2021-12-27T16:26:04.6847946Z a          = array([[ 44.06959316,  -1.2917366 ,  -0.61489444, ...,  -1.70780635,
2021-12-27T16:26:04.6848472Z          -0.06026965,   3.59682622],
2021-12-27T16:26:04.6848927Z        [ -1....1.65439564],
2021-12-27T16:26:04.6849444Z        [  3.59682622,  -0.22433573,  -2.88068414, ...,   6.92856841,
2021-12-27T16:26:04.6849947Z         -11.65439564,  47.50008934]])
2021-12-27T16:26:04.6850489Z dtype      = <class 'numpy.float64'>
2021-12-27T16:26:04.6851266Z self       = <numpy.linalg.tests.test_linalg.TestCholesky object at 0x7fb03d288a30>
2021-12-27T16:26:04.6851954Z shape      = (50, 50)
2021-12-27T16:26:04.6852389Z t          = [-1, -2]
2021-12-27T16:26:04.6852614Z 
2021-12-27T16:26:04.6853749Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:1808: 
2021-12-27T16:26:04.6854693Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.6855173Z <__array_function__ internals>:180: in cholesky
2021-12-27T16:26:04.6855583Z     ???
2021-12-27T16:26:04.6856159Z         args       = (array([[ 44.06959316,  -1.2917366 ,  -0.61489444, ...,  -1.70780635,
2021-12-27T16:26:04.6856692Z          -0.06026965,   3.59682622],
2021-12-27T16:26:04.6857134Z        [ -1...65439564],
2021-12-27T16:26:04.6857657Z        [  3.59682622,  -0.22433573,  -2.88068414, ...,   6.92856841,
2021-12-27T16:26:04.6858157Z         -11.65439564,  47.50008934]]),)
2021-12-27T16:26:04.6858685Z         dispatcher = <function _unary_dispatcher at 0x7fb063b53280>
2021-12-27T16:26:04.6859360Z         implementation = <function cholesky at 0x7fb063b53790>
2021-12-27T16:26:04.6859873Z         kwargs     = {}
2021-12-27T16:26:04.6861566Z         public_api = <function cholesky at 0x7fb063b53820>
2021-12-27T16:26:04.6862375Z         relevant_args = (array([[ 44.06959316,  -1.2917366 ,  -0.61489444, ...,  -1.70780635,
2021-12-27T16:26:04.6862954Z          -0.06026965,   3.59682622],
2021-12-27T16:26:04.6863527Z        [ -1...65439564],
2021-12-27T16:26:04.6864079Z        [  3.59682622,  -0.22433573,  -2.88068414, ...,   6.92856841,
2021-12-27T16:26:04.6864582Z         -11.65439564,  47.50008934]]),)
2021-12-27T16:26:04.6865753Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/linalg.py:769: in cholesky
2021-12-27T16:26:04.6866918Z     r = gufunc(a, signature=signature, extobj=extobj)
2021-12-27T16:26:04.6867645Z         a          = array([[ 44.06959316,  -1.2917366 ,  -0.61489444, ...,  -1.70780635,
2021-12-27T16:26:04.6868177Z          -0.06026965,   3.59682622],
2021-12-27T16:26:04.6868638Z        [ -1....1.65439564],
2021-12-27T16:26:04.6869155Z        [  3.59682622,  -0.22433573,  -2.88068414, ...,   6.92856841,
2021-12-27T16:26:04.6869657Z         -11.65439564,  47.50008934]])
2021-12-27T16:26:04.6870206Z         extobj     = [8192, 1536, <function _raise_linalgerror_nonposdef at 0x7fb063b490d0>]
2021-12-27T16:26:04.6870955Z         gufunc     = <ufunc 'cholesky_lo'>
2021-12-27T16:26:04.6871575Z         result_t   = <class 'numpy.float64'>
2021-12-27T16:26:04.6872156Z         signature  = 'd->d'
2021-12-27T16:26:04.6872737Z         t          = <class 'numpy.float64'>
2021-12-27T16:26:04.7557194Z         wrap       = <built-in method __array_prepare__ of numpy.ndarray object at 0x7fb03db13c30>
2021-12-27T16:26:04.7557994Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
2021-12-27T16:26:04.7558304Z 
2021-12-27T16:26:04.7558887Z err = 'invalid value', flag = 8
2021-12-27T16:26:04.7559211Z 
2021-12-27T16:26:04.7559711Z     def _raise_linalgerror_nonposdef(err, flag):
2021-12-27T16:26:04.7560448Z >       raise LinAlgError("Matrix is not positive definite")
2021-12-27T16:26:04.7561315Z E       numpy.linalg.LinAlgError: Matrix is not positive definite
2021-12-27T16:26:04.7561876Z 
2021-12-27T16:26:04.7562426Z err        = 'invalid value'
2021-12-27T16:26:04.7562834Z flag       = 8
2021-12-27T16:26:04.7563095Z 
2021-12-27T16:26:04.7564441Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/linalg.py:91: LinAlgError
2021-12-27T16:26:04.7565736Z _____________________ TestTensorinv.test_tensorinv_result ______________________
2021-12-27T16:26:04.7566210Z 
2021-12-27T16:26:04.7566981Z self = <numpy.linalg.tests.test_linalg.TestTensorinv object at 0x7fb03d23e370>
2021-12-27T16:26:04.7567653Z 
2021-12-27T16:26:04.7568087Z     def test_tensorinv_result(self):
2021-12-27T16:26:04.7568655Z         # mimic a docstring example
2021-12-27T16:26:04.7569128Z         a = np.eye(24)
2021-12-27T16:26:04.7569549Z         a.shape = (24, 8, 3)
2021-12-27T16:26:04.7570063Z         ainv = linalg.tensorinv(a, ind=1)
2021-12-27T16:26:04.7570565Z         b = np.ones(24)
2021-12-27T16:26:04.7571268Z >       assert_allclose(np.tensordot(ainv, b, 1), np.linalg.tensorsolve(a, b))
2021-12-27T16:26:04.7572013Z E       AssertionError: 
2021-12-27T16:26:04.7572813Z E       Not equal to tolerance rtol=1e-07, atol=0
2021-12-27T16:26:04.7573280Z E       
2021-12-27T16:26:04.7573731Z E       Mismatched elements: 22 / 24 (91.7%)
2021-12-27T16:26:04.7574297Z E       Max absolute difference: 1.
2021-12-27T16:26:04.7574844Z E       Max relative difference: 1.
2021-12-27T16:26:04.7575333Z E        x: array([[1., 0., 0.],
2021-12-27T16:26:04.7575713Z E              [0., 0., 0.],
2021-12-27T16:26:04.7576084Z E              [0., 0., 0.],...
2021-12-27T16:26:04.7576462Z E        y: array([[1., 1., 1.],
2021-12-27T16:26:04.7576847Z E              [1., 1., 1.],
2021-12-27T16:26:04.7577221Z E              [1., 1., 1.],...
2021-12-27T16:26:04.7577466Z 
2021-12-27T16:26:04.7577829Z a          = array([[[1., 0., 0.],
2021-12-27T16:26:04.7578213Z         [0., 0., 0.],
2021-12-27T16:26:04.7578556Z         [0., 0., 0.],
2021-12-27T16:26:04.7578909Z         [0., 0., 0.],
2021-12-27T16:26:04.7579247Z         [0., 0., 0.],
2021-12-27T16:26:04.7579601Z         ...., 0.],
2021-12-27T16:26:04.7580237Z         [0., 0., 0.],
2021-12-27T16:26:04.7580801Z         [0., 0., 0.],
2021-12-27T16:26:04.7581140Z         [0., 0., 0.],
2021-12-27T16:26:04.7581493Z         [0., 0., 0.],
2021-12-27T16:26:04.7581852Z         [0., 0., 1.]]])
2021-12-27T16:26:04.7582278Z ainv       = array([[[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
2021-12-27T16:26:04.7582740Z          0., 0., 0., 0., 0., 0., 0., 0.],
2021-12-27T16:26:04.7583206Z    ...],
2021-12-27T16:26:04.7583600Z         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
2021-12-27T16:26:04.7584086Z          0., 0., 0., 0., 0., 0., 0., 1.]]])
2021-12-27T16:26:04.7584529Z b          = array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
2021-12-27T16:26:04.7584971Z        1., 1., 1., 1., 1., 1., 1.])
2021-12-27T16:26:04.7585764Z self       = <numpy.linalg.tests.test_linalg.TestTensorinv object at 0x7fb03d23e370>
2021-12-27T16:26:04.7586439Z 
2021-12-27T16:26:04.7587939Z ../../builds/venv/lib/python3.8/site-packages/numpy-1.23.0.dev0+303.g486a577ee-py3.8-linux-x86_64.egg/numpy/linalg/tests/test_linalg.py:2118: AssertionError

@mattip
Copy link
Member

mattip commented Dec 30, 2021

On my machine 0.3.19 passes. Testing shows

NumPy CPU features:  SSE SSE2 SSE3 SSSE3* SSE41* POPCNT* SSE42* AVX* F16C* FMA3* AVX2* AVX512F? AVX512CD? AVX512_KNL? AVX512_KNM? AVX512_SKX? AVX512_CLX? AVX512_CNL? AVX512_ICL?

where on the failing smoke test I see

NumPy CPU features:  SSE SSE2 SSE3 SSSE3* SSE41* POPCNT* SSE42* AVX* F16C* FMA3* AVX2* AVX512F* AVX512CD* AVX512_KNL? AVX512_KNM? AVX512_SKX* AVX512_CLX? AVX512_CNL? AVX512_ICL?

So maybe the difference is AVX512 intrinsics, the failing machine has AVX512F, AVX512CD, AVX512_KNL, AVX512_SKX.

@martin-frbg
Copy link

There is one elusive (gcc 7.5 miscompilation ?) issue with AVX512, (probably) related to the 16x2 DGEMM kernel, but the relevant changes go back to 0.3.16. What could be different is that - assuming your MacPython build is gmake with DYNAMIC_ARCH - 0.3.19 will use the earlier 4x8 DGEMM kernel from 0.3.8 as a workaround. Unfortunately I cannot reproduce the problem on my SkylakeX, I only saw it as occasional CI failures with Intel SDE in an ubuntu-based container.

@rgommers
Copy link
Member

@mattip I tried to test the way you suggested, but doesn't quite work (I only have conda installs lying around), so I'm not going to be all that helpful today:

Downloaded openblas-v0.3.19-manylinux1_i686.tar.gz from https://anaconda.org/multibuild-wheels-staging/openblas-libs/files

My site.cfg:

[openblas]
libraries = openblas
library_dirs = /home/rgommers/Downloads/openblas0319/local/lib
include_dirs = /home/rgommers/oDownloads/penblas0319/local/include
runtime_library_dirs = /home/rgommers/Downloads/openblas0319/local/lib

Build log output:

INFO: /home/rgommers/anaconda3/envs/numpy-dev/bin/x86_64-conda-linux-gnu-cc /tmp/tmpquq5mazo/tmp/tmpquq5mazo/source.o -L/home/rgommers/Downloads/openblas0319/local/lib -lopenblas -o /tmp/tmpquq5mazo/a.out
/home/rgommers/anaconda3/envs/numpy-dev/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: skipping incompatible /home/rgommers/Downloads/openblas0319/local/lib/libopenblas.so when searching for -lopenblas
/home/rgommers/anaconda3/envs/numpy-dev/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: skipping incompatible /home/rgommers/Downloads/openblas0319/local/lib/libopenblas.a when searching for -lopenblas
/home/rgommers/anaconda3/envs/numpy-dev/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: cannot find -lopenblas
/home/rgommers/anaconda3/envs/numpy-dev/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: skipping incompatible /home/rgommers/Downloads/openblas0319/local/lib/libopenblas.so when searching for -lopenblas
collect2: error: ld returned 1 exit status
...
# Etc - uses OpenBLAS from the conda env.

Not all that surprising I guess, the manylinux mangling doesn't seem to work with the conda-forge compiler toolchain.

@mattip
Copy link
Member

mattip commented Dec 30, 2021

Are you sure you want the i686 version? You are using an x86_64 compiler, so maybe you want openblas-v0.3.19-manylinux2014_x86_64.tar.gz or openblas-v0.3.19-manylinux1_x86_64.tar.gz instead

@mattip
Copy link
Member

mattip commented Dec 30, 2021

I suggested PyPI change its table layout with clearly labeled

Python tag ABI tag Platform tag

to prevent this kind of confusion, maybe anaconda.org should use one as well.

@rgommers
Copy link
Member

Are you sure you want the i686 version?

No I wasn't, just being dumb. That said, the x86_64 version also doesn't work :

/home/rgommers/anaconda3/envs/numpy-dev/bin/../lib/gcc/x86_64-conda-linux-gnu/9.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/rgommers/Downloads/openblas0319/local/lib/libopenblas.so: undefined reference to `_gfortran_concat_string@GFORTRAN_1.0'
collect2: error: ld returned 1 exit status

Pretty clear what's going on there .... this is why we bundle a gfortran runtime into our wheels. Then grabbed a libgfortran.so, messed with:

export NPY_USE_BLAS_ILP64=1
export NPY_BLAS_ILP64_ORDER=openblas64_
export NPY_LAPACK_ILP64_ORDER=openblas64_

Etc. - still no luck. This is going to be too much trouble, I'll wait on conda-forge/openblas-feedstock#130.

@mattip
Copy link
Member

mattip commented Dec 30, 2021

OK, sorry for the mess.

@charris
Copy link
Member

charris commented Jan 16, 2022

close/reopen

@charris charris closed this Jan 16, 2022
@charris charris reopened this Jan 16, 2022
@charris
Copy link
Member

charris commented Jan 16, 2022

Should this be closed? The cygwin test is now passing in main. @mattip Do you recall what changed?

@mattip
Copy link
Member

mattip commented Jan 16, 2022

The problematic tests are skipped on cygwin after PR #20654. OpenBLAS 0.3.19 is still failing to work on AVX512_SKX, but I don't have access to a machine with that architecture to debug it.

@martin-frbg
Copy link

AVX512_SKX failure is probably fixed by OpenMathLib/OpenBLAS#3510 and 3511 , unfortunately there is another open issue involving AVX512 that I cannot reproduce on my (small) machine and the original reporter has gone quiet

@mattip
Copy link
Member

mattip commented Jan 18, 2022

Trying with those fixes, maybe we will have some luck

@mattip
Copy link
Member

mattip commented Jan 18, 2022

From the comment at the top of the PR

Running the CI on this PR is one way to narrow down the Cygwin problems addressed in PR #20654.
If this build also has four failures, then OpenBLAS is probably the problem.

The build with OpenBLAS 0.3.19 had failures. After merging the post-0.3.19 fixes from OpenBLAS tests pass. I think that since we are at the beginning of a development cycle we should use this 0.3.19-dev version of OpenBLAS so it gets some exposure.

Any thoughts?

@charris
Copy link
Member

charris commented Jan 18, 2022

Any thoughts?

Sounds good to me.

@mattip mattip merged commit 19989c2 into numpy:main Jan 19, 2022
@mattip
Copy link
Member

mattip commented Jan 19, 2022

Thanks @DWesl

@DWesl DWesl deleted the maint-update-openblas branch January 29, 2022 16:03
DWesl added a commit to DWesl/numpy that referenced this pull request Jul 5, 2022
This was removed a few months ago to avoid failures with a previous version (numpy#20654, numpy#20660), necessitating the use of the Netlib reference BLAS instead (numpy#20669).  The Cygwin OpenBLAS implementation has updated to 0.3.20 since then (https://cygwin.com/cgi-bin2/package-grep.cgi?grep=openblas&arch=x86_64), so using OpenBLAS again should be fine.
NamamiShanker pushed a commit to NamamiShanker/numpy that referenced this pull request Jul 13, 2022
This was removed a few months ago to avoid failures with a previous version (numpy#20654, numpy#20660), necessitating the use of the Netlib reference BLAS instead (numpy#20669).  The Cygwin OpenBLAS implementation has updated to 0.3.20 since then (https://cygwin.com/cgi-bin2/package-grep.cgi?grep=openblas&arch=x86_64), so using OpenBLAS again should be fine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants