Proxy applications are usually small, portable codes of about a few hundred lines that are extracted from production codes called parents, which usually contain millions of lines. These smaller extracts serve as specific targets for testing and simulation without the time, effort, and expertise that porting or changing most production codes would require.
Proxy applications are used by vendors, hardware architects, system software developers, domain scientists, computer scientists, and applied mathematicians as they work together to make informed decisions about features and tradeoffs in the design of the application, algorithms, hardware, and underlying system software. This process is known as co-design. Understanding the validity and the results achieved with proxy applications is crucial, given their central role in co-design.
Veritas provides a method for validating these proxy applications to ensure that they capture the intended characteristics of their parents. Until Veritas, the validation process has been done mostly by manually matching algorithmic steps in proxy applications to the parent or by relying on the experience of the code developer. Veritas is able to both identify and compare performance sinks in areas such as memory, cache utilization, and network utilization.
Veritas development is supported by the Department of Energy (DOE). Successful proxy application development has been highly sought after by DOE and has been funded across almost all of its national laboratories, with the intent to increase co-design engagement between application developers and vendors and to support the development of next-generation supercomputers. Future developments will include structuring of the Veritas framework to more effectively fit current and future proxy applications.