Extrae is a dynamic instrumentation package to trace programs compiled and run with the shared memory model (like OpenMP and pthreads), the message passing (MPI) programming model or both programming models (different MPI processes using OpenMP or pthreads within each MPI process). Instrumentation of CUDA, CUPTI, OpenCL, Python multiprocessing, Java threads and relevant system, dynamic memory and I/O calls is also supported. Extrae generates trace files that can be visualized with Paraver.
Extrae is currently available on different architectures and operating systems, including: GNU/Linux (x86, x86_64, ARM, POWER), IBM AIX, SGI Altix, Open Solaris, FreeBSD, Android, Fujitsu FX10/100, Cray XT, IBM Blue Gene, Intel Xeon Phi, GPUs and FPGAs.
The combined use of Extrae and Paraver offers an enormous analysis potential, both qualitative and quantitative. With these tools the actual performance bottlenecks of parallel applications can be identified. The microscopic view of the program behavior that the tools provide is very useful to optimize the parallel program performance.