Skip to main content
`Ctrl`+`K`

# 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-process 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

## Note

See [KC16] and [KSG+18].

## References

[KC16]

Fande Kong and 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.

[KSG+18]

Fande Kong, Roy H. Stogner, Derek R. 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. In 2018 IEEE/ACM 9th Workshop on Latest Advances in Scalable Algorithms for Large-Scale Systems (scalA), 65–72. November 2018. doi:10.1109/ScalA.2018.00012.

## See Also

`MatPartitioningSetType()`, `MatPartitioningType`, `MATPARTITIONINGMETIS`, `MATPARTITIONINGPARMETIS`

## Level

beginner

## Location

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

## Examples

src/ksp/ksp/tutorials/ex64.c

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