The Gedae Idea Language

Gedae's Idea Language Concept

Gedae’s Idea© language combines data flow language abstractions, high level algebra and math similar to Matlab, and control similar to UML (e.g. state machines).

Traditional languages rely on the programmer to specify the sequence of execution. It assumes a single processing core that processes instructions in sequence. Some language classes, such as data flow/streaming and functional languages, fix that problem by restricting that all data is conceptually immutable. This restriction allows the compiler to find parallelism in the application; the parallelism is not explicit in the code. Gedae’s compiler takes full advantage of this degree of freedom. For example, consider multi-buffering an algorithm to achieve high DMA utilization. Gedae pro-actively structures the threads to be optimized for the DMA. For a large array, it can implement the strip-mining of the data at compile time, create extra buffers for the DMA, and schedule the receive kernel and addition kernel to co-utilize the DMA and ALU. The compiler is managing the thread construction and parallelism to optimize efficiency in several dimensions.

Gedae’s language takes this concept of arbitrary ordering another step further by adding algebra, allowing the compiler to decompose vectorized operations for data parallelism. The syntax provided is similar to a math textbook, much like Matlab or MATHCAD, providing the same ease of programmability. However the language enables automatic decomposition of data sets for parallelism. The decompositions are not canned – it is not a library of pre-coded parallel implementations – instead they are rules that allow algebraic manipulation for parallelization by the compiler.

Streaming and functional languages are very successful for some niches of problems but are not seen as general programming solutions. The sequencing required for general behavior is terribly complex. Static multi-rate sequencing with feedback is difficult enough, but it is compounded by data dependent sequencing and the combination of multiple tasks into a single application. Additionally, not all data can be immutable, for example a database. In these cases the sequence cannot be determined by the production of data but must be expressed another way. This more complex ordering and management of shared data is enabled by Gedae’s expression of state machines for controlling multiple tasks in the same application. While the language parallels UML, the benefits are in the automatic management of sharing of resources between states (memory footprint), transitions between states (initializing tasks, loading overlays, etc.), and sharing of immutable data.

Return to IDEA TECHNOLOGY main page.