Episodes
Information about the final project, followed by a guest lecture covering fractal trees, which combine the strengths of B-trees and append-to-file. Analysis of search and insert in a simplified fractal tree.
Published 06/22/15
Students vote on which ray-tracer images are accurate enough to be included in the competition, and these entries are tested against each other for speed. Students also provide feedback on the course.
Published 06/22/15
Meeting for 6.172 industry mentors. Description of mentorship role, expectations, overview of course and how it fits into EECS curriculum.
Published 06/22/15
Primer on ray tracing techniques, given to prepare students for the final project. Includes some ray tracing background and a code overview covering classes and high-level execution.
Published 06/22/15
Lecture covering distributed systems at the cluster, data center, and planet scales. Topics include message passing, examples of the need to scale, Google's programming model, and cloud computing.
Published 06/22/15
Lecture covering nondeterministic programming, including mutual exclusion, implementation of mutexes, and locking anomalies.
Published 06/22/15
Lecture covering analysis of multithreaded algorithms, including divide-and-conquer recurrences, loop parallelism in Cilk++, and matrix multiplication and merge sort examples.
Published 06/22/15
The first part of the lecture covers parallelism analysis, caches, and synchronization correctness. The second focuses on compiler optimization questions: is the optimization legal, faster, and automatic?
Published 06/22/15
Guest lecture by Ravi Soundararajan of VMware, covering ten case studies in performance engineering.
Published 06/22/15
Discussion of project 3 beta. Lecture covering multicore programming, including shared-memory hardware, concurrency platforms, and race conditions.
Published 06/22/15
Lecture covering the impact of synchronization and memory on parallel performance, using OpenMP instead of Cilk. Topics include granularity of parallelism, true and false sharing, and load balancing.
Published 06/22/15
Lecture covering dynamic storage allocation, including reference counting, a graph abstraction, and updating pointers.
Published 06/22/15
Lecture covering synchronizing without locks, including memory consistency, lock-free protocols, the ABA problem, and reducer hyperobjects.
Published 06/22/15
Lecture covering cache-efficient algorithms, with tiled and recursive matrix multiplication examples.
Published 06/22/15
Lecture covering parallelism, scheduling theory, the Cilk++ runtime system, and Cilk chess programs.
Published 06/22/15
Basic performance engineering. Bentley's rules (modifying data, modifying code) and the traveling salesman problem.
Published 06/22/15
Lecture covering memory systems, including cache concepts, access pattern concepts, data structure transformations, and computation transformations.
Published 06/22/15
Lecture covering compiler hacks, when to optimize, data-flow analysis and optimizations, and instruction scheduling. Discussion of quiz, including common mistakes.
Published 06/22/15
Lecture covering bit hacks. Examples include swap, population count, and the n-queens problem, used to highlight backtracking search and bitvector representation.
Published 06/22/15
Discussion of project 2.2 beta, how pair programming can lead to less time debugging, and importance of working well in groups. Lecture covering more cache-efficient algorithms, including a heat diffusion simulation.
Published 06/22/15
Overview of computer architecture, profiling a program, and a set of example programs. Student performance on project 1 is also discussed.
Published 06/22/15
Theory and background of profiling tools. Two interactive walkthroughs: matrix multiply and branchless sorting.
Published 06/22/15
Lecture covering single threaded performance and assembly language. Discussion of project results, emphasizing importance of writing tests first and pair programming.
Published 06/22/15
Introduction to course, administrative information. Lecture covering matrix multiply as a case study, including matrix representation, performance counters, instruction level optimizations, and parallel execution.
Published 06/22/15