О компиляторах и процессорах: AVX

Sep 04, 2011 18:22


Кросспост из блога автора. Комментировать лучше там, но можно и тут

Армянское радио Нас спрашивают: Как измениться производительность intrinsic варианта на Core-i7, если поменять
_mm_dp_ps на _mm256_dp_ps
_mm_blend_ps на _mm_blend256_ps
То-есть насколько вырастить производительность если мы совсем на AVX переедем и будет обрабатывать по 8 float ( Read more... )

gcc, Программирование, avx, microsoft visual studio, intel, core i7

Leave a comment

Comments 13

iskatel September 4 2011, 15:41:03 UTC
а разве они уже умеют 1 блоком делать операцию над 256 бит вектором за раз ?
Вроде ж писали, что регистры по 256, но каждую половинку по факту обрабатывает свой блок.

Reply

alextutubalin September 4 2011, 15:46:20 UTC
Ну так а мне, по счастью, и не надо 256 бит за раз, у меня скалярное умножение двух векторов длиной 4
И _mm256_dp_ps() делает именно это - умножает зараз две половинки.

Reply


maratyszcza September 11 2011, 21:10:48 UTC
Попробуйте погонять вот этот код (компилировать Nasm'ом)
; Processing speed on Core i7 2630QM (2GHz, Signle-Channel DDR3-1333 (PC3-10700 ( ... )

Reply

alextutubalin September 12 2011, 03:31:55 UTC
Попробую, но пока не понимаю что он делает, тем паче что передача параметров через регистр с инфраструктурой C++ как-то плохо совместима, ну да придумаю что-нибудь.

Reply

maratyszcza September 12 2011, 20:16:44 UTC
Calling convention стандартная для Windows x64. В ней первые четыре параметра передаются в регистрах

Reply

alextutubalin September 12 2011, 18:54:45 UTC
Я что про это хочу сказать (пройдя в отладчике и поняв)
1) Идея отличная, работать должно быстро.
Но
2) То что мы 16 входных значений упаковали в 12 выходных - это для каких-то применений хорошо, а для последующей обработки в FP - категорически неудобно. Поэтому в моих реализациях 4-й компонент выхода обнулялся и это было спецально.

3) Конкретно в этом коде кажется есть ошибка (проверил дважды, вроде в _mm я все правильно перенес) от которой в ymm4 на выходе неправильно.

Reply


Leave a comment

Up