[Numpy-discussion] 1.1.0rc1 tagged

rex rex@nosyntax....
Sun May 18 06:20:37 CDT 2008


Jarrod Millman <millman@berkeley.edu> wrote:
	
>Please test the release candidate:
>svn co http://svn.scipy.org/svn/numpy/tags/1.1.0rc1 1.1.0rc1

With icc & MKL it fails to find the MKL libraries.

site.cfg:
----------------------------------------------------------
[DEFAULT]
library_dirs = /opt/intel/mkl/10.0.3.020/lib/32
include_dirs = /opt/intel/mkl/10.0.3.020/10.0.3.020/include

[mkl]
library_dirs = /opt/intel/mkl/10.0.3.020/lib/32
lapack_libs = mkl, mkl_lapack, guide
----------------------------------------------------------
1.1.0rc1# python setup.py config --compiler=intel build_clib \
 --compiler=intel build_ext --compiler=intel install \
 --prefix=/usr/local> build0
 
cat build0
    
F2PY Version 2_5188
blas_opt_info:
blas_mkl_info:
  libraries mkl,vml,guide not found in /opt/intel/mkl/10.0.3.020/lib/32
  NOT AVAILABLE

atlas_blas_threads_info:
Setting PTATLAS=ATLAS
  libraries ptf77blas,ptcblas,atlas not found in /opt/intel/mkl/10.0.3.020/lib/32
  NOT AVAILABLE

atlas_blas_info:
  libraries f77blas,cblas,atlas not found in /opt/intel/mkl/10.0.3.020/lib/32
  NOT AVAILABLE

blas_info:
  libraries blas not found in /opt/intel/mkl/10.0.3.020/lib/32
  NOT AVAILABLE

blas_src_info:
  NOT AVAILABLE

  NOT AVAILABLE

lapack_opt_info:
lapack_mkl_info:
mkl_info:
  libraries mkl,vml,guide not found in /opt/intel/mkl/10.0.3.020/lib/32
  NOT AVAILABLE

  NOT AVAILABLE

atlas_threads_info:
Setting PTATLAS=ATLAS
  libraries ptf77blas,ptcblas,atlas not found in /opt/intel/mkl/10.0.3.020/lib/32
  libraries lapack_atlas not found in /opt/intel/mkl/10.0.3.020/lib/32
numpy.distutils.system_info.atlas_threads_info
  NOT AVAILABLE

atlas_info:
  libraries f77blas,cblas,atlas not found in /opt/intel/mkl/10.0.3.020/lib/32
  libraries lapack_atlas not found in /opt/intel/mkl/10.0.3.020/lib/32
numpy.distutils.system_info.atlas_info
  NOT AVAILABLE

lapack_info:
  libraries lapack not found in /opt/intel/mkl/10.0.3.020/lib/32
  NOT AVAILABLE

lapack_src_info:
  NOT AVAILABLE

  NOT AVAILABLE

running config
[...]

------------------------------------------------------------------------------

Without MKL linked it runs the tests perfectly after being
compiled with icc:
-----------------------------------------------------------
 python
Python 2.5 (release25-maint, Dec  9 2006, 14:35:53)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.test()
Numpy is installed in /usr/local/lib/python2.5/site-packages/numpy
Numpy version 1.1.0rc1
Python version 2.5 (release25-maint, Dec  9 2006, 14:35:53) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)]
  Found 18/18 tests for numpy.core.defmatrix
  Found 3/3 tests for numpy.core.memmap
  Found 283/283 tests for numpy.core.multiarray
  Found 70/70 tests for numpy.core.numeric
  Found 36/36 tests for numpy.core.numerictypes
  Found 12/12 tests for numpy.core.records
  Found 7/7 tests for numpy.core.scalarmath
  Found 16/16 tests for numpy.core.umath
  Found 5/5 tests for numpy.ctypeslib
  Found 5/5 tests for numpy.distutils.misc_util
  Found 2/2 tests for numpy.fft.fftpack
  Found 3/3 tests for numpy.fft.helper
  Found 24/24 tests for numpy.lib._datasource
  Found 10/10 tests for numpy.lib.arraysetops
  Found 1/1 tests for numpy.lib.financial
  Found 0/0 tests for numpy.lib.format
  Found 53/53 tests for numpy.lib.function_base
  Found 5/5 tests for numpy.lib.getlimits
  Found 6/6 tests for numpy.lib.index_tricks
  Found 15/15 tests for numpy.lib.io
  Found 1/1 tests for numpy.lib.machar                     
  Found 4/4 tests for numpy.lib.polynomial
  Found 49/49 tests for numpy.lib.shape_base
  Found 15/15 tests for numpy.lib.twodim_base
  Found 43/43 tests for numpy.lib.type_check
  Found 1/1 tests for numpy.lib.ufunclike
  Found 89/89 tests for numpy.linalg
  Found 94/94 tests for numpy.ma.core
  Found 15/15 tests for numpy.ma.extras
  Found 7/7 tests for numpy.random
  Found 16/16 tests for numpy.testing.utils
  Found 0/0 tests for __main__
............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 1004 tests in 0.977s

OK
<unittest._TextTestResult run=1004 errors=0 failures=0>
----------------------------------------------------------------------

However, if distutils/system_info.py is hacked to make it find
MKL, it builds w/o error, but fails the test:

$ python
Python 2.5 (release25-maint, Dec  9 2006, 14:35:53)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.test()
Numpy is installed in /usr/local/lib/python2.5/site-packages/numpy
Numpy version 1.1.0rc1
Python version 2.5 (release25-maint, Dec  9 2006, 14:35:53) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)]
  Found 18/18 tests for numpy.core.defmatrix
  Found 3/3 tests for numpy.core.memmap
  Found 283/283 tests for numpy.core.multiarray
  Found 70/70 tests for numpy.core.numeric
  Found 36/36 tests for numpy.core.numerictypes
  Found 12/12 tests for numpy.core.records
  Found 7/7 tests for numpy.core.scalarmath
  Found 16/16 tests for numpy.core.umath
  Found 5/5 tests for numpy.ctypeslib
  Found 5/5 tests for numpy.distutils.misc_util
  Found 2/2 tests for numpy.fft.fftpack
  Found 3/3 tests for numpy.fft.helper
  Found 24/24 tests for numpy.lib._datasource
  Found 10/10 tests for numpy.lib.arraysetops              
  Found 1/1 tests for numpy.lib.financial
  Found 0/0 tests for numpy.lib.format
  Found 53/53 tests for numpy.lib.function_base
  Found 5/5 tests for numpy.lib.getlimits
  Found 6/6 tests for numpy.lib.index_tricks
  Found 15/15 tests for numpy.lib.io
  Found 1/1 tests for numpy.lib.machar
  Found 4/4 tests for numpy.lib.polynomial
  Found 49/49 tests for numpy.lib.shape_base
  Found 15/15 tests for numpy.lib.twodim_base
  Found 43/43 tests for numpy.lib.type_check
  Found 1/1 tests for numpy.lib.ufunclike
  Found 89/89 tests for numpy.linalg
  Found 94/94 tests for numpy.ma.core
  Found 15/15 tests for numpy.ma.extras
  Found 7/7 tests for numpy.random
  Found 16/16 tests for numpy.testing.utils
  Found 0/0 tests for __main__
MKL FATAL ERROR: /opt/intel/mkl/10.0.3.020/lib/32/: cannot read file data: Is a directory
------------------------------------------------------------------------------------

As far as MKL goes, we're making negative progress -- I used to be
able to compile a 'good' numpy with icc & MKL that would pass the
unit tests. Now, just with icc, but not with MKL.  

FWIW, there are two changes to system_info.py that are required to link MKL.

class lapack_mkl_info(mkl_info):

    def calc_info(self):
        mkl = get_info('mkl')
        if not mkl:
            return
        if sys.platform == 'win32':
            lapack_libs = self.get_libs('lapack_libs',['mkl_lapack'])
        else:
            lapack_libs = self.get_libs('lapack_libs',['mkl_lapack32','mkl_lapack64'])

        info = {'libraries': lapack_libs}
        dict_append(info,**mkl)
        self.set_info(**info)

This will fail because all 3 MKL versions (since version 9.x)
have a common name: mkl_lapack

The other change is vml. From reading the Intel examples, I think
(but could be wrong) that vml doesn't need to be explicitly
linked to get its functionality, but mkl_lapack does. This requires
changing:

class mkl_info(system_info):
    section = 'mkl'
    dir_env_var = 'MKL'
    _lib_mkl = ['mkl','vml','guide']

to:

class mkl_info(system_info):
    section = 'mkl'
    dir_env_var = 'MKL'
    _lib_mkl = ['mkl','mkl_lapack','guide']


After these two changes are made, MKL is used (with my site.cfg),
but the result is a numpy that fails the unit tests spectacularly.

-rex
-- 
"Generally intelligence has no effect on conclusions, which are glandularly
determined. It just rationalizes hormonal inevitabilities." --Fred Reed


More information about the Numpy-discussion mailing list