Parallel Graph & Mesh Partitioning

Discussions about the routines in ParMETIS

Hi Everyone,

I get the following error at runtime,
PARMETIS ERROR: The ndims should be <= 3
but as you can see the ndims is set to 3,
I have also specified XYZ,

idx_t *part=NULL;
part=(idx_t*)malloc(cube.size()*sizeof(idx_t));
idx_t ndims=3;
MPI_Comm cworld;
MPI_Comm_dup(MPI_COMM_WORLD, &cworld);
ParMETIS_V3_PartGeom(vtx_dist,&ndims,XYZ,part,&cworld);

I appreciate your help
Thanks,

Dr J

For a mesh generated after mesh refinement, suppose the user can provide the refinement history, basically the parent-children element relationship, can ParMETIS do faster partitioning?
Is it useful to have this interface?
Thanks.

Hello,
I am reading the paper about ParMetis, that is "Parallel Multilevel k-Way Partitioning Scheme for Irregular Graphs". It presents that graph coloring is used to eliminate unnecessary vertex movement during the k-way re refinement,but I find that only two subphases are needed for one complete kwayfm from kwayrefine.c of parmetis 4.0.3 release. It seems that the parallel k-way refinement algorithm in ParMetis is not a coloring-based method, is it? Is there another paper which introduces the lastest release of ParMetis?
Thank you!

I am partitioning a triangle based finite element mesh using ParMETIS. At some processor counts, ParMETIS_V3_PartKway is giving some processors 0 nodes and not scheduling any nodes to be placed on the processor.

Has anyone else experienced this, or is this a possible issue in how we are sending the mesh informatin to ParMETIS_V3_PartKway?

Thanks.

Hi all,

I packaged Metis as RPM, your software is now directly installable from Fedora repositories.

I'm looking to package ParMetis as well; however, i see that Metis source code is included and compiled during ParMetis compilation too.

It would be interesting (and more simple for packagers) compiling ParMetis specifying where Metis library already installed can be found on the system's directory tree without re-compile it again.

Would be practicable this for you?

I am trying to use ParMETIS to partition my graph. In particular, I have written a small program (linked below) which calls ParMETIS_V3_PartKway with appropriate parameters. Even though all the parameters supplied to the function are correct, the API crashes with a segmentation fault.

Note that I am using the same graph as the example graph on page 12 (Section 4.2.1) in the manual. The xadj, adjncy, vtxdist printed out by my program are exactly same as in the manual.

Program is available here: http://www.cs.ucr.edu/~kvora001/contents/parmetis/partitioner.cpp
Input graph is available here: http://www.cs.ucr.edu/~kvora001/contents/parmetis/sample.ip

The command used to run is: mpirun -np 3 ./partitioner sample.ip 15 3

Output using mvapich2 is available here: http://www.cs.ucr.edu/~kvora001/contents/parmetis/out.mvapich2.out

My code calls ParMETIS_V3_PartMeshKway(..., ubvec, options, &edgecut, ... ) to partition a mesh on three processes. I ran the code multiple times and found it sometimes gave different partition results.
I tried the default options with options[0] = options[1] = options[2] = 0, or customized options like options[0] = 1, options[1] = 0, options[2] = 99. But in either case, I saw different results.
Is it possible to forbid the randomization? That is helpful in debugging a code.

Thank you very much.

Dear All,

I have a problem, when I am trying to partition mesh using Parmetis. Most cases work fine, but occasionally I got crashes like this:

[ 0] [ 7] [ 1] ***ASSERTION failed on line 533 of file /opt/apps/intel13/mvapich2_1_9/petsc/3.5/externalpackages/sandybridge/parmetis-4.0.2-p5/libparmetis/kwayrefine.c:ognpwgts[j*ncon+h] <= badmaxpwgt[j*ncon+h] || pgnpwgts[j*ncon+h] <= ognpwgts[j*ncon+h]
[ 5] [ 9] [13] [11] [ 8] ***ASSERTION failed on line 533 of file /opt/apps/intel13/mvapich2_1_9/petsc/3.5/externalpackages/sandybridge/parmetis-4.0.2-p5/libparmetis/kwayrefine.c:ognpwgts[j*ncon+h] <= badmaxpwgt[j*ncon+h] || pgnpwgts[j*ncon+h] <= ognpwgts[j*ncon+h]
***ASSERTION failed on line 533 of file /opt/apps/intel13/mvapich2_1_9/petsc/3.5/externalpackages/sandybridge/parmetis-4.0.2-p5/libparmetis/kwayrefine.c:ognpwgts[j*ncon+h] <= badmaxpwgt[j*ncon+h] || pgnpwgts[j*ncon+h] <= ognpwgts[j*ncon+h]

Hello,

I am trying to use ParMetis to partition the hexahedral mesh ~ 138 million into 16000 partitions (I have fortran program to read files, etc). I am getting following error. I am new to this and would appreciate if someone can help. Thanks much!
-----------------------------------------------------
in add_g_cv...
done add_g_cv...
in add_f_cv...
done add_f_cv...
in repartition, npart = 16000 ...
about to call METIS...
Current memory used: 240518168968 bytes
Maximum memory used: 240518168968 bytes
***Memory allocation failed for SetupCtrl: ctrl->tpwgts. Requested size: 4974156244448256 bytes
made it back from METIS. edgecut = 0
[ 0 ] Error: invalid part in ncv_ib.
[ 0 ] graceful_exit 0
*************** unused pparams *******************
************ end of unused pparams ***************

I notice that when building ParMETIS 4.0.3, I see lines such as

/usr/bin/ar cr libmetis.a (object files)

and

/usr/bin/ar cr libparmetis.a (object files)

Does anyone know how to get a verbose listing, as in "ar crv" where the "v" option calls for a line-by-line listing as each object file is added to the library? It would be nice to see if there was a problem during the compilation of a particular source file, resulting in the "ar" command not finding the object file. I'm unfamiliar with "cmake" and cannot find where the options to the "ar" command are specified.

On a separate issue, it seems that building ParMETIS and METIS on a Cray system (e.g., Cray XE6, XC30, or XC40) fails when the Intel programming environment is used (i.e, the module "PrgEnv-intel" is loaded). The problem appears with the following messages:

rm -rf build/Linux-x86_64
mkdir -p build/Linux-x86_64