Короче я хочу с помощью SSE найти среднее 4-х компонентных векторов (каждая координата в single precision).
Почему-то получается не слишком быстрей, чем обычный цикл:
> cc -O2 -o test2 test2.c
> ./test2
0.224113
360287968.000000 360287968.000000 360287968.000000
0.207714
360287968.000000 360287968.000000 360287968.000000
Зато вроде бы то же самое, но со скалярами, куда быстрее:
> cc -O2 -o test3 test3.c
> ./test3
0.001325 1074428160.000000
0.001332 1074428160.000000
0.000336 1074427136.000000
2.500000
По сути в первом варианте (с векторами) с помощью SSE мы убрали внутренний цикл, т.е. операций суммирования стало меньше в 4 раза, а скорость такая же. Подумал, что это из-за того, что компилятор может раскрыть цикл, и прыжков будет меньше, но нет, это не играет роли, как видно из второго теста. Как правильно готовить SSE для подсчета среднего именно векторов?