Revamping Omniperf Architecture #153
Replies: 13 comments 13 replies
-
Describe the suggestion Justification We've been holding off on this because we wanted to do it right. This seems like an appropriate opportunity to tackle implementation. Implementation
Additional Notes
|
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Implementation
|
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Implementation Additional Notes Also, we should drop the separate metrics for 'AVG' v 'MIN' v 'MAX', etc., and just rely on pandas functions for these to cut down on unnecessary function calls / evals. cc: @feizheng10 |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Consistent flag naming between modes. Justification I may use Omniperf more than... almost anyone? Implementation I suggest we audit all existing flags, to see which can be unified between modes. Similar problems exist for e.g., kernel selection (on profile it's a regex, on analyze it's a integer based on the top N chart), and blocks (hardware block name on profile, table # on output). For profiles where there's only one arch (the typical case), we don't ask the user to specify it at all (otherwise kick out an error saying "you have to give the full path", or something). |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Implementation Additional Notes |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Better normalization modes over multiple kernels. Justification In conversation with users, I have found that there is significant confusion over values that are presented when multiple kernels are selected for analysis. In particular, folks ask questions like "why did my bandwidth go down when I executed <10x more kernels>"? Implementation Options include:
|
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Better metric dependency resolution and reuse Justification Enable re-use of intermediate computations and metrics to avoid code-duplication / copy-paste errors.
Other examples would be things like continually recomputing duration, GRBM_GUI_ACTIVE * $numCU, etc., etc. If we had a more flexible evaluator, we could also theoretically let a user ask for just a specific metric, or group of metrics (and break the "ask for SQ on profile", "ask for section x.y on analyze" chain) Implementation Less clear what the best way to do this short of a full AST with dependency resolution would be. Additional Notes May not be as important if we can pre-compile metrics |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Implementation |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Implementation Additional Notes |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Additionally, there may be some room to re-think the procedure for the test cases we add/cover. At the moment, I don't think there's much of a methodology to the random list of command combinations tested. Implementation
Additional Notes |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Implementation |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification Implementation See internal planning page for more info... Additional Notes |
Beta Was this translation helpful? Give feedback.
-
Describe the suggestion Justification
If we were able to re-think the Standalone GUI to include some of the best parts of the Grafana solution we'd be offering a much clearer solution to customer. Additionally, axing Granfana would mean an unequivocal source of metric definitions - the YAML files. No more jumping between MongoQL and yaml. Implementation $ omniperf analyze --host dummyhost --user amd --gui Here the user could interact with a dropdown menu for workload selection similar to today's Grafana. If you're not interested in that, you could skip the flag at install stage (to ignore docker DB setup) and interact via CLI or Standalone GUI in today's "offline" manner. Additional Notes |
Beta Was this translation helpful? Give feedback.
-
Background
Using this discussion space as an area to plan an upcoming "revamp" of Omniperf's source code.
Maintainers have been overjoyed by the number of users who have gotten value from this project. Omniperf, which originated as a proof-of-concept research project, is now widely used outside of its birthplace in AMD Research.
We'd like to take this as an opportunity to improve upon the tool's architecture to make contributing and maintaining easier for our community.
This is an open conversation around what improvements could be made to the architecture of Omniperf's source code
Contributing Guide
Describe the suggestion
A clear and concise description of what aspect of Omniperf's source code you'd like changed.
Justification
How does this suggestion add value to the project, its maintainers, and/or users?
Implementation
Describe any ideas, steps, or processes that could be used to implement this suggestion into our repository.
Additional Notes
Any notes you'd like to add that were not mentioned above.
Update (9/12)
Thank you to those who shared suggestions in this discussion post. With your input, we've compiled a list of tasks that have been broken into two milestones:
To maintain a regular release cycle and steady feature enhancements, our first sprint cycle will address Milestone 1. Once our feature branch is in a stable state, we'll begin prioritizing the new functionality included in Milestone 2.
For more detail on the specific changes being rolled out in each milestone along with up-to-date delivery estimates, please see our repo's Milestone page. Please feel free to star/watch our repository to monitor progress as we begin to roll these changes out 😄
Beta Was this translation helpful? Give feedback.
All reactions