Graphics has been at the forefront of the resurgence in parallel computation. Real-time graphics and games have been the source of many of today’s new programming models and architectures for parallel computation. Modern games are arguably the only successful mainstream application of highly parallel programming in heterogeneous, million-line codebases. But while graphics is thought of as an embarrassingly parallel application, there has been little success in implementing high-performance graphics systems in any single general-purpose parallel programming model, ironically including those which have come from the GPGPU community.
I will talk about key patterns of parallelism and locality used in graphics pipelines and games, and how existing tools and monolithic programming models fail to express these patterns with sufficient efficiency. I will try to synthesize some directions for future programming systems based on this experience, including my current thoughts for how a compile-time continuation passing transform could help formalize patterns emerging in how high performance systems are manually overcoming the limitations of existing GPU programming models.
This talk will be at least as much informal, educational and speculative as it will be about any currently active research.