Dawn toolchain¶
The toolchain of Dawn contains several modules and is organized in passes, allowing to customize the process by enabling, disabling or change the order of execution of the individual passes. The default order of execution, depicted in Figure 1, starts by translating the SIR into an internal SIR (ISIR) which enriches the SIR with various information, like the computation of the access patterns, required by the following passes. As the initial construction of the ISIR generates a parallel program that is most likely incorrect under the given parallel model, we invoke several passes (Parallel Model Builder) to build a valid parallel program. The Safety Checker passes will run various static analysis routines and the Optimizer will perform several optimizations such as reordering and fusing groups of statements, setting software managed caches or reducing shared-memory pressure. Finally, the code generation will translate the ISIR into the main DSL of GridTools or directly to C++.

Fig. 1 Default order of execution of the passes grouped in Parallel Model Builder (orange), Safety Checker (yellow) and Optimizer (green).
Parallel Model Builder¶
The parallel model builder passes transform the initial Stage and Multi-Stage arrangement into a valid parallel program under the GridTools parallel model.
Safety Checker¶
TODO
Optimizer¶
TODO