Components

Please find below the software components used at the project, which are also available on the LEGATO dedicated Github.

RedisStreaming

RediStreaming is a streaming module that leverages the content-based publish/subscribe system of Redis to stream messages to subscribers. Publishers are simulated by YCSB instances running a defined workload. The repository contains the application setup for a minimal working example of a word counting streaming module. We leverage this module as a use case to measure the energy consumption of hardware exploiting Intel SGX and AMD SEV trusted execution environments.

Link: https://github.com/legato-project/srds18-memory-tradeoff-benchmarks

HEATS

HEATS is a heterogeneity- and energy-aware scheduler based on Kubernetes. It efficiently performs the placement or migration of tasks in a heterogeneous cluster by considering the performance and energy requirements of the tasks themselves as well as of the different architectures present in the cluster. 

Link: https://github.com/legato-project/heats-scheduler

Mercurium

Mercurium is a C/C++/Fortran source-to-source compilation infrastructure aimed at fast prototyping developed by the Programming Models group at the Barcelona Supercomputing Center (BSC). 

Link: https://github.com/legato-project/mcxx

Nanos

Nanos++ is a runtime designed to serve as runtime support in parallel environments. It is mainly used to support OmpSs, a extension to OpenMP developed at BSC.

Link: https://github.com/legato-project/nanox 

Nanos6

Nanos6 is a runtime that implements the OmpSs-2 parallel programming model, developed by the Programming Models group at the Barcelona Supercomputing Center (BSC).

Link: https://github.com/legato-project/nanos6

FPGA-BRAMs-Undervolting-Study

Aggressive undervolting is a promising technique to reduce the energy consumption of FPGAs. Usually, voltage guardbands are added by chip vendors to ensure the worst-case process and environmental scenarios. However, further undervolting below the voltage guardband may cause reliability issues, i.e., start to appear faults. We extensively characterize the behavior of these faults with a concentration of on-chip memories, or Block RAMs (BRAMs), and for further researches, we share the raw faults in this Github. 

Link: https://github.com/legato-project/FPGA-BRAMs-Undervoltig-Study

FTI

FTI stands for Fault Tolerance Interface and is a library that aims to give computational scientists the means to perform fast and efficient multilevel checkpointing in large scale supercomputers. FTI leverages local storage plus data replication and erasure codes to provide several levels of reliability and performance. FTI is application-level checkpointing and allows users to select which datasets needs to be protected, in order to improve efficiency and avoid wasting space, time and energy. In addition, it offers a direct data interface so that users do not need to deal with files and/or directory names. All metadata is managed by FTI in a transparent fashion for the user. If desired, users can dedicate one process per node to overlap fault tolerance workload and scientific computation, so that post-checkpoint tasks are executed asynchronously.

Link: https://github.com/legato-project/fti

XiTAO

XiTAO is an open-source runtime for mixed-mode parallel applications targeting modern parallel and heterogeneous computer systems. XiTAO's execution model is based on a DAG of TAOs (Task Assembly Objects): generalized tasks containing work, resources and an embedded scheduler. Combined with online performance tracking, XiTAO provides portability, fast parallelism, constructive sharing and interference-avoidance while keeping overheads low. Overall, this results in superior scalability and performance portability.

Link: https://github.com/legato-project/xitao

SmartMirror

Official repositories for a MagicMirror² prototype, developed within LEGaTO.

Link: https://github.com/legato-project?utf8=%E2%9C%93&q=SmartMirror&type=&language=

DFiant

DFiant is a dataflow HDL and is embedded as a library in the Scala programming language. DFiant enables timing-agnostic and device-agnostic hardware description by using dataflow firing rules as logical constructs, coupled with modern software language features (e.g., inheritance, polymorphism) and classic HDL features (e.g., bit-accuracy, input/output ports).

Link: https://dfianthdl.github.io/LEGaTO/ and https://github.com/legato-project/DFiant