WG211/M7Kelly
SIMD and SIMT Code Generation for Visual Effects using indexed dependence metadata
Paul H J Kelly
Imperial 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