Parallel Graph & Mesh Partitioning

Discussions about the routines in ParMETIS

Is there a way to get the edges that are cut after calling PartGraph*?

Thanks.

Hello,

[Question] Has the CSR encoding to be complete, in the sense that each edge has to be mentioned in the adjacency lists of both the vertices it is incident to?

[Background]

I use Mesh2Dual to generate a CSR coded graph from a 3-dimensional mesh. This represent a three-dimensional domain where fluid dynamics are to be simulated.

Before I promote this graph to PartKway, I have to merge this graph with several binary trees, which are thought to be embedded into the 3-dimensional domain. I want to put edges between the embedded trees and certain vertices of the domain graph (actually I want to connect a tree vertex to the part of the domain it belongs to)

It is rather straight-forward how generate the csr encoding for the merged graph from the two original graphs (provided you know how you want it to be). However this is rather cumbersome to write and debug, even more if this ought to be fast.

Hi I am parallelizing my finite volume code using MPI. And I use the free METIS software to partition my triangular unstructured mesh. I read the Metis and ParaMetis manuals and I do not know if I have lost the point, but I did not find a METIS routine than partitions the mesh in a way that each partition has the same (or almost the same) number of edges (with edge I mean the side of the triangle). Metis either partitions the vertices (for finite element codes) or the cells (for finite volume code). In my case, since I use the telescopic property of conservative equations, within each time step I update my cell values by running a cycle through the sides, since all I have to compute is fluxes through the sides. So in order to have a balanced load between processors I have to distribute evenly the edges between the processor, and I do not gain this result if I partition the cells. Do you have any suggestion please?Have I maybe lost this feature in METIS?thanks
Alberto

My apologies if this has been done to death already. I'm having trouble compiling Parmetis 3.1.1 on Mac OS X. I get the following error when I 'make':

/Users/JJ/openmpi/bin/mpicc -DNDEBUG -O3 -I. -c node_refine.c
node_refine.c: In function ‘KWayNodeRefine__’:
node_refine.c:162:6: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See for instructions.
make[1]: *** [node_refine.o] Error 1
make: *** [default] Error 2

Any help on how to solve this is appreciated.

Ted

Hello,
I am using the function ParMETIS_V3_PartMeshKway to partition an unstructured mesh. The output of this method is the part list and the number of edges cut by the partitioning. I would like to know whether it is possible to get a list of adjoining parts for every part in the mesh.

Thanks and regards,
Sumit

When using ParMETIS_V3_PartKway on a workstation with duo or quad cores, the routine returns part values up to the request nparts, but only even numbers; e.g. if nparts = 8, part returns 2,4,6,8. The routine is being called from a Fortran code, and ParMETIS is compiled with PETSc. Any insight into this problem would be greatly appreciated.

Hi,

I am using Parmetis to partition multi-physics mesh (involving two meshes now). I am using V3_PartMeshKway function in Parmetis.
I am filling "elmwght" argument with 1 if it is the first mesh and 2 for the second mesh.
I am expecting each partition is load balanced for each mesh. However, I am only getting partitioning result as
same as if I fill "elmwght" array with single number (elmgwght has no effect).

What could it be wrong?

If you help, I will be glad.

Thanks,

Hello, I am completely lost as to how I should be using ParMETIS to partition a mesh in fortran. I'm finding the documentation very confusing. Does anybody have a simple fortran code that uses ParMETIS to partition a mesh they could send to me or post here?

Our ParMETIS based application can run successfully with some small mesh. But when we test against a bigger mesh, we saw "invalid communicator" error from ParMETIS_V3_Mesh2Dual.

The error happened at the end of ParMETIS_V3_Mesh2Dual when FreeCtrl(&ctrl) is called.
The real reason is that ctrl.gcomm is overwritten by "1" in one loop in file mesh.c.

In ParMETIS_V3_Mesh2Dual, ind and wgt are declared as
idxtype ind[200], wgt[200];

ind[count] and wgt[count] are written in the loop starting from line 261. In my case, sometime count is bigger than 200, therefore, the access to ind[count] and wgt[count] is out of boundary. As a result, ctrl is overwritten.

I think my questions are:
What are ind and wgt for?
why are they declare to have size 200?
May I simply to extend the size of ind and wgt to have ParMETIS_V3_Mesh2Dual work for my case?

thanks,
Mi

I have an error that I suspect somehow relates to parmetis because building without parmetis doesn't give this error. However, I need parmetis in there. I do have an suspicion that I need to change a pkgconfig file (parmetis.pc). Similar errors have been fixed that way but for other packages.

Anyone know anything about this lost symbol _SEEK_END?

Aron-Wahlbergs-MacBook-Pro:python aron$ python demo.py
Traceback (most recent call last):
File "demo.py", line 20, in
from dolfin import *
File "/Users/aron/Work/FEniCS/build/lib/python2.6/site-packages/dolfin/__init__.py", line 11, in
import cpp
File "/Users/aron/Work/FEniCS/build/lib/python2.6/site-packages/dolfin/cpp.py", line 28, in
_cpp = swig_import_helper()
File "/Users/aron/Work/FEniCS/build/lib/python2.6/site-packages/dolfin/cpp.py", line 24, in swig_import_helper
_mod = imp.load_module('_cpp', fp, pathname, description)