We have integrated several software components in order to achieve a common programming environment around the hardware platforms. The software repository is in GitHub: https://github.com/legato-project/FinalSoftwareStack. We have worked to include on it all integrations around the OmpSs programming model.
OmpSs-2 provides the integration with SMP tasking, XiTAO tasking, CUDA, the Cluster environments, and debugging support through the OmpSs-2 Linter Tool. This effort is based on the components (https://github.com/legato-project/FinalSoftwareStack/OmpSs-2):
- Nanos6 runtime system
- XiTAO runtime system
- Mercurium compiler
- OmpSs-2 Linter Tool
OmpSs-1 provides integration with the OpenCL, CUDA, Xilinx FPGAs, DFiant and Maxeler environments (https://githup.com/legato-project/FinalSoftwareStack/OmpSs-1, OmpSs-1-DFiant and OmpSs-1-maxeler), and is based on the following components:
- Nanos++ runtime system
- Extrae instrumentation library
- Mercurium compiler
- OmpSs@FPGA kernel module
- Automatic Integration Tool (AIT)
- Xdma library
- Xtasks library
- DFiant (OmpSs-1-DFiant)
- Maxeler (OmpSs-1-maxeler)
The repository also includes the Matrix Multiplication samples for the different environments and hardware: https://github.com/legato-project/FinalSoftwareStack/tree/master/Samples
LEGaTO integrated software components
Chalmers and BSC are integrating XiTAO and Nanos, two task-based runtime engines with different features and capabilities. This integration will ensure interoperability, constructive and collaborative sharing of resources between the two runtimes. Eventually, OmpSs task-graphs that require minimization of inter/intra resource interference or include energy-critical computations can be seamlessly offloaded to XiTAO, while ensuring that OmpSs and XiTAO tasks independently run on the allocated subset of the system resources.
Maxeler and BSC are investigating the use of the OmpSs task-based programming model as a frontend for Maxeler’s dataflow computing model where performance of critical computations are offloaded onto dedicated dataflow engines (DFEs). OmpSs tasks that are suitable to be mapped to dataflow kernels will be identified and the resulting dataflow accelerators will be integrated into the OmpSs runtime.
Technion, Maxeler, and BSC are working on OmpSs-DFiant integration to enable dedicated HDL-based kernels to run on various FPGA platforms offered by the LEGaTO project. To simplify integration, dedicated DFiant plugins are developed to morph DFiant kernels into existing interfaces supported by OmpSs. For Maxeler platforms the DFiant code will mimic the custom HDL blocks supported by MaxCompiler, and for VivadoHLS platforms DFiant will mimic the AXI interfaces required by Vivado. With just a few additional lines of code, DFiant users will be able to compile their designs for any LEGaTO platform.
UniNE and BSC are working on the integration of OmpSs and Intel SGX. The first integration step consists of a parallel and secure version of the matrix multiplication problem. It performs the multiplication of two matrices (A and B) into a third one (C). Parallelization is achieved using OmpSs Programming Model and security is assured by means of Intel SGX framework.