-
- И на каком компиляторе вы предлагаете мне это сделать? (спрашиваю, чтобы потом вы не говорили, что компилятор был дурак) - Ксения(16.10.2016 14:59)
- gcc (-mavx2 -march=haswell -mfpmath=sse -O3, gcc=6.2) -- для "упакованных флоатов" в gcc нужно встроенные функции использовать -- тот же ассемблер получается... fk0(795 знак., 16.10.2016 16:53 - 17:47)
- А что, очень даже приличный код. Признаюсь, не ожидала. Странно только, что использует более короткие xmm-регистры вместо вдвое более длинных ymm. Именно это и портит всю малину, снижая скорость вдвое. Причем ymm обязаны быть, если это Haswell, Ксения(560 знак., 17.10.2016 00:53)
- а теперь подобный код скормить родному компилятору от интела?? - Mahagam(17.10.2016 10:00)
- Скормила, код получился гадский. Даже если списать качество кода на мое неумение включить там нужную оптимизацию (хотя Yes на вкладке Optimization я выставляла), главным остается все тот же недостаток - считает на коротких регистрах xmm, а более Ксения(270 знак., 17.10.2016 21:40)
- Смотри: fk0(382 знак., 18.10.2016 00:13)
- Так не годится, т.к. исходные массивы должны быть типа double. Т.е. каждый элемент в них - число, а вовсе не пакет из 4-х чисел. Правильно - копировать числа четверками из double-массивов в регистры ymm, а потом использовать параллельную пакетную Ксения(791 знак., 18.10.2016 00:42)
- Ну у тебя-то на входе пакеты! vmovupd и vfmadd231pd работают с пакетами. А иначе есть vmovusd и vfmadd231sd. - fk0(18.10.2016 00:48)
- Так не годится, т.к. исходные массивы должны быть типа double. Т.е. каждый элемент в них - число, а вовсе не пакет из 4-х чисел. Правильно - копировать числа четверками из double-массивов в регистры ymm, а потом использовать параллельную пакетную Ксения(791 знак., 18.10.2016 00:42)
- Смотри: fk0(382 знак., 18.10.2016 00:13)
- Скормила, код получился гадский. Даже если списать качество кода на мое неумение включить там нужную оптимизацию (хотя Yes на вкладке Optimization я выставляла), главным остается все тот же недостаток - считает на коротких регистрах xmm, а более Ксения(270 знак., 17.10.2016 21:40)
- а теперь подобный код скормить родному компилятору от интела?? - Mahagam(17.10.2016 10:00)
- А что, очень даже приличный код. Признаюсь, не ожидала. Странно только, что использует более короткие xmm-регистры вместо вдвое более длинных ymm. Именно это и портит всю малину, снижая скорость вдвое. Причем ymm обязаны быть, если это Haswell, Ксения(560 знак., 17.10.2016 00:53)
- gcc (-mavx2 -march=haswell -mfpmath=sse -O3, gcc=6.2) -- для "упакованных флоатов" в gcc нужно встроенные функции использовать -- тот же ассемблер получается... fk0(795 знак., 16.10.2016 16:53 - 17:47)
- И на каком компиляторе вы предлагаете мне это сделать? (спрашиваю, чтобы потом вы не говорили, что компилятор был дурак) - Ксения(16.10.2016 14:59)