On Fri, Aug 14, 2015 at 4:58 PM, John Peterson <jwpeter...@gmail.com> wrote:

>
>
> On Fri, Aug 14, 2015 at 2:28 PM, Junchao Zhang <junchao.zh...@gmail.com>
> wrote:
>
>> Hello,
>>   I have a simple AMR code using SerialMesh. I run it 70 refinements on 12
>> cores.
>
>
> 2^70 = 1180591620717411303424, do you mean 7?
>

It is adaptive and some elements are not refined after a few iterations.
After 70 iterations, there are about 9.9M elements in total.


>
>
>> In metis_partitioner.C, I print out the partition result as follows.
>>
>> 437       // Otherwise  use kway
>> 438       else
>> 439         Metis::METIS_PartGraphKway(&n, &ncon, &csr_graph.offsets[0],
>> &csr_graph.vals[0], &vwgt[0], NULL,
>> 440                                    NULL, &nparts, NULL, NULL, NULL,
>> 441                                    &edgecut, &part[0]);
>> 442
>> 443       for (int i = 0; i < mesh.n_processors(); i++) {  // my code
>> 444         int cnt = 0;
>> 445         for (int j = 0; j < n; j++) if (part[j] == i) cnt++;
>> 446         printf("METIS assigned %d elements to proc %d\n", cnt, i);
>> 447       }
>>
>>  I found in the last few iterations, the partition result is severely
>> imbalanced. For example, in last iteration, proc 11 has 9M+ elements,
>> while
>> others only have hundreds or thousands.
>>
>> METIS assigned 2829 elements to proc 0
>> METIS assigned 270 elements to proc 1
>> METIS assigned 804 elements to proc 2
>> METIS assigned 264 elements to proc 3
>> METIS assigned 263 elements to proc 4
>> METIS assigned 733 elements to proc 5
>> METIS assigned 273 elements to proc 6
>> METIS assigned 407 elements to proc 7
>> METIS assigned 1200 elements to proc 8
>> METIS assigned 4795 elements to proc 9
>> METIS assigned 23404 elements to proc 10
>> METIS assigned 9866034 elements to proc 11
>>
>>
>> My mesh has only triangles, with at most one hanging node.
>
>
> Your *initial* mesh has hanging nodes?  We don't support this...
>

My input mesh has four triangles and does not have hanging nodes. After
refinement, hanging nodes appear.


>
>
>> I did not assign
>> any weight to nodes and I found libMesh uses number of nodes as weight (in
>> my case, it should be 3). I tried to changed &vwgt[0] to NULL when calling
>> METIS. From the printf, I got a quite balanced partitioning. However, the
>> program execution time increased a lot.
>>
>> Any clues?
>>
>
> I don't know what METIS does when you don't use any weights.  It sounds
> like it employs a more expensive algorithm, but results in a higher-quality
> partitioning.  Can you share the stats for this partitioning?
>
Sure. I will do it. Thanks.


>
> For what it's worth, we've noticed that METIS produces very strange
> partitions on even simple geometries, provided that you pick just the right
> (wrong) number of processors, so it's not surprising that it can also have
> trouble when partitioning millions of elements.
>
>
> https://drive.google.com/file/d/0B9BK7pg8se_iTXpJak1fZWwySm8/view?usp=sharing
>
> https://drive.google.com/file/d/0B9BK7pg8se_ibUJCdTBzR3h1UTQ/view?usp=sharing
>
> https://drive.google.com/file/d/0B9BK7pg8se_ia1F5ZE0zTF9pdFE/view?usp=sharing
>
> https://drive.google.com/file/d/0B9BK7pg8se_iY2hxQkl6ZHlFTmM/view?usp=sharing
>
> https://drive.google.com/file/d/0B9BK7pg8se_iNFI0bDNlUXJwVlE/view?usp=sharing
>
> --
> John
>
------------------------------------------------------------------------------
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to