-
- Чего там тасовать? Задача проще выведенного яйца. Вот цикл: Ксения(2368 знак., 13.10.2016 21:32 - 21:39)
- вы серьёзно? временное сохранение/восстановление сильно снижает производительность? Mahagam(397 знак., 16.10.2016 14:40)
- Напишите на С "ymm0 += (ptr1++) * (ptr2++);", скомпилируйте и сравните код в ассемблере. misyachniy(139 знак., 16.10.2016 14:18)
- И на каком компиляторе вы предлагаете мне это сделать? (спрашиваю, чтобы потом вы не говорили, что компилятор был дурак) - Ксения(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)
- Высокие приоритеты плохо кончаются, ОС потом свое обратно возьмет, да еще сверху накинет. В итоге латентность получается совсем никакая, для обработки в "реальном" времени лучше их не использовать. - Экспериментатор(13.10.2016 21:55, )
- И, тем не менее, высокий приоритет дает ускорение до 10%. Мне же для сравнения эффективности алгоритмов нужны были точные цифры, тогда как при нормальном приоритете во временах имеет место слишком большой разброс. Ксения(174 знак., 13.10.2016 22:09)
- Чтобы тесты можно было использовать на практике, они должы проходить в одинаковых условиях. Назначая высокий приоритет, Вы нарушаете обычные условия. Более правильно сделать большое количество вычислений, время само усреднится. Кстати, я не Экспериментатор(386 знак., 13.10.2016 23:20, )
- И, тем не менее, высокий приоритет дает ускорение до 10%. Мне же для сравнения эффективности алгоритмов нужны были точные цифры, тогда как при нормальном приоритете во временах имеет место слишком большой разброс. Ксения(174 знак., 13.10.2016 22:09)
- Цитата. Скрипач(151 знак., 13.10.2016 20:28)
- Там эта, правильный учет кэшей может несколько порядков к производительности прибавить. Хотя конечно правильные инструкции легче из асма использовать. - LightElf(13.10.2016 21:16)
- Точнее, совсемнеправильный - сожрать. Разумное приближение, отличающиеся от идеала на единицы процентов, собрать на асме руками - вполне реально. - Скрипач(13.10.2016 21:56)
- Полупустой стакан или полуполный? - LightElf(13.10.2016 22:28)
- 5% - воздуха? Или бургунского? - Скрипач(13.10.2016 22:29)
- Полупустой стакан или полуполный? - LightElf(13.10.2016 22:28)
- Точнее, совсемнеправильный - сожрать. Разумное приближение, отличающиеся от идеала на единицы процентов, собрать на асме руками - вполне реально. - Скрипач(13.10.2016 21:56)
- Нет, аргументы уже привел. - misyachniy(13.10.2016 20:35)
- Спекулятивное выполнение, на "тяжелой математике " практически бесполезно. По крайней мере, в сравнении со специальными наборами команд. - Скрипач(13.10.2016 20:49)
- Сколько проектов у вас используют ассемблер x86 ? - misyachniy(13.10.2016 20:55)
- Скажем, у меня есть ассемблерная библиотека примитивов, которая фактически стала неотъемлемой частью любого моего проекта. Писать ее начала давно, когда SSE и AVX еще не было (по крайней мере, у моего процессора). Подвигло меня к этому понимание Ксения(3260 знак., 13.10.2016 22:51 - 22:58)
Два или три. Один. Скрипач(69 знак., 13.10.2016 20:56 - 20:58)- AVX и AVX2 используете? Программиста на С уволили уже? - misyachniy(13.10.2016 21:02)
- Сколько проектов у вас используют ассемблер x86 ? - misyachniy(13.10.2016 20:55)
- Спекулятивное выполнение, на "тяжелой математике " практически бесполезно. По крайней мере, в сравнении со специальными наборами команд. - Скрипач(13.10.2016 20:49)
- Там эта, правильный учет кэшей может несколько порядков к производительности прибавить. Хотя конечно правильные инструкции легче из асма использовать. - LightElf(13.10.2016 21:16)
- Чего там тасовать? Задача проще выведенного яйца. Вот цикл: Ксения(2368 знак., 13.10.2016 21:32 - 21:39)