Parallel Graph & Mesh Partitioning

Discussions about the routines in ParMETIS

i'am a beginer in Hydropower engineering department in Hohai University of China, i want to use the parmetis routines for the mesh partition,but i can't output the result. so i would like to know if any of you do me favor and provide me a code for mesh partition. C or C++ code are all good

Best regards

Zhang lei

I would like to ask if someone else tried to compile parMETIS under cygwin, I have encountered compilation problem when make is unable to create dynamicaly linked library libparmetis.so (make goes well until the libparmetis).

console read ../libparmetis.a(coarsen.o):coarsen.c:(.text+####): undefined reference to `_MPI_*'

(the #### and * wildcards used just to generalize the error code because it spits out 20 lines of various undefined references.

I tried to use nmag package, mpich has been installed.

I would be glad for any information. Thank You.

Hello,

I am puzzled how to deal with the distributed CSR format in cases of dynamic repartitioning. According to the ParMetis documentation the distributed CSR format requires that:

"... each Processor P_i stores n_i consecutive vertices of the graph ..."

For the first partitioning this is no problem: each processor reads his part of the input mesh/graph from a file such that each processor stores consequtive nodes. I call ParMetis and I have a distributed list of the partitioning result.
Now I start the redistribution of the nodes with all the data connected to that node according to the result from ParMetis. If this is done a processor does no longer exhibit a consequtive list of nodes. So how can I redistribute again?
Two possibilities come to my mind that is either
to redistribute the nodes before calling ParMetis again (this is quite unreasonable) or
to renumber the whole mesh (actually this also seems quite unreasonable).

Hi everybody,

we are currently trying to use ParMETIS on very huge Graphs, so we would like to change idxtype from 32 bit to 64 bit.
Out idea was to use METIS 5.0pre2 together with ParMETIS 3.1.0 and adapt the missing pieces ourselves.
Do you think that is reasonable? Has anybody done something like that before and could maybe give some hints or even share their code?

I've already noticed that some functions do not seem to exist anymore in METIS 5.0pre2 (like METIS_mCPartGraphRecursive2 for example). Have only the names changed, so that I can use the new functions (METIS_mCPartGraphRecursive in this case)?

Best regards and thanks for any help,

Hendrik

Hello,

I am using parmetris for partitioning tetrahedral grids via:


ParMETIS V3 PartKway (idxtype *vtxdist, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt,
int *wgt?ag, int *num?ag, int *ncon, int *nparts, ?oat *tpwgts, ?oat *ubvec,
int *options, int *edgecut, idxtype *part, MPI Comm *comm);

Grids with up to 13000 elements (tetraeders) are decomposed the way it should be, larger grids however result in a segfault:


[~-devel:20359] *** Process received signal ***
[~-devel:20359] Signal: Segmentation fault (11)
[~-devel:20359] Signal code: Address not mapped (1)
[~-devel:20359] Failing at address: 0x48ee
[~-devel:20359] [ 0] [0xffffe600]
[~-devel:20359] [ 1] /home/ckonrad/lib/libparmetis.so.3.1(ParMETIS_V3_PartMeshKway+0x189) [0xf7fb6789]
[~-devel:20359] [ 2] parpart(main+0x6fd) [0x804e3cd]
[~-devel:20359] [ 3] /lib/libc.so.6(__libc_start_main+0xe0) [0xa55f70]

Hi,
I tried to partition a very large graph (15M nodes, 60M edges) using ParMetis on a cluster of 4 computers, but at the first step it told me that there is not enough available memory. Does ParMetis constructs all of the adjacency lists on one of the nodes or the memory allocations are also distributed?

Thanks,
Sara

Dear colleagues

I’m a Phd candidate (Just started) in mechanical engineering at School of Mechanical Engineering at Federal University of Uberlândia, Brazil, and my intent is to use the parmetis routines for solving computational fluid dynamics involving compressible turbulent flows over complexes geometries and in the presence of combustion.
I would like to know if any of you could help me showing at least some parts of a code in Fortran 90 or 95, that uses parmetis. I’m having some difficulties in finding examples of parmetis in Fortran.

Best regards

Att

João Marcelo

Hello,

in the parmetis manual is mentioned the possibility to use Mesh2Dual routine to construct dual graph that can be then used in AdaptiveRepart, I would like to know, how to obtain vertex distribution array (vtxdist), which is needed in AdaptiveRepart routine. Is it assumed, that nodes are also numbered in a such way, that is similar to element numbering - each processor owns specific range of nodes/elements? This is unfortunately not mentioned in the manual.

Thank you
Borek

Hi,

does METIS need to collect ALL informations from all nodes to apply repartitioning, or are there also decentral methods for repartitioning?

Hi,

The partitions produced with the sequential metis functions are different if I use either the files shipped with ParMETIS or the standalone METIS version.

Is there a difference in quality between them? Any other aspect worth mentioning and that should justify using one over the other? I notice that the code is different on a number of places...

Thank you in advance and regards,

Nelson