Outline
Main Page
1 : Introduction
2 : Creation of a HPC/Timer library
2.1 : The rdtsc files
2.1.1 : The header (timer.h)
2.1.2 : The source (timer.cpp)
2.2 : The allocation/deallocation files
2.2.1 : The header (asterics_alloc.h)
2.2.2 : The source (asterics_alloc.cpp)
2.3 : The main header (asterics_hpc.h)
2.4 : The CMakeLists.txt
2.5 : The compilation
3 : Optimisation of Hadamard product
3.1 : What is the Hadamard product ?
3.2 : Main to evaluate the Hadamard product
3.3 : The CMakeLists.txt file
3.4 : Get the performances
3.5 : The first performances
3.6 : How to vectorize the computation
3.6.1 : What is vectorization ?
3.6.2 : Automatic vectorization (by the compiler)
3.6.2.1 : Things to verify before vectorizing
3.6.2.2 : The full main_vectorize.cpp file
3.6.2.3 : The CMakeLists.txt file
3.6.2.4 : Compilation
3.6.2.5 : The performances with vectorization by the compiler
3.6.3 : Manual vectorization (by Intrinsic functions)
3.6.3.1 : Begining of the main_intrinsics.cpp file
3.6.3.2 : The hadamard_product function
3.6.3.3 : The function to evaluate performances
3.6.3.4 : The main function
3.6.3.5 : Full main_intrinsics.cpp file
3.6.3.6 : The CMakeLists.txt file
3.6.3.7 : Compilation
3.6.3.8 : The performances with Intrinsics
3.6.4 : Conclusion on vectorization
3.7 : Code analysis with maqao
3.7.1 : Classical compilation options analysis with maqao
3.7.1.1 : Compilation O0
3.7.1.2 : Compilation O1
3.7.1.3 : Compilation O2
3.7.1.4 : Compilation O3
3.7.1.5 : Compilation Ofast
3.7.2 : Vectorization compilation analysis with maqao
3.7.3 : Intrinsics compilation analysis with maqao
3.7.3.1 : Classical intrinsic version
3.7.3.2 : Classical intrinsic interleaved version