← Back to team overview

dolfin team mailing list archive

Re: Compiling with ParMETIS

 

Garth N. Wells wrote:

Johannes Ring wrote:
On Fri, September 19, 2008 10:19, Niclas Jansson wrote:
Johannes Ring wrote:
On Thu, September 18, 2008 19:43, Anders Logg wrote:
On Thu, Sep 18, 2008 at 06:52:30PM +0200, Johannes Ring wrote:
On Thu, September 18, 2008 18:35, Anders Logg wrote:
We need to add a test/pkgconfig-generator for ParMETIS.

I can build the test program in sandbox/passembly but I need to add

  customCxxFlags=-DHAS_PARMETIS=1

to scons when building DOLFIN and then manually add

  -lparmetis -lmetis

when linking the demo.

Can someone who knows the build system better add this?
I can do that.
Thanks.

Do you use the libparmetis-dev package that comes with
Ubuntu or do you build ParMETIS yourself?
I use the Ubuntu package.
I have the pkg-config generator for ParMETIS ready but building DOLFIN
fails with the following error message:

mpic++ -o dolfin/mesh/MeshPartition.os -c -Wall -pipe -ansi -DDEBUG -g
-Werror -DNDEBUG -O2 -DHAS_MPI=1 -DMPICH_IGNORE_CXX_SEEK
-DPACKAGE_VERSION=\"0.8.0\" -DHAS_PETSC=1 -DHAS_SLEPC=1 -DHAS_SCOTCH=1
-DHAS_UMFPACK=1 -DHAS_GTS=1 -DHAS_TRILINOS=1 -DHAS_CHOLMOD=1
-DHAS_MTL4=1
-DHAS_PARMETIS=1 -fPIC -I. -I/usr/local/include -I/usr/include/libxml2
-I/usr/lib/petsc/bmake/linux-gnu-c-opt -I/usr/lib/petsc/include
-I/usr/lib/openmpi/include -I/usr/lib/openmpi/lib -Idolfin
-I/home/johannr/src/slepc-2.3.3 -I/home/johannr/src/slepc-2.3.3/include
-I/usr/lib/petsc/bmake/linux-gnu-c-opt -I/usr/lib/petsc/include
-I/usr/lib/openmpi/include -I/usr/lib/openmpi/lib -Idolfin
-I/home/johannr/src/scotch_5.0/bin -I/usr/include/suitesparse
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-I/home/johannr/src/trilinos-8.0.3/local/include
-I/usr/include/suitesparse -I/home/johannr/src/svn/mtl4
dolfin/mesh/MeshPartition.cpp
dolfin/mesh/MeshPartition.cpp: In static member function ?static void
dolfin::MeshPartition::partitionGeom(dolfin::Mesh&,
dolfin::MeshFunction<unsigned int>&)?:
dolfin/mesh/MeshPartition.cpp:102: error: ?idxtype? was not declared in
this scope
dolfin/mesh/MeshPartition.cpp:102: error: ?vtxdist? was not declared in
this scope
dolfin/mesh/MeshPartition.cpp:102: error: expected type-specifier before
?idxtype?
dolfin/mesh/MeshPartition.cpp:102: error: expected `;' before ?idxtype?
dolfin/mesh/MeshPartition.cpp:103: error: expected type-specifier before
?idxtype?
dolfin/mesh/MeshPartition.cpp:103: error: expected `>' before ?idxtype?
dolfin/mesh/MeshPartition.cpp:103: error: expected `(' before ?idxtype?
dolfin/mesh/MeshPartition.cpp:103: error: expected `)' before ?;? token
dolfin/mesh/MeshPartition.cpp:117: error: expected `;' before ?gdim?
dolfin/mesh/MeshPartition.cpp:118: error: ?part? was not declared in
this
scope
dolfin/mesh/MeshPartition.cpp:118: error: expected type-specifier before
?idxtype?
dolfin/mesh/MeshPartition.cpp:118: error: expected `;' before ?idxtype?
dolfin/mesh/MeshPartition.cpp:119: error: ?gdim? was not declared in
this
scope
dolfin/mesh/MeshPartition.cpp:134: error: ?ParMETIS_V3_PartGeom? was not
declared in this scope
dolfin/mesh/MeshPartition.cpp:143: error: type ?<type error>? argument
given to ?delete?, expected pointer
dolfin/mesh/MeshPartition.cpp:144: error: type ?<type error>? argument
given to ?delete?, expected pointer
scons: *** [dolfin/mesh/MeshPartition.os] Error 1
scons: building terminated because of errors.

Any ideas?

Johannes

Seams like it doesn't find parmetis.h
Yes, it seems so, but parmetis.h is located under /usr/include so it can't
be missed. And it doesn't fail on this part of MeshPartition.cpp:

#ifdef HAS_PARMETIS
#include <parmetis.h>
#endif


Should it be

   extern "C"
   {
   #ifdef HAS_PARMETIS
   #include <parmetis.h>
   #endif
   }
?

Garth


That shouldn't be necessary, it's already defined in parmetis.h

Ver: 3.1.0, August 2005
# The parmetis.h header file has been restructured and is now C++ friendly.

#ifdef __cplusplus
extern "C" {
#endif

Niclas




References