6.6.3 : Manual vectorization (by Intrinsic functions)
- 6.6.3.1) Begining of the main_intrinsics.cpp file
- 6.6.3.2) The hadamard_product function
- 6.6.3.3) The function to evaluate performances
- 6.6.3.4) The main function
- 6.6.3.5) Full main_intrinsics.cpp file
- 6.6.3.6) The CMakeLists.txt file
- 6.6.3.7) Compilation
- 6.6.3.8) The performances with Intrinsics
The Intel intrinsics documentation : https://software.intel.com/en-us/node/523351
- Some changes (for AVX2) :
- Include : immintrin.h
- float : __m256 (= 8 float)
- Data loading : _mm256_load_ps
- Data Storage : _mm256_store_ps
- Multiply : _mm256_mul_ps
Only on aligned data of course.
Let's create a main_intrinsics.cpp file.