Difference between revisions of "Gprof Tutorial"

From HPC Wiki
Jump to navigation Jump to search
Line 85: Line 85:
 
{
 
{
 
|type="()"}
 
|type="()"}
-   
+
-  An android app to show incoming callers
|| An android app to show incoming callers
+
||
+   
+
+  A hierarchy diagram of function calls in a given profile
|| A hierarchy diagram of function calls in a given profile
+
|| True
-   
+
-  Instructions of how to call for help during emergencies
|| Instructions of how to call for help during emergencies
+
||
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
Line 100: Line 100:
 
{
 
{
 
|type="()"}
 
|type="()"}
-
+
- gprof --call-graph  
|| gprof --call-graph
+
||
-
+
- gprof
|| gprof
+
||  
+   
+
+ gprof --graph  
|| gprof --graph
+
|| True
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
Line 114: Line 114:
 
{
 
{
 
|type="()"}
 
|type="()"}
+
+
+ Third party script for call graph visualization via the "dot" library  
|| Third party script for call graph visualization via the "dot" library
+
|| True
+
- Gprof feature to export profiles as a pdf  
|| Gprof feature to export profiles as a pdf
+
||  
-
+
- A fork of the beta version of gprof2
|| A fork of the beta version of gprof2
+
||
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
Line 128: Line 128:
 
{
 
{
 
|type="()"}
 
|type="()"}
-
+
- No, gprof only works with sequential applications  
|| No, gprof only works with sequential applications
+
||  
-
+
- Yes, parallel profiling is the main use case of gprof
|| Yes, parallel profiling is the main use case of gprof
+
||  
+
+ Yes, but gprof cannot differentiate between individual threads/processes  
|| Yes, but gprof cannot differentiate between individual threads/processes
+
|| True
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}
Line 142: Line 142:
 
{
 
{
 
|type="()"}
 
|type="()"}
-
+
- None
|| None
+
||  
+
+
+ Little
|| Little
+
|| True
-
+
- Much
|| Much
+
||  
 
</quiz>
 
</quiz>
 
{{hidden end}}
 
{{hidden end}}

Revision as of 13:00, 2 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.

Gprof Introduction + Pascal Example

Quiz

1. What lanuages can gprof profile?

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

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

How should the parameters be when running the instrumented application?

Simple and understandable
Representative of the usual workload
Covering edge cases

C++ + Fortran Examples

Show gprof in real world examples and introduce call graph.


Quiz

1. 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

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

gprof --call-graph
gprof
gprof --graph

{{hidden begin |title = 3. 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

{{hidden begin |title = 4. 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

{{hidden begin |title = 5. How much overhead does gprof produce?

None
Little
Much