MATPARTITIONINGHIERARCH#

Creates a partitioning context via hierarchical partitioning strategy. The graph is partitioned into a number of subgraphs, and each subgraph is further split into a few smaller subgraphs. The idea can be applied in a recursive manner. It is useful when you want to partition the graph into a large number of subgraphs (often more than 10K) since partitions obtained with existing partitioners such as ParMETIS and PTScotch are far from ideal. The hierarchical partitioning also tries to avoid off-node communication as much as possible for multi-core processor. Another user case for the hierarchical partitioning is to improve PCGASM convergence by generating multi-rank connected subdomain. Collective

Input Parameter#

  • part - the partitioning context

Options Database Keys#

  • -mat_partitioning_hierarchical_coarseparttype - partitioner type at the first level and parmetis is used by default

  • -mat_partitioning_hierarchical_fineparttype - partitioner type at the second level and parmetis is used by default

  • -mat_partitioning_hierarchical_ncoarseparts - number of subgraphs is required at the first level, which is often the number of compute nodes

  • -mat_partitioning_hierarchical_nfineparts - number of smaller subgraphs for each subgraph, which is often the number of cores per compute node

References#

  • **** -*** Fande Kong, Xiao-Chuan Cai, A highly scalable multilevel Schwarz method with boundary geometry preserving coarse spaces for 3D elasticity problems on domains with complex geometry, SIAM Journal on Scientific Computing 38 (2), C73-C95, 2016

  • **** -*** Fande Kong, Roy H. Stogner, Derek Gaston, John W. Peterson, Cody J. Permann, Andrew E. Slaughter, and Richard C. Martineau, A general-purpose hierarchical mesh partitioning method with node balancing strategies for large-scale numerical simulations, arXiv preprint arXiv:1809.02666CoRR, 2018.

See Also#

MatPartitioningSetType(), MatPartitioningType, MATPARTITIONINGMETIS, MATPARTITIONINGPARMETIS,

Level#

beginner

Location#

src/mat/partition/impls/hierarchical/hierarchical.c

Examples#

src/ksp/ksp/tutorials/ex64.c


Edit on GitLab

Index of all MatOrderings routines
Table of Contents for all manual pages
Index of all manual pages