Synchronous languages offer a deterministic model of concurrency at the level of actions. However, essentially all compilers for synchronous languages compile these actions into a single thread by sophisticated methods to guarantee dynamic schedules for the sequential execution of these actions. In this paper, we present the compilation of synchronous programs to multi-threaded OpenMP-based C programs. We thereby start at the level of synchronous guarded actions which is a comfortable intermediate language for synchronous languages. In addition to the explicit parallelism given in the source program, our method also exploits the implicit parallelism which is due to the underlying synchronous model of computation and the data dependencies of the guarded actions. We show how viable tasks can be constructed from the actions of a program and show the feasibility of our approach by a small example.
[1]
Tobias Schüle,et al.
A Verified Compiler for Synchronous Programs with Local Declarations
,
2006,
SLAP@ETAPS.
[2]
Klaus Schneider,et al.
The Synchronous Programming Language Quartz
,
2009
.
[3]
Stephen A. Edwards,et al.
The synchronous languages 12 years later
,
2003,
Proc. IEEE.
[4]
Gérard Berry,et al.
The ESTEREL Synchronous Programming Language and its Mathematical Semantics
,
1984,
Seminar on Concurrency.
[5]
Stephen A. Edwards,et al.
The Synchronous Languages Twelve Years Later
,
1997
.
[6]
Albert Benveniste,et al.
Concurrency in Synchronous Systems
,
2006,
Formal Methods Syst. Des..
[7]
Klaus Schneider,et al.
Separate compilation for synchronous programs
,
2009,
SCOPES.