High Performance Software Development - Topics and Related Lectures
This course on High Performance Software Development covers various topics such as modern programming styles, CPU properties, performance tuning, compiler optimization, memory hierarchy, and more. It also emphasizes the importance of using vector instructions within C/C++ for parallel programming. The course does not focus on programming in assembly languages but highlights the benefits of code optimization by compilers. Related lectures include Compiler Design, Programming in Parallel Environment, Performance Evaluation of Computer Systems, Computer Architecture, and more.
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
High Performance Software Development NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 1
Topics included NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 2
Topics included Modern programming styles vs. performance Relevant properties of modern CPUs ILP, SIMD Performance-tuning software Compiler optimization Memory hierarchy Cache-Aware and Cache-Oblivious algorithms NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 3
Topics not included NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 4
Topics NOT included Programming in assembly languages Compilers usually do it better However, we will use vector instructions within C/C++ Parallel programming See NPRG042 Programming in Parallel Environment Observation: Careful single-threaded implementation produces speed-up similar to average parallel implementation Code optimization by compilers See NSWI109 Compiler Construction Here we will talk about what the compilers do, not how Programming environments for clusters, grids, clouds, ... They require some experience in parallelism and robustness NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 5
Related lectures Summer term Compiler Design - NSWI109 Code optimization by compilers Programming in Parallel Environment - NPRG042 Performance Evaluation of Computer Systems - NSWI131 Including the technology behind profilers, related statistics Computer Architecture - NSWI143 Including more details on CPU internals and memory hierarchy Advanced C++ Programming - NPRG051 Including template metaprogramming Advanced Tools for Software Development and Monitoring - NSWI126 Selected tools, including profilers Winter term Advanced Programming in Parallel Environment - NPRG058 Principles of Distributed Systems - NSWI035 The theory behind parallel and distributed systems NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 6
Motivation NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 7
A homework (2012/2013) students not instructed to optimize speed 100 10 1 0.1 0.01 0.001 NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 8
The same homework students motivated to optimize speed 1 128 zeros 128 128 ones 256 zeros 256 256 ones 512 zeros 512 512 ones 1024 zeros 1024 random 1024 ones 2048 zeros 2048 random 2048 ones random random random 0.1 0.01 0.001 NPRG054 High Performance Software Development- 2020/2021 David Bedn rek 9
Real performance of sorting algorithms Ansel J., Autotuning Programs with Algorithmic Choice, MIT 2013 10