Software components

Please find attached the software components that are being used at the project on LEGATO's dedicated Github


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.



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. 



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). 



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.


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


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. 


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.

Repository :

Online Doxygen Documentation :

Online Wiki :

Example of applications ported with FTI :

Continuous integration with Travis :