Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First attempt at metis partitioner #878

Open
wants to merge 1 commit into
base: devel
Choose a base branch
from

Conversation

bremerm31
Copy link

This is a rough draft of a metis partitioner for SST. The partitioner takes the PartitionGraph and partitions it using Metis' METIS_PartGraphKway. This is a serial partitioner, but we have found in practice it's able to partition graphs with up to millions of edges in a reasonable amount of time.

The partition is currently unweighted as it assigns a weight of one per component, and a weight of 1 to each link. Simple statistics such as edge cut fraction and imbalance are outputted.

The CSRMat class is taken from a different project and thus may be slightly overdesigned. The main idea is to take a set of weighted vertices and a set of weighted edges. These are then formatted in a manner that is parsable by Metis.

Lastly, I took the config/sst_check_metis.m4 from SST-elements.

Todos

  • Need to update header guard for util.h
  • Need to remove dependence on 64-bit version of Metis

This is a rough draft of a metis partitioner for SST. The partitioner
takes the `PartitionGraph` and partitions it using Metis'
`METIS_PartGraphKway`. This is a serial partitioner, but we have found
in practice it's able to partition graphs with up to millions of edges
in a reasonable amount of time.

The partition is currently unweighted as it assigns a weight of one
per component, and a weight of 1 to each link. Simple statistics such
as edge cut fraction and imbalance are outputted.

The `CSRMat` class is taken from a different project and thus may be
slightly overdesigned. The main idea is to take a set of weighted
vertices and a set of weighted edges. These are then formatted in a
manner that is parsable by Metis.

Todos
 - Need to update header guard for `util.h`
 - Need to remove dependence on 64-bit version of Metis
@github-actions github-actions bot added AT: WIP Mark PR as a Work in Progress (No Autotesting Performed) AT: CLANG-FORMAT FAIL labels Oct 27, 2022
@github-actions
Copy link

CLANG-FORMAT TEST - FAILED (on last commit):
Run > ./scripts/clang-format-test.sh using clang-format v12 to check formatting

@bremerm31
Copy link
Author

Hi @gvoskuilen,

@cychan-lbnl had mentioned that you were interested in our Metis partitioner for sst-core. I thought I'd open a PR since that would make it the easiest for you to see what changes we had to introduce. Please let me know how you'd like to best proceed. I'm happy to re-write accordingly until it's ready to be merged.

Hope this helps,

Max

@feldergast
Copy link
Contributor

That's for submitting this PR. I have some other commitments, so it may be a bit before I can dive into it to make any suggestions.

@gvoskuilen
Copy link
Contributor

@bremerm31 Thanks! We've been considering integrating Metis and this will be helpful in making it happen. Like @feldergast , it'll be a bit before I get a chance to look. But very appreciated!

@bremerm31
Copy link
Author

Sounds good! There's definitely some obvious edits to make and I will also fix the clang formatting issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AT: CLANG-FORMAT FAIL AT: WIP Mark PR as a Work in Progress (No Autotesting Performed)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants