No cffi linalg functions

Issue #17 resolved
Aaron Staley created an issue

I've build numpypy from source on ubuntu 14.10 using the instructions provided.

Building appears to work:

#!

Running from numpy source directory.
/usr/lib/pypy/lib-python/2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'test_suite'
  warnings.warn(msg)
non-existing path in 'numpy/distutils': 'site.cfg'
non-existing path in 'numpy/f2py': 'docs'
non-existing path in 'numpy/f2py': 'f2py.1'
/bin/sh: 1: svnversion: not found
F2PY Version 2
blas_info:
  FOUND:
    libraries = ['blas']
    library_dirs = ['/usr/lib']
    language = f77

/bin/sh: 1: svnversion: not found
non-existing path in 'numpy/lib': 'benchmarks'
lapack_opt_info:
openblas_lapack_info:
  libraries openblas not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu']
  NOT AVAILABLE

lapack_mkl_info:
mkl_info:
  libraries mkl,vml,guide not found in ['/usr/local/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu']
  NOT AVAILABLE

  NOT AVAILABLE

atlas_threads_info:
Setting PTATLAS=ATLAS
  libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
  libraries lapack_atlas not found in /usr/local/lib
  libraries ptf77blas,ptcblas,atlas not found in /usr/lib
  libraries lapack_atlas not found in /usr/lib
  libraries ptf77blas,ptcblas,atlas not found in /usr/lib/x86_64-linux-gnu
  libraries lapack_atlas not found in /usr/lib/x86_64-linux-gnu
numpy.distutils.system_info.atlas_threads_info
  NOT AVAILABLE

atlas_info:
  libraries f77blas,cblas,atlas not found in /usr/local/lib
  libraries lapack_atlas not found in /usr/local/lib
  libraries f77blas,cblas,atlas not found in /usr/lib
  libraries lapack_atlas not found in /usr/lib
  libraries f77blas,cblas,atlas not found in /usr/lib/x86_64-linux-gnu
  libraries lapack_atlas not found in /usr/lib/x86_64-linux-gnu
numpy.distutils.system_info.atlas_info
  NOT AVAILABLE

/home/astaley/numpy/numpy/distutils/system_info.py:1432: UserWarning: 
    Atlas (http://math-atlas.sourceforge.net/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [atlas]) or by setting
    the ATLAS environment variable.
  warnings.warn(AtlasNotFoundError.__doc__)
lapack_info:
  FOUND:
    libraries = ['lapack']
    library_dirs = ['/usr/lib']
    language = f77

  FOUND:
    libraries = ['lapack', 'blas']
    library_dirs = ['/usr/lib']
    language = f77
    define_macros = [('NO_ATLAS_INFO', 1)]

However, in pypy:

/usr/local/lib/pypy2.7/dist-packages/numpy/linalg/_umath_linalg.py:18: UserWarning: no cffi linalg functions and no _umath_linalg_capi module, expect problems.
  warn('no cffi linalg functions and no _umath_linalg_capi module, expect problems.')

Using even the most basic numpy methods (such as std) fail in strange ways.

Comments (9)

  1. Dan Stromberg

    I built numpypy using pip against Pypy 2.4.0, and am getting the same warning - on Linux Mint 17.

  2. Aaron Staley reporter

    Is this fix committed to the main git? I still cannot even do a simple numpy.std([1])

  3. mattip

    std() has nothing to do with the pypy/numpy repo rather reflects an 'old' pypy version, it relies on the lower-level _numpypy module which in pypy replaces the c-coded multiarray module. What version of pypy are you using? Fwiw, this works for me (the warnings are ok, we are still missing some floating-point exception handling):

    matti@asus:/tmp/buildbot$ ~/pypy_stuff/pypy-virt/bin/pypy
    Python 2.7.8 (10f1b29a2bd2, Feb 02 2015, 21:22:43) 
    [PyPy 2.5.0 with GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>> import numpy as np
    /home/matti/pypy_stuff/pypy-virt/site-packages/numpy/linalg/_umath_linalg.py:79: UserWarning: npy_clear_floatstatus, npy_set_floatstatus_invalid not found
      warn('npy_clear_floatstatus, npy_set_floatstatus_invalid not found')
    >>>> np.std([1])
    0.0
    
  4. Aaron Staley reporter

    I was running pypy 2.3.0; I just updated to pypy 2.4, the latest on https://launchpad.net/~pypy/+archive/ubuntu/ppa. Same problem:

    Python 2.7.8 (2.4.0+dfsg-1~ppa2+trusty, Sep 25 2014, 04:35:04)
    [PyPy 2.4.0 with GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>> import numpy
    /usr/local/lib/pypy2.7/dist-packages/numpy/linalg/_umath_linalg.py:1005: UserWarning: no cffi linalg functions and no _umath_linalg_capi module, expect problems.
      warn('no cffi linalg functions and no _umath_linalg_capi module, expect problems.')
    >>>> numpy.std
    <function std at 0x00007f2afc54f880>
    >>>> numpy.std([1])
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/pypy2.7/dist-packages/numpy/core/fromnumeric.py", line 2828, in std
        keepdims=keepdims)
      File "/usr/local/lib/pypy2.7/dist-packages/numpy/core/_methods.py", line 125, in _std
        keepdims=keepdims)
      File "/usr/local/lib/pypy2.7/dist-packages/numpy/core/_methods.py", line 107, in _var
        ret = umr_sum(x, axis, dtype, out, keepdims)
    TypeError: expected integer, got NoneType object
    
  5. Aaron Staley reporter

    Noted that pypy must be run as root once. Yichao clarified below that is expected behavior

  6. Log in to comment