EZTrace • High performance computing • Parallel applications • Hybrid programming models (MPI + OpenMP, …) • Complex hardware / software stack • Various programming models (MPI, OpenMP, MPI+OpenMP, …) • Understanding the performance of an application is tedious ➥ Need for generic performance analysis tools A GENERIC FRAMEWORK FOR PERFORMANCE ANALYSIS Select your modules • MPI • GNU OpenMP • PThread • Standard I/O (read, write, poll, …) • Dynamic memory allocation (malloc, free, …) • User-defined modules Easy-to-use script language • Define the functions to instrument • Define their representation • A source-to-source compiler creates the plugin code. Run your program • No need to modify the program • No need to recompile/relink • Low overhead instrumentation • Functions calls are intercepted • Raw events are recorded • Generates one trace file per process • No need to modify / recompile your application • Simple script language for describing instrumentation • Low overhead instrumentation • CUDA / OpenCL plugins • Support for hardware counters (PAPI) • Enhanced analysis of traces http://eztrace.gforge.inria.fr/ Name foo DESC ''Plugin for the foo library'' int foo(int arg1, int arg2) BEGIN RECORD_STATE(''Doing function foo'') END void bar(int arg1) BEGIN EVENT(''Function bar called'') END eztrace_convert -t [OTF|PAJE] trace.* mpiexec -np x `eztrace -e ./prog` eztrace_stats trace.* Scheduling of tasks generated by PLASMA P#0_T#2248308464 P#0_T#1126963520 P#0_T#1091815744 P#0_T#1083423040 P#0_T#1100208448 P#0_T#1109317952 P#0_T#1117710656 P#0_T#1135356224 P#0 Program min: 0 max: 1070.97 0 500 1000 Compute Statistics • Generic statistics • Min/max/average duration of each event • Number of occurrence of each event • Add semantic to events • Bug detection (lock missmatch, …) • Communication scheme Visualize the traces • Generation of the trace in OTF or Paje format • Visualize the traces with ViTE, Vampir, …. STEP 1 CONTEXT ISSUES STEP 2 STEP 3A STEP 3B CONCLUSION FUTURE WORK trace file #1 ... trace file #x Paje trace file OTF trace file MPI + OpenMP Program MPI OpenMP User-defined plug-in