← Back to team overview

dolfin team mailing list archive

Re: Issues when compiling DOLFIN without MPI

 

On Wed 2008-08-20 17:35, Marie Rognes wrote:
> Matthew Knepley wrote:
> > On Wed, Aug 20, 2008 at 5:08 AM, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
> >   
> >> Marie Rognes wrote:
> >>     
> >>> Garth N. Wells wrote:
> >>>       
> >>>> Marie Rognes wrote:
> >>>>         
> >>>>> I'm trying to compile dolfin with PETSc and SLEPc, but without MPI:
> >>>>>
> >>>>>      ./scons.local enableMpi=no withPetscDir=$PETSC_DIR
> >>>>>     withSlepcDir=$SLEPC_DIR
> >>>>>
> >>>>> This gives the following error:
> >>>>>
> >>>>>           
> >>>> Hopefully this is fixed now, although my PETSc is built with MPI, so I
> >>>> can't be sure. Let me know if it's ok or otherwise.
> >>>>         
> >>> I get through the compilation stage now, so that's good :)
> >>>
> >>> However, if I try to "import dolfin", I get:
> >>>
> >>>        Python 2.5.2 (r252:60911, Jun 19 2008, 15:12:17)
> >>>    [GCC 4.1.2 (Gentoo 4.1.2 p1.0.2)] on linux2
> >>>    Type "help", "copyright", "credits" or "license" for more information.
> >>>     >>> import dolfin
> >>>    Traceback (most recent call last):
> >>>      File "<stdin>", line 1, in <module>
> >>>      File
> >>>
> >>> "/home/meg/src/dolfin/dolfin/local/lib/python2.5/site-packages/dolfin/__init__.py",
> >>>
> >>>    line 13, in <module>
> >>>        from assemble import *
> >>>      File
> >>>
> >>> "/home/meg/src/dolfin/dolfin/local/lib/python2.5/site-packages/dolfin/assemble.py",
> >>>
> >>>    line 22, in <module>
> >>>        from dolfin import *
> >>>      File
> >>>
> >>> "/home/meg/src/dolfin/dolfin/local/lib/python2.5/site-packages/dolfin/dolfin.py",
> >>>
> >>>    line 7, in <module>
> >>>        import _dolfin
> >>>    ImportError: /home/meg/src/dolfin/dolfin/local/lib/libdolfin.so:
> >>>    undefined symbol: MPIUNI_TMP
> >>>
> >>>       
> >> Looks like a linking problem to PETSc. Can you compile C++ DOLFIN programs?
> >>     
> >
> >   
> 
> Nope. The cpp poisson demo gives:
> 
> meg in cpp >> scons
> scons: Reading SConscript files ...
> scons: done reading SConscript files.
> scons: Building targets ...
> c++ -o main.o -c -Wall -pipe -ansi -g -Werror -O2 -fno-strict-aliasing 
> -pthread -DDEBUG -DNDEBUG -DPACKAGE_VERSION="0.8.0" -DHAS_PETSC=1 
> -DHAS_SLEPC=1 -DHAS_UMFPACK=1 -DHAS_GTS=1 
> -I/home/meg/src/dolfin/dolfin/local/include 
> -I/usr/lib/python2.5/site-packages/numpy/core/include 
> -I/home/meg/src/slepc -I/home/meg/src/slepc/include 
> -I/usr/include/python2.5 -I/home/meg/src/petsc/bmake/linux-gnu-c-debug 
> -I/home/meg/src/petsc/include 
> -I/home/meg/src/petsc-2.3.3-p13/include/mpiuni -I/usr/include/libxml2 
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include main.cpp
> c++ -o demo -Wl,-rpath,/home/meg/src/slepc/lib/linux-gnu-c-debug 
> -Wl,-rpath,/home/meg/src/petsc/lib/linux-gnu-c-debug -pthread 
> -Wl,--export-dynamic main.o -L/home/meg/src/dolfin/dolfin/local/lib 
> -L/home/meg/src/slepc/lib/linux-gnu-c-debug -L/usr/lib/atlas 
> -L/home/meg/src/petsc/lib/linux-gnu-c-debug -ldolfin -lslepc -lblas 
> -lumfpack -lamd -lgts -lxml2 -lpetscts -lpetscsnes -lpetscksp -lpetscdm 
> -lpetscmat -lpetscvec -lpetsc -lgthread-2.0 -lrt -lgmodule-2.0 -ldl 
> -lglib-2.0
> /home/meg/src/dolfin/dolfin/local/lib/libdolfin.so: undefined reference 
> to `Petsc_MPI_Abort'
> 
> > Almost  certainly it is an incomplete link line when libdolfin.so is
> > constructed. When PETSc
> > is built without MPI, it creates an extra library (libmpiuni) which
> > must be linked against to
> > get these symbols.
> >   
> 
> I'm not quite sure what that implies... But, I should somehow add 
> -lmpiuni when linking dolfin? For instance in the pkgconfig file scons 
> creates for petsc?

What does the it look like when you build a PETSc demo?  What should be
on the `Libs:' line of petsc.pc is the result of the following (You may
not need to fix your environment.):

echo -e 'include ${PETSC_DIR}/bmake/common/base\nlink:\n\t-@echo ${PETSC_LIB}' | make PETSC_DIR=~/usr/petsc-2* PETSC_ARCH=ompic-opt -f - link

It will probably be ugly and often has lots of repetition for no
apparent reason.  However, it should be reliable.

Jed

Attachment: pgphVUvfjwrAc.pgp
Description: PGP signature


References