title: What does Callgrind measure when profiling a parallel code?
body: <p>I would like to profile my parallel code (both mpi and omp)</p>
  
  <p>I found out that Callgrind is very easy to use and analyze (using Kcachegrind) for serial code as it can give you the relative time spent on different functions.</p>
  
  <p>What would it give me when running a parallel code? 
  Would it only monitor the master process or will it sum over all process?</p>
  
  <p>Can it detect deadlocks or place where one process is waiting to another?</p>
  
  <p>Is there a better tool to use when profiling a parallel code?</p>