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

Практика SSE int и float
При работе как с целыми числами, так и с числами с плавающей запятой в SSE (AVX) рекомендуется ли преобразовывать все целые числа в числа с плавающей запятой и работать только с числами с плавающей запятой? Потому что после этого нам нужно всего...
1524 просмотров
schedule 28.07.2022

Clang производит более медленный код, когда AVX включен?
Я использую Xcode 4.5.2 с «Компилятором Apple LLVM 4.1» (Clang). Я попытался скомпилировать код, который в значительной степени зависит от встроенных функций SSE с включенным AVX (пока нет функций _mm256 * и переменных __m256), и получил более...
2198 просмотров
schedule 14.07.2022

Обратный регистр AVX, содержащий двойные числа, с использованием одного встроенного AVX.
Если у меня есть регистр AVX с 4 двойными значениями, и я хочу сохранить обратное значение в другом регистре, можно ли сделать это с помощью одной встроенной команды? Например: если бы у меня было 4 числа с плавающей запятой в регистре SSE, я мог...
3322 просмотров
schedule 03.04.2023

горизонтальная сумма 8 упакованных 32-битных чисел с плавающей запятой
Если у меня есть 8 упакованных 32-битных чисел с плавающей запятой ( __m256 ), какой самый быстрый способ извлечь горизонтальную сумму всех 8 элементов? Аналогично, как получить горизонтальный максимум и минимум? Другими словами, какова наилучшая...
3541 просмотров
schedule 29.07.2023

AVX VMOVDQA медленнее двух SSE MOVDQA?
Пока я работал над своим быстрым циклом ADD ( Ускорение цикла ADD на ассемблере x64 ), я тестировал доступ к памяти с помощью SSE и Инструкции AVX. Чтобы добавить, мне нужно прочитать два ввода и произвести один вывод. Поэтому я написал фиктивную...
6167 просмотров
schedule 30.06.2022

Как сохранить более низкие или более высокие значения из регистра AVX / AVX2 (YMM) в память, как это делает SSE movlps / movhps?
Существуют ли какие-либо инструкции, которые могут сохранять более низкие или более высокие значения из 256-битного регистра AVX / AVX2 (YMM) в адрес памяти, как это делает инструкция SSE movlps / movhps? Или есть другой способ реализовать это?...
3007 просмотров
schedule 10.04.2022

loaddup_pd/unpacklo_pd на Xeon Phi
Если у меня есть следующие двойники в SIMD-векторе шириной 512, как в регистре Xeon Phi: m0 = |b4|a4|b3|a3|b2|a2|b1|a1| можно ли сделать из него: m0_d = |a4|a4|a3|a3|a2|a2|a1|a1| по одной инструкции? Кроме того, поскольку для...
245 просмотров
schedule 29.08.2022

Перестановка в Intel Xeon Phi
Предположим, у меня есть следующие 4 вектора двойников в регистрах Xeon Phi: A-> |a8|a7|a6|a5|a4|a3|a2|a1| B-> |b8|b7|b6|b5|b4|b3|b2|b1| C-> |c8|c7|c6|c5|c4|c3|c2|c1| D-> |d8|d7|d6|d5|d4|d3|d2|d1| Я хочу переставить их в...
446 просмотров

Поиск списков простых чисел с помощью SIMD — SSE/AVX
Мне любопытно, есть ли у кого-нибудь советы о том, как использовать SIMD для поиска списков простых чисел. Особенно меня интересует, как это сделать с помощью SSE/AVX. Я рассматривал два алгоритма: пробное деление и решето Эратосфена. Мне удалось...
1135 просмотров
schedule 06.11.2022

Умножение матрицы на вектор в AVX не пропорционально быстрее, чем в SSE
Я писал умножение матрицы на вектор как в SSE, так и в AVX, используя следующее: for(size_t i=0;i<M;i++) { size_t index = i*N; __m128 a, x, r1; __m128 sum = _mm_setzero_ps(); for(size_t j=0;j<N;j+=4,index+=4) { a =...
6986 просмотров

Есть ли способ имитировать целочисленные побитовые операции для типов _m256 в AVX?
У меня есть логическое выражение, которое мне удалось реализовать в SSE2. Теперь я хотел бы попробовать реализовать это в AVX, используя дополнительный фактор 2 в увеличении параллелизма (от 128-битного типа SIMD до 256). Однако AVX не поддерживает...
2601 просмотров
schedule 12.03.2023

Как выполнить инверсию _mm256_movemask_epi8 (VPMOVMSKB)?
Внутренняя: int mask = _mm256_movemask_epi8(__m256i s1) создает маску с ее 32 битами, соответствующими старшему биту каждого байта s1 . После манипулирования маской с помощью битовых операций (например, BMI2 ) я хотел бы выполнить...
6052 просмотров
schedule 27.04.2022

неявные передачи SIMD (SSE/AVX) с GCC
Мне удалось преобразовать большую часть моего SIMD-кода в векторные расширения GCC. Однако я не нашел хорошего решения для проведения трансляции следующим образом __m256 areg0 = _mm256_broadcast_ss(&a[i]); я хочу сделать __m256...
1105 просмотров
schedule 26.06.2022

Горизонтальная сумма 32-битных чисел с плавающей запятой в 256-битном векторе AVX
У меня есть два массива с плавающей запятой, и я хотел бы рассчитать скалярное произведение, используя SSE и AVX, с минимально возможной задержкой. Я знаю, что для поплавков существует 256-битный точечный продукт, но я читал на SO, что это медленнее,...
5635 просмотров
schedule 25.08.2022

Что отсутствует / неоптимально в этой реализации memcpy?
Я заинтересовался написанием memcpy() в качестве обучающего упражнения. Я не буду писать целый трактат о том, что делал и о чем не думал, но вот реализация какого-то парня : __forceinline // Since Size is usually known, //...
5997 просмотров
schedule 29.03.2023

Разница между инструкциями AVX vxorpd и vpxor
Согласно Intel Intrinsics Guide , vxorpd ymm, ymm, ymm : Вычислить побитовое исключающее ИЛИ упакованных элементов с плавающей запятой двойной точности (64-битные) в a и b и сохранить результаты в dst. vpxor ymm, ymm, ymm : вычислить...
3847 просмотров
schedule 21.03.2023

Когда компилятор переупорядочивает инструкции AVX на Sandy, влияет ли это на производительность?
Пожалуйста, не говорите, что это преждевременная микрооптимизация. Я хочу понять, насколько это возможно, учитывая мои ограниченные знания, как работает описанная функция и сборка SB, и убедиться, что мой код использует эту архитектурную...
460 просмотров
schedule 30.07.2022

Умножение с плавающей запятой: ПОТЕРЯ скорости с AVX против SSE?
У меня есть код, который делает то же самое, но версия AVX значительно МЕДЛЕННЕЕ, чем версия SSE. Кто-нибудь может это объяснить? Что я уже сделал, так это попытался профилировать код с помощью VerySleepy, но это не дало мне никаких полезных...
603 просмотров
schedule 30.05.2022

Могу ли я правильно сравнить с нулевым регистром в avx?
Я встречал очень странное поведение внутренней инструкции AVX _mm256_testc_pd (). Здесь вы можете увидеть описание этой функции https://software.intel.com/sites/landingpage/IntrinsicsGuide/#techs=AVX,AVX2&text=test&expand=5432 Я использовал его...
1235 просмотров
c avx
schedule 18.03.2023

Заставить встроенные функции AVX использовать вместо этого инструкции SSE
К сожалению, у меня есть процессор AMD piledriver, у которого, похоже, проблемы с инструкциями AVX: Запись в память с 256-битными регистрами AVX исключительно медленная. Измеренная пропускная способность в 5-6 раз ниже, чем у предыдущей модели...
1114 просмотров
schedule 29.04.2023