Visual Computing Systems
CMU 15-869 | Fall 2014

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 (and heterogeneous) systems that serve to accelerate visual computing applications. This course is intended for graduate and advanced undergraduate-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
Time: Mon/Wed 1:30 - 2:50pm
Location: GHC 4102
Instructor: Kayvon Fatahalian
Click here for Course Logistics and Details
Note, please consult the suggested readings page for a list of readings relevant to lecture topics.
Sep 8
Real-time rendering from a systems perspective
Sep 10
Characteristics of the pipeline workload, Molnar's scheduling taxonomy, trade-offs between parallelism, communication, and locality
Sep 15
Clipping, tessellation, challenges of parallel scheduling
Sep 17
Visibility algorithms and their fixed-function implementation, occlusion culling, anti-aliasing, frame-buffer compression
Sep 22, 24
Anti-aliasing using the mip-map, locality-friendly texture data layouts
Sep 24, 29
Hardware-accelerated texture decompression techniques, prefetching, and multi-threading
Oct 1
Level of abstraction decisions, mapping shader logic to GPU processing cores
Oct 6
Motivation for alternative abstractions, interoperability issues with graphics pipeline, AMD's Mantle, Apple's Metal
Oct 8
Motivation for use, impact on global renderer scheduling decisions
Oct 13
Workload characteristics, coherence optimizations, potential for hardware acceleration
Oct 15
Light field theory, how image-based rendering has found its legs in a world with ubiquitous cameras
Oct 20
Sensor basics, noise sources, early stages of the image pipeline
Oct 22
Gamma, JPG compression, auto-focus, auto-exposure
Oct 27/29
Work efficiency, parallelism, and locality trade-offs using Halide
Nov 3
Case studies of workload characteristics and scheduling possibilities
Nov 5
Design characteristics, requirements, and capabilities of emerging systems
Nov 10
Nov 12
Unique challenges of light-field photography
Nov 17
How the Microsoft Kinect system works, algorithms for computing depth and pose
Nov 19
Nov 24
Modern work on 3D reconstruction from large image collections
Nov 26
No Class - Thanksgiving Holiday
Dec 1
Dec 3
Assignments and Projects

All students will be expected to perform daily paper readings, complete two simple programming exercises, and complete a seven-week self-selected final project.

due Oct 1Assignment 1: Implementing a Parallel Sort-Middle Tiled Renderer
optionalMapping SPMD Code to a SIMD Machine (optional practice assignment)
due Nov 7Assignment 2: Image Processing on the kPhone 869s
due Dec 12Final Project Instructions (proposal due Oct 30)