Section 2 What will I learn in this course?
Computers are now essential in everyday life. Incorrect and/or slow programs lead to frustration in the best case and disaster in the worst. Thus, how to construct correct programs that can attain high performance is a skill that all who program computers must master.
In this course, we teach “goal-oriented programming” the way Edsger Dijkstra intended: You will learn how to derive programs hand-in-hand with their proofs of correctness. Matrix computations (linear algebra) is the domain from which we draw examples. Typically, we end up with a family of algorithms (programs) all of which compute a given operation. From this family we can then pick the algorithm that has desirable properties. For example, one algorithm may be easier to parallelize than another algorithm or it may inherently be able to attain better performance on a given architecture. You will then learn techniques for mapping the appropriate algorithms to computer architectures so that they can attain high performance.
Subsection 2.1 Prerequisites
You need to have taken a course on linear algebra. You need to have prior experience with basic proof techniques and predicate logic as taught in CS311 or a discrete mathematics class. Major programming assignments will be in the C programming language. You need to either know rudimentary C, or be able to learn it quickly.
Subsection 2.2 Text/Materials
This class is based on materials developed by Prof. Robert van de Geijn, Dr. Maggie Myers, and Dr. Devangi N. Parikh. You can access these materials from
ulaff.net.You need to install Matlab on your computer. UT has a site license. Instructions on how to access the license will be provided.
Subsection 2.3 Learning Objectives
By the end of the semester you should be able to:
- Analyze architecture features that effect performance.
- Calcuate the peak performance of your machine
- Implement various linear algebra operations.
- Transform your implementation such that it takes advantage of the various architecture features available.
- Prove that simple code segments of your code are correct.
- Derive your code to be correct.
- Derive a family of algorithms for a given linear algebra operation.
- Compare/contrast/analyze the performance of the members of a family of algorithms and reason which algorithm will perform better.
Subsection 2.4 Detailed Calendar
| Date | Day | Topic |
| Jan 13, 2025 | Monday | Motivating Activity |
| Jan 15, 2025 | Wednesday | Computer Arch Features; Vector registers, instruction latency and througput |
| Jan 20, 2025 | Monday | MLK Day - No Class |
| Jan 22, 2025 | Wednesday | Benchmarks; Peak Performance |
| Jan 27, 2025 | Monday | Review of Linear Algebra; Matrix multiplication as a loop around other matrix operations |
| Jan 29, 2025 | Wednesday | Floating point error; Loop Ordering |
| Feb 03, 2025 | Monday | Importance of hiding instruction latency, microkernels |
| Feb 05, 2025 | Wednesday | Memory hierarchy; Cache layout |
| Feb 10, 2025 | Monday | Amortizing data movement |
| Feb 12, 2025 | Wednesday | Imporance of contiguous memory access |
| Feb 18, 2025 | Monday | Multicore programming |
| Feb 19, 2025 | Wednesday | Review |
| Feb 24, 2025 | Monday | Review: logic and reasoning |
| Feb 26, 2025 | Wednesday | Hoare triple and weakest precondition |
| Mar 03, 2025 | Monday | Deriving simple code segments |
| Mar 05, 2025 | Wednesday | Deriving if statements |
| Mar 10, 2025 | Monday | Deriving while loops |
| Mar 12, 2025 | Wednesday | FLAME worksheet |
| Mar 17, 2025 | Monday | Spring Break - No Class |
| Mar 19, 2025 | Wednesday | Spring Break - No Class |
| Mar 24, 2025 | Monday | FLAME worksheet |
| Mar 26, 2025 | Wednesday | Advanced Matrix Operations |
| Mar 31, 2025 | Monday | Advanced Matrix Operations |
| Apr 02, 2025 | Wednesday | Advanced Matrix Operations |
| Apr 07, 2025 | Monday | Review |
| Apr 09, 2025 | Wednesday | Exam |
| Apr 14, 2025 | Monday | Explorations: Extrapolating Goto Algorithm to other operations |
| Apr 16, 2025 | Wednesday | Explorations: Beyond linear algebra operations |
| Apr 21, 2025 | Monday | Project Presentations |
| Apr 23, 2025 | Wednesday | Project Presentations |
| Apr 28, 2025 | Monday | Project Presentations |
