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