[SciPy-Dev] suitesparse vs scipy

Jack Howarth howarth@bromo.med.uc....
Tue Aug 30 11:59:12 CDT 2011


On Tue, Aug 30, 2011 at 01:32:09PM +0000, Pauli Virtanen wrote:
> Tue, 30 Aug 2011 08:55:15 -0400, Jack Howarth wrote:
> [clip]
> > On x86_64-apple-darwin11, building scypy 0.9.0 against python2.7
> > using the clang compilers and gfortran from FSF gcc 4.6.1, I get the following
> > testsuite results...
> [clip]
> > ======================================================================
> > FAIL: test_dot (test_blas.TestFBLAS1Simple)
> > ----------------------------------------------------------------------
> > Traceback (most recent call last):
> >   File
> >   "/sw/lib/python2.7/site-packages/scipy/lib/blas/tests/test_blas.py",
> >   line 67, in test_dot
> >     assert_almost_equal(f([3,-4,5],[2,5,1]),-9)
> >   File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line
> >   468, in assert_almost_equal
> >     raise AssertionError(msg)
> > AssertionError:
> > Arrays are not almost equal to 7 decimals
> >  ACTUAL: 0.0
> >  DESIRED: -9
> 
> Does Numpy's test suite pass?

On x86_64-apple-darwin10, numpy passes its testsuite...

[frodo:~] howarth% python2.7
Python 2.7.2 (default, Aug  4 2011, 09:22:24) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.test()
Running unit tests for numpy
NumPy version 1.6.0
NumPy is installed in /sw/lib/python2.7/site-packages/numpy
Python version 2.7.2 (default, Aug  4 2011, 09:22:24) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
nose version 1.1.2
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................../sw/lib/python2.7/site-packages/numpy/core/numeric.py:1920: RuntimeWarning: invalid value encountered in absolute
  return all(less_equal(absolute(x-y), atol + rtol * absolute(y)))
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................K.................................................................................................K......................K...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................S.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 3529 tests in 34.328s

OK (KNOWNFAIL=3, SKIP=1)
<nose.result.TextTestResult run=3529 errors=0 failures=0>
>>> 

whereas on x86_64-apple-darwin11 (building with clang), numpy fails...

[GCC 4.2.1 Compatible Apple Clang 2.1 (tags/Apple/clang-163.7.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.test()
Running unit tests for numpy
NumPy version 1.6.0
NumPy is installed in /sw/lib/python2.7/site-packages/numpy
Python version 2.7.2 (default, Jul 21 2011, 22:39:54) [GCC 4.2.1 Compatible Apple Clang 2.1 (tags/Apple/clang-163.7.1)]
nose version 1.1.2
................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................F.........................................................................................................................................................................................................................................................................................................................................................................................................................K.................................................................................................K......................K...........FFFFFFF...F./sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py:364: RuntimeWarning: invalid value encountered in sqrt
  z = np.sqrt(np.array(np.complex(-np.inf, np.nan)))
........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................S.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
======================================================================
FAIL: Test basic arithmetic function errors
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/numpy/testing/decorators.py", line 215, in knownfailer
    return f(*args, **kwargs)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_numeric.py", line 321, in test_floating_exceptions
    lambda a,b:a/b, ft_tiny, ft_max)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_numeric.py", line 271, in assert_raises_fpe
    "Type %s did not raise fpe error '%s'." % (ftype, fpeerr))
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 34, in assert_
    raise AssertionError(msg)
AssertionError: Type <type 'numpy.complex64'> did not raise fpe error ''.

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, 1, inf, inf, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array((inf+infj))

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, -1, inf, inf, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array((inf+infj))

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, 0.0, inf, inf, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array((inf+infj))

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, -0.0, inf, inf, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array((inf+infj))

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, inf, inf, inf, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array((inf+infj))

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, -inf, inf, inf, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array((inf+infj))

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, nan, inf, inf, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array((inf+infj))

======================================================================
FAIL: test_umath_complex.TestCsqrt.test_special_values(<ufunc 'sqrt'>, -inf, 1, 0.0, inf)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/sw/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/sw/lib/python2.7/site-packages/numpy/core/tests/test_umath_complex.py", line 578, in check_complex_value
    assert_equal(f(z1), z2)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 256, in assert_equal
    return assert_array_equal(actual, desired, err_msg, verbose)
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 707, in assert_array_equal
    verbose=verbose, header='Arrays are not equal')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 605, in assert_array_compare
    chk_same_position(x_id, y_id, hasval='nan')
  File "/sw/lib/python2.7/site-packages/numpy/testing/utils.py", line 588, in chk_same_position
    raise AssertionError(msg)
AssertionError: 
Arrays are not equal

x and y nan location mismatch:
 x: array([ nan+infj])
 y: array(infj)

----------------------------------------------------------------------
Ran 3529 tests in 38.236s

FAILED (KNOWNFAIL=3, SKIP=1, failures=9)
<nose.result.TextTestResult run=3529 errors=0 failures=9>

In both cases (darwin10 and darwin11), the blas used is from /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate.

http://developer.apple.com/performance/accelerateframework.html

I doubt the system blas is at fault and more likely this is an issue with the clang compilers. I know python required an explicit
addition of -fwrapv since its test for that option is confused by clang. Perhaps numpy/scipy requires -fwrapv as well?
         Jack

> 
> Either the BLAS you linked Scipy against is broken, or there are some
> compatibility problems due to compilers or mixing compiler versions.
> 
> You could check which libraries your `fblas.so` and `cblas.so` in the
> Scipy installation are linked against. I've never used OSX, though,
> so I do not know how to do this there. You can see the same information
> in the beginning of the build logs, though.
> 
> Maybe someone who is more familiar than me with OSX knows more.
> 
> -- 
> Pauli Virtanen
> 
> _______________________________________________
> SciPy-Dev mailing list
> SciPy-Dev@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-dev


More information about the SciPy-Dev mailing list