Difference between revisions of "Gprof Tutorial"

From HPC Wiki
Jump to navigation Jump to search
m (Fix video link to update video consolidate quiz)
m (Fix numbering of quizzes, replace esoteric programming language in first question, and write short intro text)
Line 3: Line 3:
 
{{Hpc_nrw_tutorial_box}}
 
{{Hpc_nrw_tutorial_box}}
 
Gprof is a free and easy-to-use profiler.
 
Gprof is a free and easy-to-use profiler.
 +
Profiling applications gives valuable insights into the program structure.
 +
It exposes performance bottlenecks and points to sections of the code where optimization is most effective.
 +
 +
This tutorial covers the necessary basics to get started with gprof.
  
 
__TOC__
 
__TOC__
Line 20: Line 24:
 
+  C/C++, Fortran, Pascal
 
+  C/C++, Fortran, Pascal
 
|| True
 
|| True
-  Haskell, Cobol, Brainfuck
+
-  Haskell, Cobol, Whitespace
 
||
 
||
 
</quiz>
 
</quiz>
Line 54: Line 58:
  
 
{{hidden begin  
 
{{hidden begin  
|title = How should the parameters be when running the instrumented application?
+
|title = 4. How should the parameters be when running the instrumented application?
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>
Line 69: Line 73:
  
 
{{hidden begin  
 
{{hidden begin  
|title = 1. What is a call graph?
+
|title = 5. What is a call graph?
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>
Line 84: Line 88:
  
 
{{hidden begin  
 
{{hidden begin  
|title = 2. How do you generate a callgraph of a gprof profile?
+
|title = 6. How do you generate a callgraph of a gprof profile?
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>
Line 99: Line 103:
  
 
{{hidden begin  
 
{{hidden begin  
|title = 3. What is gprof2dot?
+
|title = 7. What is gprof2dot?
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>
Line 114: Line 118:
  
 
{{hidden begin  
 
{{hidden begin  
|title = 4. Does gprof work with MPI applications?
+
|title = 8. Does gprof work with MPI applications?
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>
Line 129: Line 133:
  
 
{{hidden begin  
 
{{hidden begin  
|title = 5. How much overhead does gprof produce?
+
|title = 9. How much overhead does gprof produce?
 
}}
 
}}
 
<quiz display=simple>
 
<quiz display=simple>

Revision as of 11:20, 20 November 2020


HPC.NRW
HPC.NRW
Associated Pages
+ This is an #HPC.NRW course
HPC Courses
1. Introduction to Linux in HPC
2. Gprof Tutorial
3. OpenMP in Small Bites


Gprof is a free and easy-to-use profiler. Profiling applications gives valuable insights into the program structure. It exposes performance bottlenecks and points to sections of the code where optimization is most effective.

This tutorial covers the necessary basics to get started with gprof.


Quiz

1. What lanuages can Gprof profile?

Python, Java, Julia
C/C++, Fortran, Pascal
Haskell, Cobol, Whitespace

2. How does gprof profiles an application?

By instrumenting the application during compilation.
Through static analysis of the source code

3. What compiler flag is used to instrument the application?

-pg
-pig
--profile

4. How should the parameters be when running the instrumented application?

Simple and understandable
Representative of the usual workload
Covering edge cases

5. What is a call graph?

An android app to show incoming callers
A hierarchy diagram of function calls in a given profile
Instructions of how to call for help during emergencies

6. How do you generate a callgraph of a gprof profile?

gprof --call-graph
gprof
gprof --graph

7. What is gprof2dot?

Third party script for call graph visualization via the "dot" library
Gprof feature to export profiles as a pdf
A fork of the beta version of gprof2

8. Does gprof work with MPI applications?

No, gprof only works with sequential applications
Yes, parallel profiling is the main use case of gprof
Yes, but gprof cannot differentiate between individual threads/processes

9. How much overhead does gprof produce?

None
Little
Much