0
голосов
0ответы
49 просмотров

Генератор случайных сигналов SIMD двойной точности с нормальным распределением для AVX, AVX2 и AVX512?

После некоторых исследований мне не удалось найти векторизованный генератор случайных чисел двойной точности (лучше всего было бы нормальное распределение), использующий AVX, AVX2 или AVX512. Как это можно / нужно сделать на C ++ для векторов ...
2
голосов
1отвечать
94 просмотра

Накопление промежуточной суммы (суммы префикса) по горизонтали по вектору __m256i

Я пытаюсь перевести некоторый скалярный код (calc_offsets ниже) в эквивалент AVX2. Он берет серию «счетчиков» и генерирует таблицу положений смещения, начиная с некоторого предоставленного базового значения. ...
0
голосов
0ответы
38 просмотров

Как определить архитектуру процессора AVX2 / AVX / ARM в C во время компиляции? [дубликат]

Я хочу разработать функцию, которая использует SIMD (AVX2, AVX512, NEON) для ускорения вычислений. И я хочу сделать его доступным для разных платформ. Таким образом, необходимо определить, на какой платформе находится пользователь ....
0
голосов
0ответы
70 просмотров

Серийное добавление значений в один и тот же регистр SIMD

Я пытаюсь преобразовать это в AVX2: // параллельные массивы int16_t * Nums = ... int16_t * Capacities = ... int ** Data = ... int * freePointer = ... for (int i = 0; i <n; i ++) {if (Nums [i] == 0) ...
1
голосование
0ответы
84 просмотра

Упаковка 32-битных векторов маски в 8-битный вектор маски [дубликат]

Учитывая 4 вектора маски __m256i mask0, mask1, mask2, mask3 с 8 32-битными элементами, я хотел бы упаковать их в одну векторную маску __m256i с 32 8-битными элементами. // Псевдокод: эти инициализаторы ...
1
голосование
1отвечать
113 просмотров

Как перемежать 3 вектора с плавающей запятой в массив с помощью встроенных функций AVX C ++

У меня есть 3 вектора __m256 x, y, z, заполненные 8 элементами данных каждый (числа с плавающей запятой одинарной точности), и я хотел бы сохранить их чередующимися в памяти [x0, y0, z0, x1, y1, z1, ... ]. Какие актуальные ...
2
голосов
1отвечать
59 просмотров

заполните zmm из двух ymms в C

Мне интересно, как лучше всего загрузить m512i из двух m256is с простой упаковкой (zmm0 = {ymm1, ymm0}). Я знаю, что ymm0 - это младшие биты zmm0, но не уверен, могу ли я использовать его в C, используя ...
0
голосов
0ответы
47 просмотров

Установить маску на 0, когда 0 увидят?

Приведу простой пример. Скажем, меня интересуют буквы от «A» до «Z», только в верхнем регистре, но я хочу остановиться после нажатия недопустимого символа. Пример входной строки - «ABC \ nDummy Text». ...
0
голосов
0ответы
26 просмотров

SIMD преобразовать количество масок в int? [дубликат]

У меня есть значение __m256i, которое является маской. Я в основном хочу, чтобы 0xFF было 1, 0xFFFF было 2 и так далее. Когда достигается 0, маска не устанавливается, поэтому я думал, что lzcnt решит мою проблему. Ниже кажется ...
1
голосование
0ответы
Просмотров: 43

Перестановки векторов AVX512 или AVX2, сгруппируйте элементы uint16 шагами по 16 (32 байта)

У меня в памяти 64 двухбайтовых (коротких) числа: 0 1 2 3 ... 63. Я хочу перетасовать их так, чтобы в памяти они выглядели так: 0 16 32 48 1 17 33 49 2 18 34 50 ... 15 31 47 63 Что самое главное ...
0
голосов
1отвечать
31 просмотр

Могу ли я добавить дополнительные флаги к мезонному тесту compiles?

Я хочу использовать переменную ret, чтобы проверить, поддерживает ли мой процессор avx2: ret = cc.compiles ('' '#include <immintrin.h> int main () {__m256i m = _mm256_set1_epi32 (17); ...
4
голосов
3ответы
148 просмотров

AVX2: BitScanReverse или CountLeadingZeros на 8-битных элементах в регистре AVX

Я хотел бы извлечь индекс самого высокого установленного бита в 256-битном регистре AVX с 8-битными элементами. Я не мог найти для этого ни bsr, ни clz. Для clz с 32-битными элементами ...
3
голосов
1отвечать
131 просмотр

AVX2: Есть ли способ реализовать функцию _mm256_mul_epi8 для постоянной степени 2?

Я хотел бы реализовать следующую операцию над 8-битными элементами: _a = _b * 8 + _c с векторами. В качестве плюса, очевидно, есть _mm256_add_epi8, но я не смог найти _mm256_mul_epi8 или ...
1
голосование
0ответы
62 просмотра

Построчная перестановка матрицы с использованием инструкций SIMD

Я пытаюсь найти подходящий способ применения построчной перестановки матрицы с использованием встроенных функций SIMD (в основном AVX / AVX2 и AVX512). Проблема в основном в вычислении R = PX, где P - это ...
5
голосов
1отвечать
111 просмотров

Распаковка 8-битной в 16-битную с использованием SIMD: версия AVX2 меняет порядок

Я пытаюсь использовать SSE2 для распаковки текста с нулями и распространить это на AVX2. Вот что я имею в виду: предположим, у вас есть такой текст: abcd Я пытаюсь использовать SSE2 для распаковки abcd в \ 0b \ 0c \ 0d. \ 0 '...