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

Meshblock Cost Function and Diagnostics #892

Merged
merged 7 commits into from
Jun 20, 2023

Conversation

Yurlungur
Copy link
Collaborator

@Yurlungur Yurlungur commented Jun 19, 2023

PR Summary

Again part of the effort to get riot onto parthenon develop. Here I pull several features in from riot:

Memory Diagnostics Per Meshblock

Whenever variables or swarms are allocated or deallocated, memory used on a given meshblock is updated in a running total. Note this is only "interior" data. I also add the ability to look at the comm buffer pool, but this is a per-mesh quantity since the pool is shared. Not per block. I also didn't add the equivalent logic for boundary swarms, as I didn't fully understand the swarm machinery, and it's probably a negligible contribution. @brryan should probably take a look at the memory diagnostic logic for swarms in case I missed something.

I showcase this capability by modifying the sparse example to show memory footprint in bytes per cycle.

Manual load balancing

  • I "made public" manual cost-based load balancing again. It's enabled in the input deck by setting parthenon/loadbalancing/balancer=manual.
  • I also explicitly disable timers based load balancing, as this isn't fully threaded through the infrastructure anymore. I think it's not trivial to figure out what to do here, and I created an issue, Timers based load balancing #891 to discuss.
  • I clarify what it means to use the manual vs default load balancing. Automatic load balancing is timers. Manual is the cost-based where downstream codes are expected to call the meshblock handles. Default is just meshblock count.

I also document both of the above new features.

PR Checklist

  • Code passes cpplint
  • New features are documented.
  • Adds a test for any bugs fixed. Adds tests for new features.
  • Code is formatted
  • Changes are summarized in CHANGELOG.md
  • CI has been triggered on Darwin for performance regression tests.
  • Docs build
  • (@lanl.gov employees) Update copyright on changed files

@Yurlungur Yurlungur added the enhancement New feature or request label Jun 19, 2023
@Yurlungur Yurlungur self-assigned this Jun 19, 2023
@Yurlungur
Copy link
Collaborator Author

Resolves #576

@Yurlungur Yurlungur linked an issue Jun 19, 2023 that may be closed by this pull request
Copy link
Collaborator

@pdmullen pdmullen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Collaborator

@lroberts36 lroberts36 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Yurlungur
Copy link
Collaborator Author

Athenapk folks: @pgrete @forrestglines do you want to take a look or should I just pull the trigger? I think the impact on athenapk is minimal.

@Yurlungur
Copy link
Collaborator Author

If I don't hear from AthenaPK folks by the end of tomorrow (Tuesday), I'll just pull the trigger. I don't think there's anything in here that should impact you.

@Yurlungur Yurlungur enabled auto-merge June 20, 2023 15:30
@Yurlungur Yurlungur merged commit 069377b into develop Jun 20, 2023
@Yurlungur Yurlungur deleted the jmm/meshblock-timers-and-diagnostics branch June 20, 2023 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Default load balancing options/behavior
4 participants