Skip to main content

Unit 3.1.3 What you will learn

In this week, we discover the importance of amortizing the cost of moving data between memory layers.

Upon completion of this week, we will be able to

  • Identify layers in the memory hierarchy.

  • Orchestrate matrix-matrix multiplication in terms of computation with submatrices (blocks) so as to improve the ratio of computation to memory operations.

  • Rearrange data to improve how memory is contiguously accessed.

  • Organize loops so data is effectively reused at multiple levels of the memory hierarchy.

  • Analyze the cost of moving data between memory layers.

  • Improve performance by experimenting with different blocking parameters.

The enrichments introduce us to

  • The origins of the algorithm that you developed and how it is incorporated into a widely used open source software library, BLIS.

  • Analytical methods for determining optimal blocking sizes.

  • Alternative algorithms that may become important when the ratio between the rate at which a processor computes and the bandwidth to memory further deteriorates.

  • Practical techniques, based on the approach exposed in this course, for implementing Strassen's algorithm.