A NEW INTERMEDIATE REPRESENTATION FOR COMPILING AND OPTIMIZING FAUST CODE
Abstract
The Faust compiler relies on several intermediate representationsto translate a Faust program. One step, in particular, consists ofmoving from a functional representation of computations on infi-nite signals to an imperative (stateful) representation of computa-tions on samples. This translation phase is complex, as it combinesthe recursive tree traversal, the division of the computations intoinstructions, the scheduling, and the code generation. As a result,the implementation of new code generation strategies is difficult toachieve.In this paper, we propose a new intermediate representation inthe form of a graph whose nodes represent computations on infinitesignals and the edges time dependencies between these computa-tions. The graph structure makes it much easier to handle recursivedependencies as well as to experiment with all kinds of schedul-ing strategies. We will present several of them whose performancehave been tested with the examples of the Faust distribution. Per-formance gains can sometimes be quite significant compared to thecurrent compiler.
Origin | Files produced by the author(s) |
---|