3 ms·
I believe the flags are in the compile.sh script in the repo: OMP_NUM_THREADS=8 g++ -Wall -std=c++11 -fopenmp -D_USE_OPENBLAS -O3 -L/usr/lib -lopenblas -
by gpderetta 5y ago
I believe the flags are in the compile.sh script in the repo:
OMP_NUM_THREADS=8 g++ -Wall -std=c++11 -fopenmp -D_USE_OPENBLAS -O3 -L/usr/lib -lopenblas -I /usr/include/openblas -march=native -mavx2 -mfma -funroll-loops compare_blas.cpp -lopenblas -o matmul
Of course it is possible that different flags were used to benchmark the naive version.
edit: and of course those f*ss suffixes show that the compiler is not actually vectorizing the loops, just using the avx encoding of scalar instructions (plus fma).
edit2: likely -ffast-math is also required for vectorization as it will change the sequence of operations, but after experimenting with it a bit it seems that in this case is still not sufficient.