From Aeminium
Jump to: navigation, search

Aeminium Compiler (CMU)

The Æminium Compiler translates the Æminium language to Java source code with calls to the Æminium Runtime. The Æminium Language uses the Plaid Language and the code lives in the same repository, specifically under the aeminiumcodegen subproject.

An example of a simple WebServer written in Æminium can be seen here.

Aeminium Runtime (U. Coimbra)

Aeminium Runtime is a Java library that supports the runtime elements of Æminium programs. This includes a work-stealing scheduler, task management and dependency checker, runtime optimizations, locking, etc. It also features a Profiler that can be used to understand what is happening inside the runtime in Æminium programs.

Aeminium Benchmarks is a collection of sequential java, fork-join java and aeminium programs from different benchmarks, such as Fibonacci, FFT, MergeSort, BFS, NBody, etc. These programs are used to evaluate the performance of the Runtime.

AeminiumGPU is a runtime that supports the execution of AeminiumPrograms on GPUs using a Map-Reduce approach. This is complemented by the AeminiumGPU Compiler that translates Java into OpenCL, so the programmer only has to write Java to have programs running on both CPU or GPU.

j2jpar is a compiler that receives sequential Java and outputs the same program, parallelized using the Aeminium Runtime as support for concurrency management.

CECO is a Scala library for writing parallel and concurrent programs with sane support for exceptions across concurrent actors.

Verification (U. Madeira)

Pulse is a model-checking tool of Plural specifications. It has been implemented as a plug-in of the Plural tool. It translates Plural specifications into an abstract model-checking model that is then used as an input of the EVMDD model-checker.