Tornado is a practical heterogeneous programming framework for Java, Tornado enables automatic Just-In-Time (JIT) compilation and acceleration of Java programs on any OpenCL compatible device, such as multi-core CPUs, GPUs and FPGAs.
The Device Emulator finds an efficient mapping of the application tasks onto the nodes/cores in low time, i.e., which application task should run on each node/core.
Source to source compiler
Compiler to analyze source code OpenMP parallelism annotations, extracting the required information to allow for efficient and predictable mapping and scheduling of parallel computations
Lightweight OpenMP tasking runtime
A small-footprint implementation of the tasking model of the latest OpenMP specification, which uses the information extracted by the compiler to map OpenMP tasks to operating systems threads
Embedded Many-Core Operating System – a small kernel implementation which efficiently handles parallel threads in manycore
The Monitoring Infrastructure monitors the heterogeneous resources to provide metrics (power consumption, temperature, utilization) about the status of the different devices and also historical statistics of these metrics.
Application Lifecycle Development Engine (ALDE)
ALDE is responsible for the workload scheduling and the management of the application life-cycle while it is executed.