CATCH -- a call-graph based automatic tool for capture of hardware performance metrics for MPI and OpenMP applications. CATCH is a profiler for parallel applications that collects hardware performance counters information for each function called in the program, based on the path that led to the function invocation. It automatically instruments the binary of the target application independently of the programming language. It supportsMPI, OpenMP, and hybrid applications and integrates the performance data collected for different processes and threads. Functions representing the bodies of OpenMP constructs are also monitored and mapped back to the source code. Performance data is generated inXML for visualization with a graphical user interface that displays the data simultaneously with the source code sections they refer to.