Вопросы по теме 'avx2'

Как найти горизонтальный максимум в 256-битном векторе AVX
У меня есть вектор __m256d, содержащий четыре 64-битных значения с плавающей запятой. Мне нужно найти горизонтальный максимум элементов вектора и сохранить результат в скалярном значении с двойной точностью; Все мои попытки закончились...
8551 просмотров
schedule 15.02.2023

В чем разница между vextracti128 и vextractf128?
vextracti128 и vextractf128 имеют одинаковые функции, параметры и возвращаемые значения. Вдобавок один - это набор инструкций AVX, а другой - AVX2. В чем разница?
1959 просмотров
schedule 15.12.2022

Каков наибольший объем данных, которые одна инструкция x86 будет считывать или записывать в кэш L1?
Я только что прочитал AVX (Википедия) , и у меня возник этот вопрос.
335 просмотров
schedule 22.10.2022

Инициализировать __m256i из 64 старших или младших бит четырех переменных __m128i
Предположим, у меня есть четыре __m128i переменных, которые содержат данные, полученные в результате некоторых вычислений. Например, скажем: __m128i a = _mm_set_epi64x(1, 11); __m128i b = _mm_set_epi64x(2, 22); __m128i c = _mm_set_epi64x(3,...
3552 просмотров
schedule 24.02.2022

Компактный регистр AVX2, чтобы выбранные целые числа были смежными в соответствии с маской
В вопросе Оптимизация сжатия массива главный ответ гласит: Регистры SSE/AVX с последними наборами инструкций обеспечивают лучший подход. Мы можем напрямую использовать результат PMOVMSKB, преобразовав его в управляющий регистр для чего-то...
922 просмотров
schedule 07.04.2022

VEXTRACTF128 против VEXTRACTI128
Насколько я могу судить, инструкции VEXTRACTF128 и VEXTRACTI128 делают одно и то же, имеют одинаковую задержку, одинаковую пропускную способность и используют одни и те же порты. Единственная разница, которую я не могу сказать между ними, заключается...
101 просмотров
schedule 04.07.2023

Умножьте два вектора 32-битных целых чисел, получив вектор из 32-битных элементов результата.
Каков наилучший способ умножить каждую 32-битную запись двух регистров _mm256i друг на друга? _mm256_mul_epu32 - это не то, что я ищу, потому что он выдает 64-битные выходные данные. Мне нужен 32-битный результат для каждого 32-битного...
1640 просмотров
schedule 24.03.2023

Сохранить __m256i в целое число
Как я могу сохранить тип данных __m256i в целое число? Я знаю, что для поплавков есть: _mm256_store_ps(float *a, __m256 b) где первый аргумент - это выходной массив. Для целых чисел я нашел только: _mm256_store_si256(__m256i *a,...
3925 просмотров
schedule 06.08.2022

Поиск несоответствия AVX2 «Победитель получает все»
Я оптимизирую часть алгоритма оценки несоответствия «победитель получает все», используя AVX2. Моя скалярная процедура точна, но при разрешении QVGA и 48 несоответствиях время выполнения на моем ноутбуке разочаровывающе медленное и составляет ~ 14...
849 просмотров
schedule 26.10.2023

Каков самый быстрый способ загрузить первую строку структуры 2x4 64b в регистр 256b в AVX2?
У меня есть структура, определенная как: struct HorStruct { uint64_t v[2][4]; typedef uint64_t value_type; typedef uint64_t* iterator; typedef const uint64_t* const_iterator; typedef value_type& reference; typedef const...
194 просмотров
schedule 21.06.2022

Загрузка 8 символов из памяти в переменную __m256 как упакованные числа с плавающей запятой одинарной точности
Я оптимизирую алгоритм размытия по Гауссу на изображении и хочу заменить использование буфера с плавающей запятой [8] в приведенном ниже коде внутренней переменной __m256. Какая серия инструкций лучше всего подходит для этой задачи? // unsigned...
4380 просмотров
schedule 22.02.2022

Почему процессор Intel Haswell XEON периодически неправильно вычисляет FFT и ART?
В последние дни я наблюдал за поведением своего нового рабочего места, которое не мог объяснить. Проведя небольшое исследование этой проблемы, возможно, есть ошибка в архитектура INTEL Haswell , а также в текущем поколении Skylake. Прежде чем...
1707 просмотров
schedule 01.08.2023

Инструкции Intel FMA предлагают нулевое преимущество в производительности
Рассмотрим следующую последовательность инструкций, используя инструкции FMA Haswell: __m256 r1 = _mm256_xor_ps (r1, r1); r1 = _mm256_fmadd_ps (rp1, m6, r1); r1 = _mm256_fmadd_ps (rp2, m7, r1); r1 = _mm256_fmadd_ps (rp3, m8, r1); __m256...
1330 просмотров
schedule 09.07.2023

Найдите 4 минимальных значения в 4 регистрах __m256d
Не могу понять как реализовать: __m256d min(__m256d A, __m256d B, __m256d C, __m256d D) { __m256d result; // result should contain 4 minimal values out of 16 : A[0], A[1], A[2], A[3], B[0], ... , D[3] // moreover it should be...
475 просмотров
schedule 11.08.2022

Сложная реорганизация данных с векторными инструкциями
Мне нужно загрузить и переставить 12 байтов в 16 (или 24 в 32), следуя приведенному ниже шаблону: ABC DEF GHI JKL становится ABBC DEEF GHHI JKKL Можете ли вы предложить эффективные способы достижения этого с помощью инструкций SSE(2)...
365 просмотров
schedule 04.10.2022

Дублирование типа данных __m256i
Меня интересует копирование данных типа __m256i (используется в Intel Intrinsics для инструкций AVX) в новый __m256i. Я знаю, что могу сохранить данные из регистра AVX в памяти, а затем из памяти, я могу загрузить данные в новый регистр. Однако...
333 просмотров
schedule 11.04.2024

C - самый быстрый способ поменять местами два блока памяти одинакового размера? (Осуществимость решения)
Этот вопрос является расширением этого один . Здесь я представляю два возможных решения и хочу знать их осуществимость. Я использую микроархитектуру Haswell с компиляторами GCC/ICC. Я также предполагаю, что память выровнена. ВАРИАНТ 1 . У...
810 просмотров
schedule 19.09.2022

Целочисленное сравнение AVX2 для меньшего равного
Каков наиболее эффективный способ сравнить два 4x 64-битных целочисленных вектора AVX для <= . Из Руководства Intel Intrinsics у нас есть _mm256_cmpgt_epi64(__m256i a, __m256i b) = a > b _mm256_cmpeq_epi64(__m256i a, __m256i b) = a...
1978 просмотров
schedule 30.03.2023

AVX2 умножает 2 вектора 64-битных целых чисел, отбрасывая верхнюю половину каждого результата?
Можно ли векторизовать умножение двух 64-битных целых чисел, если нужна только младшая часть результата?
371 просмотров
schedule 03.07.2023

Где VPERMB в AVX2?
В AVX2 есть много хороших вещей. Например, в нем есть множество инструкций, которые намного мощнее своих предшественников. Возьмем, к примеру, VPERMD : он позволяет вам произвольно транслировать / перемешивать / переставлять с одного 256-битного...
1579 просмотров
schedule 03.10.2023