SIMD and SIMT Code Generation for Visual Effects using indexed dependence metadata
Paul H J KellyImperial College London, UK
This talk is about a project to build a domain-specific library for film post-production visual effects (VFX). Visual effects algorithms are structured using "indexed functors", which characterise image operations with dependence metadata. Our source-to-source code generator targets SSE and CUDA devices from a single-source representation and implements an array of parallelism- and bandwidth-enhancing optimisations, producing C++ and CUDA as output for vendor compilers. Metadata captures and communicates high-level dependence and data access pattern information to the code generator, eliminating the need for interprocedural dataflow and alias analyses to recover this information from the code. Our kernel transformations rely on metadata for safety, which greatly simplifies their implementation and enables more complex optimisations to be applied. We exploit the polyhedral model in schedule optimisation to manage the large fused, fragmented loop structures which are key to improving temporal locality on CPUs. In our evaluation we demonstrate 1.2-7.0x speed-ups on Intel and AMD multicore CPUs and 1.2-6.6x speed-ups on CUDA GPUs.
(joint work with Jay Cornwall, Lee Howes (at Imperial) and Bruno Nicoletti and Phil Parsonage at The Foundry Ltd).
- kelly-wg09.ppt : Slides