Вопросы по теме '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