- 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