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.)
>  
>   
_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to