Skip to content

Commit

Permalink
5-10: en dash
Browse files Browse the repository at this point in the history
  • Loading branch information
dankamongmen committed Sep 11, 2024
1 parent 0a9c34d commit c7904a3
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@

* Sampling skips most of a program's execution and takes just one sample that is supposed to represent the entire interval. Despite this, sampling usually yields precise enough distributions. The most well-known use case of sampling is finding hotspots in the code. Sampling is the most popular analysis approach since it doesn't require recompilation of the program and has very little runtime overhead.

* Generally, counting and sampling incur very low runtime overhead (usually below 2%). Counting gets more expensive once you start multiplexing between different events (5-15% overhead), sampling gets more expensive with increasing sampling frequency [@Nowak2014TheOO]. Consider using user-mode sampling for analyzing long-running workloads or when you don't need very accurate data.
* Generally, counting and sampling incur very low runtime overhead (usually below 2%). Counting gets more expensive once you start multiplexing between different events (5--15% overhead), while sampling gets more expensive with increasing sampling frequency [@Nowak2014TheOO]. Consider using user-mode sampling for analyzing long-running workloads or when you don't need very accurate data.

* The Roofline Performance Model is a throughput-oriented performance model that is heavily used in the High Performance Computing (HPC) world. It visualizes the performance of an application against hardware limitations. Roofline model helps to identify performance bottlenecks, guides software optimizations, and keeps track of optimization progress.

* There are tools that try to statically analyze the performance of code. Such tools simulate a piece of code instead of executing it. Many limitations and constraints apply to this approach, but you get a very detailed and low-level report in return.

* Compiler Optimization reports help to find missing compiler optimizations. These reports also guide developers when composing new performance experiments.

\sectionbreak
\sectionbreak
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
- scenario 3: you're evaluating three different compression algorithms and you want to know what types of performance bottlenecks (memory latency/bandwidth, branch mispredictions, etc) each of them has.
- scenario 4: there is a new shiny library that claims to be faster than the one you currently have integrated into your project; you've decided to compare their performance.
- scenario 5: you were asked to analyze the performance of some unfamiliar code, which involves a hot loop; you want to know how many iterations the loop is doing.
2. Run the application that you're working with daily. Practice doing performance analysis using the approaches we discussed in this chapter. Collect raw counts for various CPU performance events, find hotspots, collect roofline data, and generate and study the compiler optimization report for the hot function(s) in your program.
2. Run an application that you're working with daily. Practice doing performance analysis using the approaches we discussed in this chapter. Collect raw counts for various CPU performance events, find hotspots, collect roofline data, and generate and study the compiler optimization report for the hot function(s) in your program.

0 comments on commit c7904a3

Please sign in to comment.