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)
|