[ Home | Overview | Publications ] • [ Examples ] • [ Software/Downloads | Documentation/Questions ] • [ People | Acks ]
HPCToolkit is an integrated suite of tools for measurement and analysis of program performance on computers ranging from multicore desktop systems to the nation's largest supercomputers. By using statistical sampling of timers and hardware performance counters, HPCToolkit collects accurate measurements of a program's work, resource consumption, and inefficiency and attributes them to the full calling context in which they occur. HPCToolkit works with multilingual, fully optimized applications that are statically or dynamically linked. Since HPCToolkit uses sampling, measurement has low overhead (1-5%) and scales to large parallel systems. HPCToolkit's presentation tools enable rapid analysis of a program's execution costs, inefficiency, and scaling characteristics both within and across nodes of a parallel system. HPCToolkit supports measurement and analysis of serial codes, threaded codes (e.g. pthreads, OpenMP), MPI, and hybrid (MPI+threads) parallel codes.
The figure below provides an overview of HPCToolkit's primary components and their relationships.
hpcrun: HPCToolkit is based on collecting both highly accurate and highly precise calling-context-sensitive performance measurements for unmodified fully optimized applications. To collect call path profiles for very low overhead (1-5%), hpcrun uses asynchronous sampling of system timers and performance monitoring unit events.
hpcstruct: To associate calling-context-sensitive measurements with source code structure, hpcstruct recovers the static program structure of a fully optimized application binary. In particular, hpcstruct recovers source code procedures and loop nests, detects inlining, and associates procedures and loops with object code.
hpcprof: To show static program structure — especially a loop nest — in its full calling context, hpcprof overlays call path profiles with program structure and correlates the result with source code. It generates a performance database.
hpcviewer: hpcviewer interactively presents a performance database in three complementary views. It is specifically designed to facilitate rapid top-down analysis using metrics that highlight program inefficiency rather than program hot spots.
Highlighted platforms:
HPCToolkit is open-source software released with a BSD-like license.
[Page last updated: 2011/06/25]