Draft:Mantevo Project


The Mantevo Project is a suite of open-source miniapplications, known as miniapps, designed to benchmark and analyze performance in high-performance computing (HPC) systems. The project provides tools that aim to replicate the functionalities of larger applications, facilitating performance testing and optimization. Originating from the Trilinos project, Mantevo addresses programming and performance challenges associated with multi-core, many-core, and GPU-accelerated computer architectures.

Miniapps are used across various scenarios in the research and development field, such as simulating computational environments and studying processor, memory, and network architectures. Their design simplifies complexities such as input parsing and mesh generation, which is used for performance testing. Miniapps also evaluate node performance in preliminary architectural studies and are employed for their ability to simulate and scale computational systems.

The Mantevo Project's suite is primarily developed in C++ and includes tools that integrate algorithms to facilitate application development on diverse computing platforms. A component of the project is the Mantevo Suite 1.0, which comprises open-source miniapps that are scaled-down versions of seven HPC codes. These miniapps maintain a consistent user interface and are designed to be integrated with the suite's data collection and processing tools, thus supporting the suite's goal to aid hardware and software development in the HPC community.

Miniapps

edit

Miniapps are a category of open-source software tools developed as part of the Mantevo Project.[1] They are compact applications that serve as proxies for larger applications to address performance concerns.[2] Each miniapp includes libraries and a test driver to facilitate specific test case designs, thus reducing the complexity typically involved in performance testing. The scale of miniapps varies, with some designed to mimic performance-critical segments of larger applications and others offering representations of complete execution processes.[1]

The Mantevo Project

edit

The Mantevo initiative originated from the Trilinos[3] project, with an emphasis on coding for emerging architectures including multi-core, many-core, and GPU-accelerated high-performance computers. The goal of the Mantevo Project is to develop a suite of tools for benchmarking and performance analysis, focusing on embedding algorithms into applications to test and evaluate various computing platforms.[4] The project, which is programmed in C++,[5] features a computational core that performs functions similar to the LAMMPS[6] software used for molecular dynamics simulations.[7]

Features and usability

edit

All Mantevo miniapps are equipped with a set of common features. They provide four basic build options and additional derived versions, such as a CUDA[8]-enabled version of MiniFE.[9] Mantevo utilizes YAML[10] for input/output operations, which is a text format readable by humans and capable of supporting XML conversion. This allows for the output of Mantevo miniapps to be systematically recorded for subsequent analysis, with each execution of a miniapp producing a time-stamped file.

For handling the data produced by performance studies, Mantevo includes the Copilot[11] suite of post-processing tools. Copilot processes Mantevo's YAML output files by organizing them into a MySQL[12] database, which can then be used to generate graphs and charts. Additionally, Mantevo features an email reflector for YAML output, which facilitates the distribution of results via email and supports the integration of YAML data with Co-Pylot. The availability of these tools is intended to support the development of new miniapps within the Mantevo ecosystem.[4]

Mantevo Suite 1.0

edit

The Mantevo Suite 1.0 is composed of seven scaled-down high-performance computing (HPC) codes that are utilized in both scientific research and national security applications. The miniapps are provided as open-source software, and their development of these miniapps is a collective process involving the original code team and various experts in the field. Although each miniapp is developed independently and addresses a distinct set of problems, they are unified by a consistent user interface and are designed to work with the suite's tools for data collection and analysis.[13]

See also

edit

References

edit
  1. ^ a b "Mantevo Project | Mantevo". mantevo.github.io. Retrieved 2024-01-16.
  2. ^ Bourgeois, Daniel; Wolf, Michael; Moreland, Kenneth. "ISOSURFACE VISUALIZATION MINIAPPLICATION" (PDF). Retrieved June 23, 2023.
  3. ^ "Trilinos Home Page | Trilinos". trilinos.github.io. Retrieved 2024-01-16.
  4. ^ a b Lin, Paul T.; Heroux, Michael A.; Barrett, Richard F.; Williams, Alan B. (2015-12-10). "Assessing a mini-application as a performance proxy for a finite element method engineering application". Concurrency and Computation: Practice and Experience. 27 (17): 5374–5389. doi:10.1002/cpe.3587. ISSN 1532-0626. OSTI 1061183. S2CID 43843610.
  5. ^ "C++ Introduction". www.w3schools.com. Retrieved 2024-01-16.
  6. ^ "LAMMPS Molecular Dynamics Simulator". www.lammps.org. Retrieved 2024-01-16.
  7. ^ Schmitt, Jonas; Eitzinger, Jan; Membarth, Richard. "Unified Code Generation for the Parallel Computation of Pairwise Interactions using Partial Evaluation" (PDF). Retrieved 23 June 2023.
  8. ^ Kim, Youngtae; Hwang, Gyuhyeon (2015-12-15). "Efficient Parallel CUDA Random Number Generator on NVIDIA GPUs". Journal of KIISE. 42 (12): 1467–1473. doi:10.5626/jok.2015.42.12.1467. ISSN 2383-630X.
  9. ^ "- OpenBenchmarking.org". openbenchmarking.org. Retrieved 2024-01-16.
  10. ^ "The Official YAML Web Site". yaml.org. Retrieved 2024-01-16.
  11. ^ "GitHub Copilot · Your AI pair programmer". GitHub. Retrieved 2024-01-16.
  12. ^ "MySQL". www.mysql.com. Retrieved 2024-01-16.
  13. ^ "Mini-Apps Accelerate Hardware and Software Development" (PDF). Retrieved 23 June 2023.