Lecture 25: Computing with Supercomputers.
Lecture Summary
Last time
Critical thinking, and similar tricks for speeding up your code
Today
Wrapping up critical thinking
Case study
Critical Thinking
Once again, a lot of interesting stuff in the slides. Here's a quick summary of what's covered
Basic optimizations
Exploiting Instruction-Level Parallelism (ILP)
Hazards: Structural, data dependency, control
Pipelining
Loop unrolling
Loop unrolling with reassociation
Loop unrolling with separate accumulators
Vector instructions (use fat registers to perform the same operation on all variables stored in register)
Branch prediction
On an unrelated note: I took CS 61C @ Berkeley in summer 2019, and one of the project assignments is Performance Programming and the optimization techniques used include:
Profiling & Amdahl's Law
Unrolling & Other Optimizations
SIMD Instructions
OpenMP
I transferred the credits of CS 61C to meet the requirements for CS 354 at UW-Madison. Looking back from the top of the mountain, CS 61C really covered most of the stuff in CS 252, 354, a bit of 352, 552, and 537, and even things in 759. I'm not saying that our courses are bad (the classes I mentioned above, particularly the more advanced ones, spent more time going in-depth) but damn. Berkeley is so good. So good.
MPI
Last updated