Mots clés
audio communication compiler composition dataflow Domain Specific Language DSP ecosystem Elody FAUST functional graphic inscore interaction language lock-free MIDI MidiShare music music score musicale musique operating processing programming real-time score signal synchronization systems
2003 |
Scaringella,; Orlarey, Yann; Letz, Stephane; Fober, Dominique Automatic vectorization in Faust (Inproceeding) JIM, (Ed.): Actes des Journées d’Informatique Musicale JIM2003, Montbeliard, 2003. (Abstract | Links | BibTeX | Étiquettes: audio, compiler, processing, signal, vectorization) @inproceedings{ Scaringella:03 ,
title = {Automatic vectorization in Faust}, author = {N. Scaringella and Yann Orlarey and Stephane Letz and Dominique Fober}, editor = {JIM}, url = {JIM2003vect.pdf}, year = {2003}, date = {2003-01-01}, booktitle = {Actes des Journées d’Informatique Musicale JIM2003, Montbeliard}, abstract = {Faust is a Block-Diagram language for sound signal processing and synthesis. It implements a new algebraic representation of block-diagrams and adopts a functional model of semantics instead of a data flow model. Based on these elements, a compiler able to translate DSP block diagram specification into C code is briefly presented. The code produced proves to be efficient and can compete with a hand written code. The optimization process is even pushed further: the C code produced can be automatically vectorized to address Altivec extension for PowerPC (instruction-motorola) and SSE and SSE2 extensions for Intel architecture (instruction-intel). A method is proposed to determine whether or not a Faust expression can be vectorized by crossing a type information (synthesized during an upward run-around in the syntactic tree to be compiled) and a contextual information (inherited during a downward run-around in the syntactic tree). Thanks to this method, we are able to find expressions that can be vectorized inside recursive expressions that are not supposed to be vectorizable. The quality of the code produced by Faust is evaluated. On one hand, scalar code produced by Faust is compared to vector code produced by Faust, on the other hand, scalar and vector code are compared to code optimized by hand. In the end, we briefly present code transformations to vectorize the expressions classed as non-vectorizable by the previous method so that even better performances can be achieved in the future.}, keywords = {audio, compiler, processing, signal, vectorization}, pubstate = {published}, tppubtype = {inproceedings} } Faust is a Block-Diagram language for sound signal processing and synthesis. It implements a new algebraic representation of block-diagrams and adopts a functional model of semantics instead of a data flow model. Based on these elements, a compiler able to translate DSP block diagram specification into C code is briefly presented. The code produced proves to be efficient and can compete with a hand written code. The optimization process is even pushed further: the C code produced can be automatically vectorized to address Altivec extension for PowerPC (instruction-motorola) and SSE and SSE2 extensions for Intel architecture (instruction-intel). A method is proposed to determine whether or not a Faust expression can be vectorized by crossing a type information (synthesized during an upward run-around in the syntactic tree to be compiled) and a contextual information (inherited during a downward run-around in the syntactic tree). Thanks to this method, we are able to find expressions that can be vectorized inside recursive expressions that are not supposed to be vectorizable. The quality of the code produced by Faust is evaluated. On one hand, scalar code produced by Faust is compared to vector code produced by Faust, on the other hand, scalar and vector code are compared to code optimized by hand. In the end, we briefly present code transformations to vectorize the expressions classed as non-vectorizable by the previous method so that even better performances can be achieved in the future.
|