18-645: How to Write Fast Code I
The fast evolution and increasing complexity of computing platforms pose a major challenge for developers of high performance software for engineering, science, and consumer applications: it becomes increasingly harder to harness the available computing power. Straightforward implementations may lose as much as one or two orders of magnitude in performance. On the other hand, creating optimal implementations requires the developer to have an understanding of algorithms, capabilities and limitations of compilers, and the target platform's architecture and microarchitecture. This interdisciplinary course introduces the student to the foundations and state-of-the-art techniques in high performance software development using important functionality such as linear algebra kernels, transforms, filters and other kernels that are utilized by many scientific, engineering and machine learning applications. The course will explain how to optimize for the memory hierarchy, take advantage of special instruction sets, and how to write parallel code for multicore, manycore, and cluster platforms, based on state-of-the-art research. Further, general strategies for performance analysis and optimization are introduced. Students will apply the lessons in group projects that accompany the course.Prerequisite: Senior ECE or CS undergraduate student or higher, solid C programming skills.
Last Modified: 2023-04-06 1:38PM
- Fall 2023
- Fall 2022
- Fall 2021
- Fall 2020