Brussels / 3 & 4 February 2024


Extracting Mini-Apps from HPC software for Total Cost of Ownership optimized systems procurement

When procuring new hardware for an HPC system, the hardware vendors can be provided with targets to hit. This can either be performance per dollar but more recently also includes metrics like performance per watt. Industry standard benchmarks like Linpack, Stream, or Spec are not necessarily representative for the jobs that will actually run on the system and their predicted performance per dollar or watt might not be accurate when users run their tasks on the system. At the association for national high performance computing (NHR) we are developing a pipeline to generate a representative benchmark collection from an observed job mix to provide to hardware vendors. One essential step is the so called mini-app extraction. A mini-app is a standalone kernel of a given HPC application, making it significantly smaller in terms of lines of code but retaining the computational characteristic of the original application. Based on these mini-apps vendors can better suite there hardware offerings to the expected use. As mini-apps usually need to be crafted manually by domain experts, we are developing Mini-Apex. Mini-Apex is an open source compiler tool based on Clang, able to help extract mini-apps from C and C++ applications. It uses a MetaCG to generate a call-graph with attached analysis results, and PIRA to identify the kernel. It then extract the kernel-function, as well as all necessary sub-routines, variables, classes, structs, and definitions into a mini-app, reusing most of the build system of the original application.


Photo of Tim Heldmann Tim Heldmann