EduPar 2024 Keynote Speaker
Charles E. Leiserson · 2024
Aside from pure intellectual interest, why do we teach our students parallel computing? Most people would agree that the primary goal is to produce greater application performance. Yet students frequently parallelize code only to discover that it runs disappointingly slower because they don't understand performance. To exploit parallelism effectively, it must operate synergistically with a host of other techniques, including caching, vectorization, algorithms, bit tricks, loop unrolling, using compiler switches, tailoring code to the architecture, exploiting sparsity, changing data representation, metaprogramming, etc. Software performance engineering, which encompasses these techniques, is the science and art of making code run fast or otherwise limiting its consumption of resources, such as energy, memory footprint, network utilization, response time, etc. In this talk, I will argue that the end of Moore's Law makes software performance engineering a critical skill for our students to learn.