← Back to team overview

dolfin team mailing list archive

Re: Issues when compiling DOLFIN without MPI

 

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?


--
Marie E. Rognes
Ph.D Fellow, Centre of Mathematics for Applications, University of Oslo
http://folk.uio.no/meg



Follow ups

References