← Back to team overview

dolfin team mailing list archive

Re: Linking of ATLAS when using Debian package

 

Adding PETSC_TS_LIB did help, but not for the reasons one would think. The result is the same whether reblas3-dev or atlas3-base-dev is installed (hence the file dolfin.pc remains the same when running configure with the two different blas libraries), but the library '-lblas-3' is now added to the list of libraries. It is located in /usr/lib, and set to point to the correct libblas.so (either in /usr/lib/ or /usr/lib/atlas). I don't know why this is so, but it might very well be set at the compiling of the debian petsc-dev package, so I am not 100% sure that this is the way to proceed.

A third alternative, beside adding '-L/usr/lib/atlas' to dolfin.pc, is to omit '-lblas' to be added when dolfin is compiled with petsc. As far as I understand, libpetsc.so will always be linked with libblas.so anyway?

ilmar

Anders Logg wrote:
On Thu, Feb 28, 2008 at 12:19:00AM +0100, Anders Logg wrote:
On Wed, Feb 27, 2008 at 11:49:46AM +0100, Ilmar Wilbers wrote:
Hello to all!

With Ubuntu Hardy, updates of openmpi and petsc (2.3.3) are available. petsc will also be built against openmpi, not mpich. We are currently looking at building dolfin using these packages as dependencies. There is, however, a problem with ATLAS.

When installing petsc-dev, there is a dependency on either atlas3-base, OR both lapack3 and refblas3. This means that if no BLAS is installed, atlas3-base is set to be installed as the dependency. atlas3-base is the faster, optimized one, and the one we really would like to use. The problem is that libblas.so and liblapack.so are put in the directory /usr/lib/atlas when using atlas3-base. If the package refblas3 is used, the library files are put in /usr/lib. When doing a 'make demo' in dolfin, when compiled with the petsc library provided by the debian package, this works fine when only refblas3 and lapack3 are installed, as /usr/lib is a default directory when the compiler (mpicxx) is looking for libraries. When atlas3-base also is available, libpetsc.so tries to use the libblas.so located in /usr/lib/atlas, and so, when running 'make demo', we get an error about undefined references to atlas symbols, unless we explicitly add '-L/usr/lib/atlas' to the linking stage of dolfin.pc in lib/pkgconfig.

When compiling dolfin without petsc, we do not get this error, as /usr/lib/libblas.so is used. However, we really would like to use the atlas one when available, as it runs at least twice as fast (although building them yourself will be ten times faster, it seems).

My suggestion is to make sure that the line '-L/usr/lib/atlas' is included in the dolfin.pc file.

ilmar

(I'm resending this because of problems with the mail-server, hope it
doesn't appear twice.)

The cflags/libs needed for PETSc are extracted by the DOLFIN configure
script using the file petsc.conf (which is located at the top of the
DOLFIN source tree). This is a makefile that includes the file
${PETSC_DIR}/bmake/common/variables which gives us all we need for
PETSc.

Does it help if you just add the variable
${PETSC_TS_LIB} suggested by Matt at the end of the last line in petsc.conf? (And then rerun the configure script to create a new dolfin.pc.)


Follow ups

References