SBIR-STTR Award

Multi Environment Template API (META)
Award last edited on: 1/5/2023

Sponsored Program
SBIR
Awarding Agency
DOE
Total Award Amount
$1,348,409
Award Phase
2
Solicitation Topic Code
C51-07b
Principal Investigator
David Donofrio

Company Information

Tactical Computing Laboratories LLC (AKA: TCL)

55 County Road 462
Muenster, TX 76252
   (469) 712-6601
   contact@tactcomplabs.com
   www.tactcomplabs.com
Location: Single
Congr. District: 13
County: Cooke

Phase I

Contract Number: DE-SC0021527
Start Date: 2/22/2021    Completed: 2/21/2022
Phase I year
2021
Phase I Amount
$249,697
As HPC systems continue to increase in heterogeneity performance portability becomes a universal challenge for application developers who wish to extract the performance that can come from machine specific features. Across academia, government and industry, multiple template metaprogramming techniques have been widely deployed to assist with the ion of the varying hardware elements found on today’s systems. While these metaprogramming techniques can prove effective, the use of them introduces a additional source of heterogeneity. A critical element in extracting performance for a given system is the existence of performance analysis tools- these tools are frequently tied to a particular vendor or architecture and, increasingly, also a particular template metaprogramming library. The use of these libraries introduces a new requirement that performance analysis and debug tools must be created for each library. The META effort proposes a universal tooling interface that is able to provide an application developer with the ability to operate across multiple template metaprogramming libraries. META will maximize programmer efficiency by leveraging LLVM Clang interfaces that analyze code structure, syntax, parallel scalable and memory performance using state of the art techniques. To further enhance productivity, we will export our interfaces to one or more cross-platform graphical integrated development environments (IDEs) giving developers a robust environment to begin targeting the META interfaces. Performance portability is a cross-cutting problem as developers need to port code across multiple platforms - be they different HPC centers or cloud-computing providers. The tools that enable performance analysis are frequently tied to a single vendor, by breaking that dependence sophisticated performance analysis tools may be created and stood up faster when a new machine is procured. This decreases the time to maximum utilization of a new system and allows developers the opportunity to expand the capability of their applications while extracting full performance from a system.

Phase II

Contract Number: DE-SC0021527
Start Date: 4/4/2022    Completed: 4/3/2024
Phase II year
2022
Phase II Amount
$1,098,712
As HPC systems continue to increase in heterogeneity performance portability becomes a universal challenge for application developers who wish to extract the performance that can come from machine specific features. Across academia, government and industry, multiple template metaprogramming techniques have been widely deployed to assist with the ion of the varying hardware elements found on today’s systems. These metaprogramming techniques have been proven effective at building high performance applications and libraries across a wide range of scientific and engineering fields. However, the inherent ion layers present in these programming techniques presents a challenge for users attempting to efficiently analyze application performance. The goal of the META project is to construct a malleable performance analysis infrastructure that provides users the ability to analyze the parallel execution and memory performance of a variety of template metaprogramming language constructs that is directly attached to the existing LLVM compiler tool chains widely used in high performance computing. The analysis infrastructure provided by META derives and depicts performance data from parallel applications at compile time across a variety of template metaprogramming constructs via command line and graphical interfaces. Through the Phase I effort, we successfully developed and demonstrated the underlying META infrastructure that provides performance and memory analysis methods agnostic of the overall template metaprogramming technique. This infrastructure utilizes the compiler’s existing syntax tree interfaces to parse and construct a directed acyclic graph representation of the target parallel program’s execution and memory patterns. From this, we have the ability to execute a series of passes that derive and present performance related data at compile time. We demonstrated META by analyzing the performance of a variety of high performance computing applications written using the Kokkos metaprogramming approach. Phase II of the META project will build and expand upon the infrastructure developed in Phase I. First, through the Phase II effort, we will expand upon the initial set of analysis passes to include more complex transforms and investigative procedures for parallel applications and memory layouts. We will also productize the initial support for Kokkos as well as provide support for the Raja metaprogramming construct. Finally, we will investigate the ability to automatically transform parallel applications using the data provided by the analysis passes in order to automate the construction of high performance, parallel algorithms. Performance portability is a cross-cutting problem as developers need to port code across multiple platforms - be they different HPC centers, heterogeneous embedded devices or cloud-computing providers. Providing a vendor- agnostic performance analysis infrastructure tied to an existing open source compiler tool chain has the ability to dramatically improve the ability for users to create high performance parallel applications and decreasing the time to efficient application solutions.