LLNL / Caliper

Caliper is an instrumentation and performance profiling library
http://software.llnl.gov/Caliper/
BSD 3-Clause "New" or "Revised" License
343 stars 63 forks source link

Update Variorum Service to use Energy API. #579

Open tpatki opened 1 month ago

tpatki commented 1 month ago

Fixes https://github.com/LLNL/variorum/issues/572.

Problem: The existing Variorum service in Caliper uses the variorum_get_power_json API, which only returns instantaneous power. This is not meaningful when we are looking at function start/end.

Solution: What we'd like instead is total energy for the function. With Variorum v0.8, we have added the variorum_get_energy_json API. This PR updates the existing service to use this newly added API.

This PR supersedes #567 from @tjeter.

Limitations and future work: This version of the service will not support nested regions in Caliper. Once https://github.com/LLNL/variorum/issues/575 is addressed, we will update the Caliper service to support nested regions in a separate PR.

Testing: This PR as been tested with multiple caliper examples (examples/apps/c-spinloop-example) by @rountree and @tpatki on Lassen. This new spinloop example has also been added to the PR.

ToDo:

Co-authored by @tjeter.

tpatki commented 1 month ago

Note: Once https://github.com/LLNL/variorum/issues/575 is addressed, we will update the Caliper service to support nested regions in a separate PR.

tpatki commented 1 month ago

@daboehme This is ready for your review. Please let me know if I missed something. Note that this doesn't support nesting yet, but you can get function-level energy values. I will work on adding support for nesting in Variorum and will update this service soon.