CS 6120: Loop-Level Automatic Vectorization
Introduction Modern processors have support for SIMD instructions, which allow for efficient vector operations. We can leverage this feature to optimize loops that operate iteratively on arrays by changing operations that act on single array elements into vector operations that act on multiple array values in one instruction. Consider the following loop of a vector-vector add:
Loop-Level Automatic Vectorization by Katy Voor , Henry Liu October 23, 2019 Introduction Modern processors have support for SIMD instructions, which allow for efficient vector operations. We can leverage this feature to optimize loops that operate iteratively on arrays by changing operations that act on single array elements into vector operations that act on multiple array values in one instruction. Consider the following loop of a vector-vector add: # Assume a, b, and c represent array base addresses in memory such # that the arrays do not overlap. ... one: int = const 1; vvadd_loop: ai: in
Explore this link on the map →related reading
- LLVM is Smarter Than Meblog.sulami.xyz
- Designing a SIMD Algorithm from Scratch · mcyoungmcyoung.xyz
- A Gentle Introduction to LLVM IR · mcyoungmcyoung.xyz
- Speeding Up the Webcola Graph Viz Library with Rust + WebAssembly - Casey Primozic's Homepagecprimozic.net
- Algorithms for Modern Hardware - Algorithmicaen.algorithmica.org
- A Gentle Introduction to LLVM IR · mcyoungmcyoung.xyz
- Rust Optimization.md · GitHubgist.github.com
- abseil / Performance Hintsabseil.io
- A friendly introduction to machine learning compilers and optimizershuyenchip.com
- A half-hour to learn Rustfasterthanli.me
- Zenbleedlock.cmpxchg8b.com
- From hand-tuned Go to self-optimizing code: Building BitsEvolve | Datadogdatadoghq.com