Parallel Graph & Mesh Partitioning

Discussions about the routines in ParMETIS

My confusion is about numflag option for ParMETIS_V3_PartKway()
The manual say that when the numflag is set to 0 for ParMETIS_V3_PartKway(), c-style numbering applies to vtxdist, xadj, adjncy, and part.
However, when I tried parmetis with a adjacency file that contains 0, it was hanging. I checked the parmetis.c code, and numflag is set to 0 (c-style). 'graphchk' would not pass a vertex id being 0.
I tried without 0 vertex, and parmetis, metis, and graphchk all works. However, the generated xxx.part file is in c-style including partition id 0.
I am wondering whether I can use 0 for vtxdist and xadj.

Hello everyone,I have seen that the ParMetis is not valid for directed graph partition unless convert it into undirected graph in this forum,but after I deleting some edges of a undirected graph at some lines(the rotor.graph in Parmetis Graph),it also can run correctly.How to explain it? It may means directed graph also can run in the ParMetis programs.Is it right?

Hi,

I'm new in ParMetis and I'm trying to run a few simple test running the program parmetis.c provided together with the library. However, whatever changes I make in this code aren't updated after compiling the whole code. Is there any specific make command I should use?

Thanks,
Caroline.

Hi

I am using the command line tool gpmetis,
a typical call looks like this:
gpmetis -objtype=vol -minconn my.graph 4

Now I want to do this with parmetis. But parmetis doesn't have all the command line tools of metis, there is only parmetis. So I wonder how the call might look with parmetis, I tried this
mpiexec -np 4 parmetis my.graph 1 4 0 0 0 0

But the partitioning is not as good as with gpmetis.

Thanks for any help!

Magnus

Hi,

I am trying to use ParMETIS and using ParMETIS_V3_PartKway . My code seems to works 64 processes. When I run it on 128 processes I get the following error. For 128 processes, I am trying to partition the graph 16 ways.

Maximum memory used: 3143092 bytes
Current memory used: 503516 bytes
***Memory realloc failed for cnbrpoolGet: cnbrpool. Requested size: 1523232 bytes

I not sure what this error means. I get a segmentation violation within the partitioning calls. I am not sure what kind of information you need, here are some details of the distributed graph:

vtxdist(17): 0 1885 3770 5655 7540 9425 11310 13195 15080 16965 18850 20735 22620 24505 26390 28275 30169

double* tpwgts = new double[ncon*nparts];

for( int i = 0 ; i < nparts ; i++ )
for( int j = 0 ; j < ncon ; j++ )
tpwgts[i*ncon+j] = 1.0 / nparts;

double* ubvec = new double[ncon];
for( int i =0 ; i < ncon ; i++ )
ubvec[i] = 1.05;

int options[3];
options[0] = 1;

Hello,

I am trying to partition a mesh with periodic boundaries. Since this periodic boundaries are small in regard to the number of total nodes in the mesh, (for the sake of simplicity and avoiding parallel communication) i would like to partition it such that these nodes are located in the same partition.

So I'm wondering, if is there a way to achieve this with parmetis?

Thanks:
Th

Dear all,
I am trying to use parmetis in a test program with a small hand-made mesh and ParMETIS_V3_PartKway, and got a linking error. My system is kubuntu 9.10, I am using metis 5.0 (built separately from parmetis) and parmetis 4.0.2. The error message is too long, but below I am sending a small portion of it, and I will be very much grateful if anyone could point out a solution to this problem. The program is composed of a main routine only and I am including metis.h and parmetis.h.

Best regards,

Felix C. G. Santos
______________________________________
Department of Mechanical Engineering
Federal University of Pernambuco
Brazil

Building target: parM
Invoking: GCC C++ Linker
/home/fcgs/mpich2-install/bin/mpic++ -L/usr/local/bin/ -L/home/fcgs/mpich2-install/lib -o"parM" ./main.o -lmpich -lmetis -lparmetis

Hello,

I'm using both Metis and ParMETIS packages and could somebody clarify for me the subject of the topic ?
Speaking in another words - can I use the limetis library, built from the sources of the libparmetis library, to get partitioning ? Will it be the same to partitioning generated by "originally serial" Metis ?

Thank you.

P.S. I could find any differences between the source folders.

ParMETIS_V3_PartGeomKway crashes with version 4.0.2, while it ran OK with ParMETIS 3. After some investigation, I have determined that it is overstepping the bounds on the array emarkers at line 114 of xyzpart.c. Changing the line to

if (cand[i].key <= emarkers[j+1]) {

fixes the problem. This catches the case where cand[i].key = emarkers[nbins]. Please let me know if you need more information, or if my fix is incorrect.

The Metis mesh partitioning routine ParMETIS_V3_PartMeshKway seems unable to provide the partitioning vector for the nodes of a mesh.
To me, that seems weird because the serial Metis routine METIS PartMeshDual is capable of providing npart as the partitioning vector of nodes.

Is there any work-around solution to get partitioning vector for the nodes of a mesh while also let the metis routine run in parallel?