Skip to content

DARMA-tasking/vt

Repository files navigation

vt => virtual transport

Codacy Badge codecov License gcc-8, ubuntu, mpich, address sanitizer gcc-9, ubuntu, mpich, zoltan gcc-10, ubuntu, openmpi, no LB gcc-11, ubuntu, mpich gcc-12, ubuntu, mpich clang-9, ubuntu, mpich clang-10, ubuntu, mpich clang-11, ubuntu, mpich clang-12, ubuntu, mpich clang-13, ubuntu, mpich clang-13, alpine, mpich clang-14, ubuntu, mpich nvidia cuda 11.0, ubuntu, mpich nvidia cuda 11.2, ubuntu, mpich gcc-10, ubuntu, openmpi, no LB, spack-package icpx, ubuntu, mpich apple clang, macosx, mpich Build Documentation

Introduction : What is vt?

vt is an active messaging layer that utilizes C++ object virtualization to manage virtual endpoints with automatic location management. vt is directly built on top of MPI to provide efficient portability across different machine architectures. Empowered with virtualization, vt can automatically perform dynamic load balancing to schedule scientific applications across diverse platforms with minimal user input.

vt abstracts the concept of a node/rank/worker/thread so a program can be written in terms of virtual entities that are location independent. Thus, they can be automatically migrated and thereby executed on varying hardware resources without explicit programmer mapping, location, and communication management.

Read the documentation

To learn vt, read the full documentation that is automatically generated whenever a push occurs to "develop". It includes a walk-though of the tutorial and a overview of the components that make up a vt runtime.

Building

Learn how to build vt with cmake or docker.

References

Lifflander, J., M. Bettencourt, N. Slattengren, G. Templet, P. Miller, P. P. Pébaÿ, M. Perrinel, and F. Rizzi. 2019. “DARMA-EMPIRE Integration and Performance Assessment – Interim Report.” Sandia Report SAND2019-1134. https://www.osti.gov/servlets/purl/1493825. https://doi.org/https://doi.org/10.2172/1493825.

Lifflander, Jonathan, Phil Miller, Nicole Lemaster Slattengren, Nicolas Morales, Paul Stickney, and Philippe P Pébaÿ. 2020. “Design and Implementation Techniques for an MPI-Oriented AMT Runtime.” In 2020 Workshop on Exascale MPI (ExaMPI), 31–40. https://www.osti.gov/biblio/1825838: IEEE.

Lifflander, Jonathan, Nicole Lemaster Slattengren, Philippe P Pébaÿ, Phil Miller, Francesco Rizzi, and Matthew T Bettencourt. 2021. “Optimizing Distributed Load Balancing for Workloads with Time-Varying Imbalance.” In 2021 IEEE International Conference on Cluster Computing (CLUSTER), 238–49. https://www.osti.gov/servlets/purl/1870576: IEEE. https://doi.org/https://doi.org/10.1109/Cluster48925.2021.00039.

Lifflander, J., and P. P. Pébaÿ. 2020. “DARMA/vt FY20 Mid-Year Status Report.” Sandia Report SAND2020-3967. https://www.osti.gov/servlets/purl/1615717. https://doi.org/https://doi.org/10.2172/1615717.

Pébaÿ, P. L., J. Lifflander, P. P. Pébaÿ, and Sean T. McGovern. 2023. “vt-tv: A New C++ Application to Efficiently Visualize and Analyze Asynchronous Many-Task Work Distributions and Attendant Quantities of Interest.” Sandia Report SAND2023-09312.

Pébaÿ, P. L., N. Slattengren, Sean T. McGovern, and J. Lifflander. 2023. “Modeling Workloads of a LinearElectromagnetic Code for Load BalancingMatrix Assembly.” Sandia Report SAND2023-10469.

Pébaÿ, P. P., and J. Lifflander. 2019a. “Using Sandia’s Automatic Report Generator to Document EMPIRE-Based Electrostatic Simulations.” Sandia Report SAND2019-4269. https://www.osti.gov/servlets/purl/1762099. https://doi.org/https://doi.org/10.2172/1762099.

———. 2019b. “Some Results about Distributed Load Balancing.” Sandia Report SAND2019-5139. https://www.osti.gov/servlets/purl/1762597. https://doi.org/https://doi.org/10.2172/1762597.