Parallel Graph & Mesh Partitioning

Discussions about the routines in ParMETIS

I made a code in VS2010 to test the API of METIS. It can be built but can not run. Can someone give me some help on it? It is a finite element mesh problem. I include the 'metis.h' and the 'metis.lib'. I assume it is a beam element model. I can run it by the stand-alone program.

(7) ------------- (8)
| |
| |
| |
| |
(5) ------------- (6)
| |
| |
| |
| |
(3) ------------- (4)
| |
| |
| |
| |
(1) (2)

e.g. "(1)" refers to node 1; the dash refers to beam elements.

Here is the code:
extern "C" {
int METIS_PartMeshNodal(idx_t *ne, idx_t *nn, idx_t *eptr, idx_t *eind, idx_t *vwgt, idx_t *vsize,
idx_t *nparts, real_t *tpwgts, idx_t *options, idx_t *objval, idx_t *epart, idx_t *npart);
}

Recently I updated the ParMetis package from 3.0 version to 4.0.1 and faced with the error:

[ 0] ***ASSERTION failed on line 383 of file kwayrefine.c: myrinfo->inbr != -1

I use the ParMETIS_V3_PartKway interface in our code and old version ( ParMETIS_V3_PartVKway ) works well with the same matrix. Our code remains the same as well.
So the graph structure should be ok. All weight are equal 1, I also tried with NULL weights arrays - same error .
Could anybody guess what may cause the problem ?

Thanks in advance.

P.S. I performed the experiments with mpich2-1.4.1p1 under Ubuntu Linux 10.04. Number of parts was 2.

Hi,

I compiled parmetis-4.0.1 but the libmetis.a library that gets creted doesn't contain a refernce for "metis_partgraphvkway":

nm libmetis.a | grep -i metis_partgraph
0000000000000180 T METIS_PARTGRAPHKWAY
0000000000000000 T METIS_PARTGRAPHRECURSIVE
U METIS_PartGraphKway
U METIS_PartGraphRecursive
00000000000001e0 T metis_partgraphkway
0000000000000240 T metis_partgraphkway_
00000000000002a0 T metis_partgraphkway__
0000000000000060 T metis_partgraphrecursive
00000000000000c0 T metis_partgraphrecursive_
0000000000000120 T metis_partgraphrecursive__
0000000000000000 T METIS_PartGraphRecursive
U METIS_PartGraphKway
U METIS_PartGraphRecursive
0000000000000000 T METIS_PartGraphKway
U METIS_PartGraphRecursive

Should it be? Did I miss a flag to get it included?

Thanks in advance,

-sophia

HI Everybody ,

I trygin to compile parmetis 4.0 with my mpich2 installation (version 1.2p1) , but in the last part (92%) of the make gives the following error :

[ 92%] Building C object programs/CMakeFiles/mtest.dir/io.c.o
cd /usr/local/parmetis-4.0/build/Linux-x86_64/programs && /usr/bin/gcc -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -fPIC -Wall -pedantic -Wno-unused-variable -Wno-unknown-pragmas -DNDEBUG -DNDEBUG2 -DHAVE_EXECINFO_H -DHAVE_GETLINE -O3 -I/usr/local/parmetis-4.0/include -I/usr/local/mpich2_install/include -I/usr/local/parmetis-4.0/metis/GKlib -I/usr/local/parmetis-4.0/metis/include -I/usr/local/parmetis-4.0/programs/. -o CMakeFiles/mtest.dir/io.c.o -c /usr/local/parmetis-4.0/programs/io.c
Linking C executable mtest
cd /usr/local/parmetis-4.0/build/Linux-x86_64/programs && /usr/local/cmake285_install/bin/cmake -E cmake_link_script CMakeFiles/mtest.dir/link.txt --verbose=1

Hello

I'm using Parmetis 4 in order to partition mesh for a CFD tool.

The command used is :
call METIS_PartGraphRecursive(nelem,1,nelemconn,elemconn,dummy_null, &
dummy_null,dummy_null,npart,dummy_null,dummy_null,&
options,edgecut,color)

METIS routine is well performed, however there is only one partition. May be I have misunderstood one option?

Is anybody can help me?

regards
David

I am using the ParMETIS_V3_PartKway API to partition graphs. In some circumstances I get the assertion failure message:

***ASSERTION failed on line 185 of file debug.c: nbnd == graph->nbnd
15 16

It seems that I still get a valid partition out of ParMETIS, but I would like to correct this problem. Unfortunately, I don't have any idea about what could be wrong with the input that I am giving ParMETIS that could be causing the problem. This code has worked for many years with the 3.1 version but I recently upgraded to version 4.0 and started getting these messages on occasion. Any idea what could be causing this?

Thanks,
-Ed

Hi,
I want to use ParMETIS_Mesh2Dual from a FORTRAN90 code.
For some reasons this seems to be the only method which
uses double referenced values (**xadj and **adjncy) as return
values. My research on the net did not reveal any solutions
how to access this data.

Has anybody succeeded accessing this function? I would be also
willing to use a wrapper to convert the ** values to * values.

Any help is greatly appreciated.

Thank you for providing this great software to the community!

Best regards
Dieke

BTW: For a mesh consisting only of hexahedra, is there a simple way to
relate the edges of the graph to the faces of the hexahedra?

I'm getting an assertion in selectq.c:

***ASSERTION failed on line 41 of file selectq.c: array[ncon-1].val - array[0].val <= maxdiff
selectq.c:41: Mc_DynamicSelectQueue__: Assertion `array[ncon-1].val - array[0].val <= maxdiff' failed.

Any insight as to getting around this would be greatly appreciated.

Is it required that the adjacency list be ordered for each node; e.g. does it have to be (1,2,3) and not (2,1,3)?

This is the only error that I get during a job that dies during a call to ParMetis_V3_PartKway

[bigfrog0717:25027] *** An error occurred in MPI_Irecv
[bigfrog0717:25027] *** on communicator MPI COMMUNICATOR 3 DUP FROM 0
[bigfrog0717:25027] *** MPI_ERR_RANK: invalid rank
[bigfrog0717:25027] *** MPI_ERRORS_ARE_FATAL (goodbye)

Any ideas?!

Thanks,
Craig Tanis