Visual Computing Systems
CMU 15-869 | Fall 2013

Visual computing tasks such as 2D/3D graphics, image processing, and image understanding are important responsibilities of modern computer systems ranging from sensor-rich smart phones to large datacenters. These workloads demand exceptional system efficiency and this course examines the key ideas, techniques, and challenges associated with the design of parallel systems for visual computing applications. This course is intended for graduate-level students interested in architecting efficient future graphics and image processing platforms and for students seeking to develop scalable algorithms for these platforms.

When We Meet
Mon/Wed 12:00 - 1:20pm (GHC 4303)
Instructor: Kayvon Fatahalian
Schedule
Note, please consult the suggested readings page for a list of readings relevant to lecture topics.
Part I: Implementing and Scheduling the Real-Time Graphics Pipeline
Sep 9
(real-time rendering from a systems perspective)
Sep 11
(characteristics of the pipeline workload, Molnar's scheduling taxonomy, trade-offs between parallelism, communication, and locality)
Sep 13
(clipping, tessellation, parallel scheduling challenges of tessellation)
Sept 16
(algorithms and their fixed-function implementation, occlusion culling, anti-aliasing, frame-buffer compression)
Sep 18
(anti-aliasing using the mip-map, hardware texture unit implementation, prefetching and caching policies)
Sep 23
(hardware-friendly texture compression techniques)
Sep 25
(level of abstraction decisions, mapping to GPU processing cores)
Sept 30
(motivation for an alternative abstraction, interoperability issues with graphics pipeline)
Oct 2
(its motivation and impact on global renderer scheduling decisions)
Oct 7
(workload characteristics, coherence optimizations, potential for hardware acceleration)
Oct 9
(light field theory, how image-based rendering has found its legs in a world with ubiquitous cameras)
Oct 11
Part II: Camera Image Processing Pipelines and Applications
Oct 14
(sensor basics, noise sources, early stages of the image pipeline)
Oct 16
(gamma, JPG compression, auto-focus, auto-exposure)
Oct 21
(work efficiency, parallelism, and locality trade-offs using Halide)
Oct 23
(looking at workload characteristics and scheduling possibilities)
Oct 28
(and requirements and capabilities of future systems)
Oct 30
(unique challenges of light-field photography)
Nov 4
(how the original XBox 360 Kinect system works, algorithms for computing depth and pose)
Nov 6
Nov 11
Part III: Computations on Billions of Images and Photos
Nov 13
(bag of words representation, acceleration via inverted indices)
Nov 18
(modern work on 3D reconstruction from large image collections)
Nov 20
(approximate k-NN using K-D trees, hasing basics)
Nov 25
Nov 27
No class: Thanksgiving break
Miscellaneous
Dec 2
(building sparse voxel octrees, voxel cone tracing)
Dec 4
(The GRAMPS system, current and future heterogeneous programming model challenges)
Mini-Assignments
Due Oct 2
Due Oct 9
Due Nov 15
Due Dec 16
(not so mini)