Thread Previous • Date Previous • Date Next • Thread Next |
Jed Brown wrote:
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_TMPLooks 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'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?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.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: 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.
Hurray! My DOLFIN is back among the living. (Now, I just need to get it to understand that SLEPc is hanging around as well.)
Just adding -lmpiuni to petsc.pc did not help. Adding the output ofecho -e 'include ${PETSC_DIR}/bmake/common/base\nlink:\n\t-@echo ${PETSC_LIB}' | make -f - link did. Thanks a lot!
However, there should probably be a prettier way of doing this? -- Marie E. RognesPh.D Fellow, Centre of Mathematics for Applications, University of Oslo
http://folk.uio.no/meg
Thread Previous • Date Previous • Date Next • Thread Next |