AMD uProf CPU profiler follows a statistical sampling-based approach to collect profile data to identify the performance bottlenecks in the application. A few high-level features to understand the CPU profiler capabilities are listed here:
- Profile data is collected using one of the following approaches:
- Event Based Profiling (EBP) — sampling based on Core PMC events to identify micro- architecture related performance issues in the profiled applications.
- Instruction based Sampling (IBS) — precise instruction-based sampling.
- Call-stack Sampling
- Secondary Profile Data
- Thread concurrency (Windows only, requires admin privilege)
- Thread names (Windows and Linux only)
- Profile Scope
- Launch App— launch an application and profile that process and its children.
- System-wide — profile all the running processes and/or kernel.
- Attach Process — Attach to an existing application (Native applications only)
- Profile mode
- User/Kernel — profile data is collected when the application is running in User and/or Kernel mode.
- Supported Languages:
- C, C++
- Java
- .NET (5.0, 6.0, and Framework)
- FORTRAN
- Assembly applications
- Supported Software Components
- User-space applications
- Dynamically linked/loaded modules
- Drivers
- OS kernel modules
- Profile data is attributed at various granularities
- Process, Thread, Load Module, Function, Source line, or Disassembly
- C++ and Java in-lined functionsNote: uProf requires debug information from the compiler for correlating the profile data to functions and source lines.
- Data and Report Files
- Collected profile data initially stored to raw data files.
- Processed profile data is stored to database files used for generating the CLI report or GUI visualization.
- Profile report is saved to a comma-separated-value (CSV) format file that can be viewed using any spreadsheet viewer.
- AMDuProfCLI, the command-line-interface can be used to configure a
profile run, collect the profile data, and generate the profile report.
- Collect command to configure and collect the profile data.
- Report command to process the profile data and to generate the profile report.
- Profile command to collect the performance profile data, analyze it, and generate the profile report.
- AMDuProf GUI can be used to:
- Configure a profile run.
- Start the profile run to collect the performance data.
- Analyze the performance data to identify potential bottlenecks.
- AMDuProf GUI has various UI elements to analyze and view the profile
data at various granularities:
- Hot spots summary
- Session Information
- Thread concurrency graph (Windows only and requires admin privileges)
- Process and function analysis
- Source and disassembly analysis
- Top-down and bottom-up call path — visualizations to explore the function call flow of an application for analyzing the time spent on functions and its callees.
- Flame Graph — callstack visualizer as a flame graph
- Call Graph — call stack and caller/callee visualizer in table format
- HPC — to analyze OpenMP and MPI profile data
- Timeline Visualizer — timeline views for MPI API trace and OS event trace information
- Cache Analysis — to analyze the hot cache lines that are false shared
- Profile Control API
- Selectively enable and disable profiling from the target application by instrumenting it, to limit the scope of the profiling