Intel AVX: Почему нет 256-битной версии точечного продукта для переменных с плавающей запятой двойной точности?

В еще один вопрос по SO мы попытались (и преуспели) найти способ заменить отсутствующую инструкцию AVX:

 __m256d _mm256_dp_pd(__m256d m1, __m256d m2, const int mask);

Кто-нибудь знает причину, почему эта инструкция отсутствует? Частичный ответ Вот.

5

Решение

Основная причина этого и различных других ограничений AVX заключается в том, что архитектурно AVX немного больше, чем два исполнительных блока SSE бок о бок — вы заметите, что практически никакие инструкции AVX не работают горизонтально через границу между двумя 128-битными половинами вектора (что особенно раздражает в случае vpalignr). В целом, вы просто получаете две параллельные 128-битные операции SSE, что полезно для большинства команд, которые просто работают поэлементно, но не так полезны, как правильная реализация 256-битной SIMD.

12

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]