I write codes in Fortran and C for various matrix algorithms. However, when I profile my codes using VTune, I usually run into some terminology that I cannot fully appreciate. Is there a good resource for learning profiling from scratch to a fairly advanced level?

Although I am looking forward to profiling numerical codes, I don't think (I might be wrong) that profiling other codes is any different. I want a tutorial on profiling and I would prefer an online (Free) PDF but wouldn't mind books or handbooks.

I have tried reading VTune's handbook but thats like trying to learn chinese by reading a chinese language book.

Further, is VTune the best way to go? I really like a GUI and since I use Intel MKL, I figured it would be better than Valgrind.


Another common choice is to use PAPI http://icl.cs.utk.edu/papi/ or TAU http://www.cs.uoregon.edu/Research/tau/home.php, Valgrind is great for finding memory errors.

Some slides from TACC:



  • $\begingroup$ Thanks for the great links. Can you also suggest a good tutorial in the form of PDF, book or otherwise to learn about profiling? $\endgroup$ – Inquest Mar 20 '12 at 15:03
  • $\begingroup$ I don't have any books but I will ask around. $\endgroup$ – aterrel Mar 20 '12 at 15:38
  • $\begingroup$ Okay after asking a few people, basically after you get past the easy things you have to know a lot about computer architecture. We were recently tripped up on silly things like how fast it is to load a word on an Intel Chip (getting around hardware prefetching is not as easy as it sounds). $\endgroup$ – aterrel Mar 24 '12 at 21:01

If you are interested in performance analysis of parallel codes I like the book: Scientific Parallel Computing, L. Ridgway Scott, Terry Clark, Babak Bagheri.

Also, here are some cool slides used in a summer school course given (PASI. Valparaíso, Chile. January 2011) by one of the authors, the material is based on the book.


I tool I have used extensively for profiling is valgrind (in combination with the graphical interface kcachegrind). Valgrind is a set of dynamic analysis tools: memory error detection, threading bug hunting and profiling.

Some references on Valgrind:

Unfortunately (depends on where you come from :-) ), valgrind doesn't run on Windows, only on Linux and Darwin based machines.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.