jeremymain / gpuprofiler Goto Github PK
View Code? Open in Web Editor NEWGPUProfiler - Understand your application and workflow resource requirements
GPUProfiler - Understand your application and workflow resource requirements
Currently capturing all GPUs utilization information but only displaying the first detected GPU.
GPU utilization is a relative value in relation to the GPU clock. Correlating the GPU clock with the reported utilization for instances where intermittent non-sustained GPU work does not trigger the boost clock and could be misinterpreted as a requirement for more GPU resource than is actually required for the workload.
Fred's request:
Add the GPU's BUS ID information to the system state information captured and saved in the GPD file
Looking at graphs is interesting but when you need to know the actual values clicking on the line data will display a tooltip with the utilization and value (where supported).
By double clicking on the graph, change to
Default mode => minimal view => separate graphs for each resource
Doing a large number of concurrent VMs in various configurations it became clear that automatically reverting to the default value is not terribly convenient.
double click on the graph output and the window will only display the graph output.
Double clicking again will return the display to the standard view
Fred's request:
Capture VRAM clock information
When entering an invalid range the UI does not enforce a valid range setting leading to an application exception error.
I had noticed that the histogram calculation was not including the 100% utilized values in the 90 ~ 99% bar graph.
Additionally, the 0 values for a resource will not be added to the histogram bucket.
When a resource is not being used rather than showing the 0~10 as 100% probability it will now display nothing as no utilization data exists.
Compare the CPU utilization (issue with 100%) in the histogram and the GPU utilization as well as the encoder/decoder utilization for the improved 0% handling
When profiling for long periods of time, users may encounter periods where they notice some performance difference in their normal application usage that may wish to correlate with the data collected during the profiling run.
Having the ability to show in the graph the actual time the data was sampled at would simplify pinpointing when the event occurred.
Adding the label insertion support via hot-key would also be a useful addition to support this end-user assisted workload profiling.
Windows and Linux.
This way they can be started and managed administratively via GPOs
With possibility as light weight (no graphical output) persistent daemons.
Allow the histogram when displayed to be horizontally resized
Fred's request:
Multi-GPU support and selection.
With more than 1 GPU, I must be able to pick the 1 and want to analyze.
Finding a non-WMI method to capture this information has been elusive.
hello Jeremy, thanks A LOT to build a nice GUI instead of the sh** nvidia-smi
now a lot of options i need are not there:
regards,
fred
Add the current remoting protocol to the GPD data file
GPUProfiler supports drag-and-drop of GPD files, adding the file association will make viewing previously captured data simpler.
Fred's request:
GPU clock : real clock (if boost is enable, then always the max)
For diverse utilization over a profile period, the resulting histogram scale of 0 ~ 100 is difficult to visually determine the differences between the different values.
Prior versions displayed the entire intended data graph even if the data collection process was stopped early. Now the graph will display the entire graph data on early stop or if the view is zoomed during collection.
Detect the protocol specific settings and store those settings in the GPD file.
Save the current limited number of preferences and reload on next launch.
By using a keyboard accelerator display the lines thicker to aid in situations where fine-details may be lost (during presentations, using a projector, etc.)
candidate would be the 'B' key.
Question: should there be two or three thickness levels ?
Fred's request:
SEPARATE %usage of GPU and Vram... in nvidia-smi both are reported into the single GPU%, so you don't know which one is starving first...
JJM:
[ nvidia-smi -q ] does list the various utilization data for SM, memory controller, bus, encoder and decoder.
To better understand the relationship between GPU (SM) and the video encode/decode engines I will add these metrics. Only GPUs that are supported by NVML will allow this data to be captured.
GPUProfiler Version: GPUProfiler_1.04-x64
Type: Physical
OS: W7x64 Professional SP1 / German UI
CPU: Intel Xenon E31281v3 @3.70 GHz
RAM: 16 GB
How can we provide more Information to you?
What do you need?
Best Regards
Fred's request
Record at profile time of GPU boost is enabled and save within the GPD file
Fred's request:
report and store in the GPD file the current (at profile time) the driver model / version:
WDDM version or TCC
To enable more detailed performance metrics, I will prioritize the use of the NVML API over NVAPI.
There is a limitation in NVML that it only supports x64 build only, therefore the x86 build will lack the ability to use NVML.
Viewing .GPD files will be unaffected by this limitation
In a list box display all of the labels, their duration and some metrics about each period.
I have had multiple requests to add network (send/recieve) utilization
Adding it here for tracking.
Previously when zooming via the mouse wheel, the zoom area was weighting the range equally without respect to the current mouse position. This detracts from the tool usability during the analysis phase but fixed in the next release.
When used within a VM, capture the agent version information and save within the GPD file.
Confirm all of the states are correctly reset on particular operations
However when a file is dropped into the application, retain the current display options
Post profiling segmentation of the workload events to classify resource signatures for the operations.
Can you please add a minimize button for the Window?
In case you haven't figured out how to use the application, the wiki will provide some more information about how I use the tool.
Define what information is collected and saved in a GPD file.
This would be useful for users that may wish to share profile data but are reluctant to due to not knowing the scope of the collected data.
When profiling is being performed, using a global hot key to pop-up a dialog to capture the label, (Ex: "Model load start") and insert that label into the graph output.
Storing of the label data was planned and part of the .GPD file format
When using GPUProfiler with a batch file, allow calling the GPUProfiler executable with a command line option to simply add a user defined label to the profile timeline during profiling.
This will be useful when using batch files to automate testing of different configurations.
Because it will be a simple command I could either create a small EXE to perform this or add this to the main application.
This is not an implementation sample, just a mockup to illustrate the feature.
When the tool is being used to simply monitor for demo purposes or for performing an initial investigation where the entire sample term data is not intended to being saved, the mode would allow endless monitoring of the resource states.
When the monitor mode is stopped, an option to save the data would be possible within the current visible range.
Most people want to use the tool as a portable application, without an installer.
Shifting to static library linking will increase the application size to 2.5MB
Add four bar graphs to show the resource utilization probability
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.