[SciPy-User] Using LU Decomposition from UMFPACK?

Skipper Seabold jsseabold at gmail.com
Sat Mar 23 13:20:31 EDT 2013


On Fri, Mar 22, 2013 at 5:39 PM, Skipper Seabold <jsseabold at gmail.com>wrote:

> On Fri, Mar 22, 2013 at 5:04 PM, Skipper Seabold <jsseabold at gmail.com>wrote:
>
>> On Fri, Mar 22, 2013 at 4:50 PM, Skipper Seabold <jsseabold at gmail.com>wrote:
>>
>>> I thought I built scipy with UMFPACK support but I can't seem to get
>>> this to work. I would like to do a sparse LU decomposition and recover the
>>> U matrix.
>>>
>>> I built SuiteSparse so long ago, so might there have been a build issue
>>> I haven't noticed until now?
>>>
>>> scipy.test() does not show any errors, though there are 28 skipped tests.
>>>
>>> Does this work for anyone?
>>>
>>> [~/]
>>> [1]: from scipy import version
>>>
>>> [~/]
>>> [2]: version.full_version
>>> [2]: '0.13.0.dev-61f05fe'
>>>
>>> [~/]
>>> [3]: from scipy.sparse.linalg.dsolve import umfpack
>>>
>>> [~/]
>>> [4]: umf = umfpack.UmfpackContext()
>>> Exception AttributeError: "'UmfpackContext' object has no attribute
>>> '_symbolic'" in <bound method UmfpackContext.__del__ of
>>> <scipy.sparse.linalg.dsolve.umfpack.umfpack.UmfpackContext object at
>>> 0x56c0b10>> ignored
>>>
>>> ---------------------------------------------------------------------------
>>> ImportError                               Traceback (most recent call
>>> last)
>>> <ipython-input-3-2e28850f247d> in <module>()
>>> ----> 1 umf = umfpack.UmfpackContext("di")
>>>
>>> /usr/local/lib/python2.7/dist-packages/scipy/sparse/linalg/dsolve/umfpack/umfpack.pyc
>>> in __init__(self, family, **kwargs)
>>>     279                    a warning is issued (default: 1e12)"""
>>>     280         if _um is None:
>>> --> 281             raise ImportError('Scipy was built without UMFPACK
>>> support. '
>>>     282                               'You need to install the UMFPACK
>>> library and '
>>>     283                               'header files before building
>>> scipy.')
>>>
>>> ImportError: Scipy was built without UMFPACK support. You need to
>>> install the UMFPACK library and header files before building scipy.
>>>
>>> [~/]
>>> [5]: from scipy import show_config
>>>
>>> [~/]
>>> [6]: show_config()
>>> amd_info:
>>>     libraries = ['amd']
>>>     library_dirs = ['/home/skipper/atlas_build2/lib']
>>>     define_macros = [('SCIPY_AMD_H', None)]
>>>     swig_opts = ['-I/home/skipper/atlas_build2/include']
>>>     include_dirs = ['/home/skipper/atlas_build2/include']
>>> umfpack_info:
>>>     libraries = ['umfpack', 'amd']
>>>     library_dirs = ['/home/skipper/atlas_build2/lib']
>>>
>>>     define_macros = [('SCIPY_UMFPACK_H', None), ('SCIPY_AMD_H', None)]
>>>
>>>     swig_opts = ['-I/home/skipper/atlas_build2/include',
>>> '-I/home/skipper/atlas_build2/include']
>>>
>>>     include_dirs = ['/home/skipper/atlas_build2/include']
>>> atlas_threads_info:
>>>     libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
>>>     library_dirs = ['/home/skipper/atlas_build2/lib']
>>>     define_macros = [('NO_ATLAS_INFO', -1)]
>>>     language = f77
>>>     include_dirs = ['/home/skipper/atlas_build2/include']
>>> blas_opt_info:
>>>     libraries = ['ptf77blas', 'ptcblas', 'atlas']
>>>     library_dirs = ['/home/skipper/atlas_build2/lib']
>>>     define_macros = [('NO_ATLAS_INFO', -1)]
>>>     language = c
>>>     include_dirs = ['/home/skipper/atlas_build2/include']
>>> atlas_blas_threads_info:
>>>     libraries = ['ptf77blas', 'ptcblas', 'atlas']
>>>     library_dirs = ['/home/skipper/atlas_build2/lib']
>>>     define_macros = [('NO_ATLAS_INFO', -1)]
>>>     language = c
>>>     include_dirs = ['/home/skipper/atlas_build2/include']
>>> lapack_opt_info:
>>>     libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
>>>     library_dirs = ['/home/skipper/atlas_build2/lib']
>>>     define_macros = [('NO_ATLAS_INFO', -1)]
>>>     language = f77
>>>     include_dirs = ['/home/skipper/atlas_build2/include']
>>> lapack_mkl_info:
>>>   NOT AVAILABLE
>>> blas_mkl_info:
>>>   NOT AVAILABLE
>>> mkl_info:
>>>   NOT AVAILABLE
>>>
>>> Skipper
>>>
>>
>> Ah, might it be this? From SuiteSparse/AMD/Doc/ChangeLog
>>
>> Jun 1, 2012: version 2.3.0
>>
>>     * changed from UFconfig to SuiteSparse_config
>>
>
> I suppose not. Also, does this look right? Should they be shared objects?
> (I'm just about out of my depth)
>
> [~/src/SuiteSparse]
> |27 $ ls ~/atlas_build2/lib/
> libamd.a    libcholmod.a     liblapack.a     libptlapack.a  libtstatlas.a
> libatlas.a  libf77blas.a     libptcblas.a    libsatlas.so   libumfpack.a
> libcblas.a  libf77refblas.a  libptf77blas.a  libtatlas.so
>
> I have the -fPIC flag set when building SuiteSparse.
>

The issue was that there was a problem in the building of SuiteSparse. I
had not correctly linked against blas and never knew it.

Skipper
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20130323/81a69e46/attachment.html>


More information about the SciPy-User mailing list