Vektorizace patří mezi dobře známé transformace kódu, většinou je však prováděna v kontextu procedurálního kódu s příkazy a instrukcemi. Cílem této práce je ověřit možnosti vektorizace v systému, který překládaný program reprezentuje formou sítí, v nichž protékají data mezi jednotlivými operacemi (viz např. Kahn process networks). Samotná vektorizace v takovém prostředí je jednodušší než v klasickém procedurálním kódu, přibývají však technické problémy s interakcí a synchronizací. Výstupem transformace má být kód v jazyce C obsahující SIMD instrukce (v podobě intrinsic functions).
Seznam odborné literatury
- Brabec M., Bednárek D.: Hybrid Flow Graphs: Towards the Transformation of Sequential Code into Parallel Pipeline Networks, in ITAT, CEUR, Vol. 1422, 2015, ISSN: 1613-0073.
- Allen, R. and Kennedy, K.: Optimizing Compilers for Modern Architectures. Morgan Kaufmann, 2001, ISBN: 978-1558602861.
- Intel Architecture Instruction Set Extensions Programming Reference. Intel, 2015, 319433-023.
Předběžná náplň práce v anglickém jazyce
Vectorization is a well developed technique of code transformation; however, it is mostly performed in the context of procedural code with statements and/or instructions. The goal of this thesis is applying vectorization techniques in an environment where the transformed program is represented as a network of data flows and operators (e.g., Kahn process networks). In such environment, vectorization is simpler than in procedural code; however, there are additional technical issues of interaction and synchronization. The transformation shall generate C-code containing SIMD instructions (as intrinsic function calls).