Lecture 24: Critical Thinking. Code Optimization Aspects.
Last updated
Last updated
Last time
Parallel computing, multi-core: how caches come into play
Critical thinking, and similar tricks for speeding up your code
Today
Critical thinking, and other similar tricks for speeding up your code
When working on a problem, there's more to performance than asymptotic complexity
Because asymptotic complexity is most often defined by the number of operations
Memory transactions are rarely considered: they are specific to the hardware
Assess the arithmetic intensity associated with your problem
Simple optimization: Fusing transformations and do not bring data into the cache twice
Aggressive optimizations done by the compiler might change the behavior of your code
To help the compiler:
Allow it to see as much code as possible
Provide flags to convey information (e.g., the target architecture)
There are a lot of amazing things covered in this lecture. The takeaways are:
Compilers are fantastic
Know them better to use them wisely
A quick example is down below. Refer to the slides for a lot more fun facts