On Thursday, 30 January 2014 at 21:54:17 UTC, bearophile wrote:
You seem to have a quite recent CPU,
An aging i3?
as the G++ code contains instructions like vmovsd. So you can
try to do the same with ldc2, and use AVX or AVX2.
Hmm...
This is getting a bit silly now. I must have some compile
switches for g++ wrong:
g++ -Ofast -fkeep-inline-functions -fomit-frame-pointer
-march=native -mfpmath=sse -mavx -mssse3 -flto --std=c++11
-fopenmp nbody.cpp -o nbody-cpp
time ./nbody-cpp 50000000:
-0.169075164
-0.169059907
0:05.09 real, 5.07 user, 0.00 sys, 1140 kb, 99% cpu
ldc2 -release -O3 -disable-boundscheck -vectorize
-vectorize-loops -ofnbody-ldc -mattr=+avx,+ssse3 nbody.d
time ./nbody-ldc 50000000:
-0.169075164
-0.169059907
0:04.02 real, 4.01 user, 0.00 sys, 1304 kb, 99% cpu