I just started open sourcing the Tsunami Project.
--What it is---
Tsunami is a cross-compiler. It compiles code written in Tsunami into OpenCL.
---Design---
The compilation can be broken up into three stages:
*front end - parse into abstract data structures
*middle end - optimize at the data structure level (e.g. common sub-expression elimination)
*back end - format into openCL
Currently, it's just going to be an interpreter, leaving the third stage thus for last.
We're doing just an interpreter for now in order to make sure everything works properly up to this point before going on to the third stage.
As an interpreter, there are two passes:
* first pass: process all "declarations" - this is all the "Proto-" classes.
* second pass: instantiate all objects - this is the "Live-" classes. here the streams will get dimensions (they are streams of multi-dimensional arrays)
Both stage 1 and stage 2 will thus have these two passes.
Then of course, when you give it input data, it would run it through the "Data flow graph" and produce the output.
---Development plan---
The main plan of things to do next is as follows:
*forget "datums" for now, everything is type double.
*move all "stack operators" to "operators" and forget about "stack operators"
*instantiate all dags for networks