← Back to team overview

dolfin team mailing list archive

Re: Undefined symbols when compiled with umfpack using external BLAS

 



LUK ShunTim wrote:
Garth N. Wells wrote:
LUK ShunTim wrote:
Hello fellow dolfins,

I compiled dolfin 0.6.4 (successfully) using the umfpack package
supplied by
debian/sid which does not come with its own BLAS. When testing
pydolfin with
"python -i meshdemo.py", it gives this traceback:

<quote>
Traceback (most recent call last):
  File "meshdemo.py", line 1, in ?
    from dolfin import *
  File
"/home/test/dolfin/lib/python2.4/site-packages/dolfin/__init__.py", line
3, in ?
    from dolfin import *
  File
"/home/test/dolfin/lib/python2.4/site-packages/dolfin/dolfin.py", line 7,
in ?
    import _dolfin
ImportError: /usr/lib/libumfpack.so.1: undefined symbol: dscal_
</quote>

It appears dscal from BLAS routines which is required by umfpack was
some how
not linked/imported. I did have ATLAS installed.

The same problem occurred when compiling the c++ examples but it can
be worked
around by adding the required flags "-L/usr/lib/atlas/sse2 -lblas" to
link
explicitly against ALTAS.

I beg your pardon if this is not really a dolfin problem (I don't know
whether
dolfin should do the import or not) but I would be grateful for your
help.

I've seen this problem before. Something has changed in the way the
Debian libufsparse packages are built.

With Ubunutu 6.10, the package libumfpack4 works fine, but libufsparse
needs -lblas. I don't like this as it means DOLFIN has to test for BLAS,
and add options for non-standard BLAS installations (yet another
dependency). I might add a test for BLAS in the future.

In debian/sid, "nm -D /usr/lib/libumfpack.so |grep dscal_" returns
"U dscal_"

I'm not an expert in programming but, if program A links against libB
which in turns uses libC, libD and libE, say, it would not make very
much sense to *require* A to link against all these dependent libraries
explicitly. Maybe I should file a bug report to debian?


I agree. Submitting a bug would be a good idea.

Garth


If you grab the "SuiteSparse" (which includes UMFPACK)  and build it
yourself, it creates static libraries by default, so you won't have to
tell DOLFIN where the BLAS libraries are.

Will try that.

Garth


Thanks,
ST
--




References