1
ответ

Что означает SIMD?

Я прочитал из книги «Внутренние компоненты операционной системы и принципы проектирования», написанной «Уильямом Сталлингсом», что графические процессоры представляют собой одну инструкцию для нескольких данных, я не понимаю, что это значит. Я искал ...
вопрос задан: 18 March 2019 17:28
1
ответ

Сокращение OpenMP на векторе SSE2

Я хочу вычислить среднее значение изображения (3 канала интереса + 1 альфа-канал, который мы здесь игнорируем) для каждого канала с использованием встроенных функций SSE2. Я пробовал это: __m128 средний = _mm_setzero_ps (); # ...
вопрос задан: 21 January 2019 06:45
1
ответ

Заменить байт другим

Я нахожу трудности в создании кода для этой, казалось бы, легкой проблемы. Учитывая упакованное 8-битное целое число, замените один байт другим, если он присутствует. Например, я хочу заменить 0x06 ...
вопрос задан: 15 January 2019 15:32
1
ответ

Почему мой код SSE Rusty медленнее, чем скалярная версия? [Дубликат]

Я реализовал алгоритм RNG Fast Mersenne Twister (SFMT) SSE в Rust, но версия SSE работает медленнее, чем скалярная версия. Две версии функции следующие: # ...
вопрос задан: 5 March 2017 07:52
1
ответ

транспонируйте для 8 регистров 16-разрядных элементов на SSE2/SSSE3

(Я - новичок к SSE/asm, извинения, если это очевидно или избыточно) там лучший способ транспонировать 8 регистров SSE, содержащих 16-разрядные значения, чем выполнение 24 unpck [люфтганза] PS и 8/16 + перестановки и...
вопрос задан: 10 February 2017 15:08
1
ответ

SIMD-загрузки индексов и команды сбора [дубликат]

Я пытаюсь загрузить 4 (целые) индексы в регистр, а затем загрузить соответствующие векторные значения с помощью команды сбора. Я хотел бы использовать «невыровненную» инструкцию, такую ​​как loadu и AVX2. ...
вопрос задан: 17 May 2015 12:35
1
ответ

Самый быстрый способ проверить, не имеет ли какой-либо элемент в __m256 [duplicate]

У меня есть результат сравнения двух векторов __m256. __m256 result = _mm256_cmp_ps (a, b, _CMP_GT_OQ); В какой момент у меня есть векторный результат с 8 значениями. И каждое из этих значений ...
вопрос задан: 8 March 2015 11:57
1
ответ

С ++ SSE SIMD framework [закрыто]

Кто-нибудь знает внутреннюю библиотеку C ++ x86 SIMD с открытым исходным кодом? Intel предоставляет именно то, что мне нужно, в их интегрированной библиотеке примитивов производительности, но я не могу использовать это из-за авторских прав ...
вопрос задан: 26 October 2013 13:47
1
ответ

Ошибка команды AVX для целочисленного добавления [дубликат]

Кто-нибудь знает, как разрешить эти ошибки? Я пытаюсь добавить два 256-битных целочисленных векторов, но получаю следующую ошибку: cpu_avx.c: 12: 20: ошибка: несовместимые типы при инициализации типа «...
вопрос задан: 9 July 2013 17:20
1
ответ

Сложный Mul и Отделение, использующее sse Инструкции

Выполняет сложное умножение и разделение, выгодное через инструкции SSE? Я знаю, что дополнение и вычитание работают лучше при использовании SSE. Может кто-то говорить мне, как я могу использовать SSE для...
вопрос задан: 29 June 2012 10:16
1
ответ

Как использовать Собственный, библиотека шаблонов C++ для линейной алгебры?

У меня есть алгоритм обработки изображений, который делает из матриц, у меня есть свои собственные коды операции над матрицей (Умножение, Инверсия...) со мной. Но процессор, который я использую, является процессором ARM Cortex-A8, который имеет...
вопрос задан: 27 September 2010 21:21
0
ответов

Сумма префиксов SIMD на процессоре Intel

Мне нужно реализовать алгоритм суммирования префиксов, и мне нужно, чтобы он работал как можно быстрее. Пример: [3, 1, 7, 0, 4, 1, 6, 3] должно дать: [3, 4, 11, 11, 15, 16, 22, 25] Есть ли способ сделать это...
вопрос задан: 26 November 2019 02:23
0
ответов

Как вычислить одно-векторное точечное произведение с использованием встроенных функций SSE в C

Я пытаюсь перемножить два вектора, где каждый элемент одного вектора умножается на элемент в тот же индекс в другом векторе. Затем я хочу просуммировать все элементы полученного ...
вопрос задан: 29 October 2019 23:20
0
ответов

Быстрая, безветвленная, беззнаковая и абсолютная разница

У меня есть программа, которая проводит большую часть своего времени, вычисляя евклидово расстояние между значениями RGB (3 кортежа беззнакового 8-битного Word8). Мне нужна быстрая, безответная беззнаковая int абсолютная разница ...
вопрос задан: 19 April 2019 00:15
0
ответов

Как оптимизировать C-код с SSE-интринками для упакованных 32x32 => 64-битных умножений и распаковки половин этих результатов для (полей Галуа)

Я некоторое время боролся с производительностью сетевого кодирования в разрабатываемом мной приложении (см. Оптимизация SSE-кода, Повышение производительности сетевого кодирования - кодирование и OpenCL ...
вопрос задан: 4 February 2019 09:23
0
ответов

_mm_load_ps против _mm_load_pd против других на Intel x86 ISA

В чем разница между следующими двумя строками? __m128 x = _mm_load_ps ((float *) ptr); __m128 y = _mm_load_pd ((double *) ptr); Другими словами, почему так много разных _mm_load_xyz ...
вопрос задан: 10 January 2019 04:58
0
ответов

Как быстро подсчитать биты в отдельные ячейки в серии целых на Sandy Bridge? [дубликат]

Обновление: пожалуйста, прочтите код, он НЕ о подсчете битов в одном int. Можно ли улучшить производительность следующего кода с помощью какого-нибудь умного ассемблера? uint bit_counter [64]; void Count (...
вопрос задан: 29 April 2018 06:37
0
ответов

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

Intel Advanced Vector Extensions (AVX )не предлагает скалярного произведения в 256 -битной версии (регистр YMM )для переменных двойной точности с плавающей запятой. "Почему?" вопрос был рассмотрен очень кратко...
вопрос задан: 17 November 2017 23:34
0
ответов

Поместить регистр XMM в стек

Есть ли способ поместить упакованное целое двойное слово из регистра XMM в стек? а потом вставлять обратно при необходимости? В идеале я ищу что-то вроде PUSH или POP для общего...
вопрос задан: 13 November 2017 02:36
0
ответов

SSE: разница между _mm_load/store и использованием прямого доступа по указателю

Предположим, я хочу добавить два буфера и сохранить результат. Оба буфера уже распределены по 16 байтам. Я нашел два примера, как это сделать. Первый использует _mm_load для чтения данных из...
вопрос задан: 2 August 2017 15:39
0
ответов

SIMD математические библиотеки для SSE и AVX

Я ищу SIMD математические библиотеки (желательно с открытым исходным кодом) для SSE и AVX. Я имею в виду, например, если у меня есть регистр AVX v с 8 значениями с плавающей запятой, я хочу, чтобы sin (v) возвращал грех всех восьми значений в ...
вопрос задан: 23 May 2017 12:25
0
ответов

چگونه می توان بلافاصله 128 بیتی را به رجیسترهای XMM منتقل کرد

در حال حاضر وجود دارد یک س onال در این مورد وجود دارد ، اما به دلیل "مبهم" بسته شد بنابراین من یک سوال جدید را باز می کنم - من جواب آن را پیدا کردم ، شاید به دیگران نیز کمک کند. سوال این است: چگونه توالی دنباله ای را می نویسید ...
вопрос задан: 23 May 2017 12:10
0
ответов

Заголовочные файлы для встроенных функций x86 SIMD

Какие заголовочные файлы содержат встроенные функции для различных расширений набора инструкций x86 SIMD (MMX, SSE, AVX, ...)? Кажется, невозможно найти такой список в Интернете. Поправьте меня если я ошибаюсь.
вопрос задан: 2 January 2017 07:30
0
ответов

Как объединить два значения __m128 в __m256?

Я хотел бы объединить два значения __m128 в одно __m256. Примерно так: __m128 a = _mm_set_ps(1, 2, 3, 4); __m128 b = _mm_set_ps(5, 6, 7, 8); что-то вроде: __m256 c = { 1, 2, 3, 4, ...
вопрос задан: 23 December 2016 04:49
0
ответов

gcc, встроенные функции simd и быстрые математические концепции

Всем привет :) Я пытаюсь понять несколько концепций, касающихся операций с плавающей запятой, встроенных функций SIMD / math и флага fast-math для gcc. В частности, я использую MinGW с gcc v4.5.0 на процессоре x86. Я ...
вопрос задан: 19 November 2016 23:35
0
ответов

Сокращение суммы байтов без знака без переполнения с использованием SSE2 на Intel

Я пытаюсь найти сокращение суммы 32 элемента (каждый 1 байт данных) на процессоре Intel i3. Я сделал так: с=0; для (я=0; я<32; я++) { s = s + а[i]; } Однако это занимает больше времени, так как...
вопрос задан: 11 June 2016 01:06
0
ответов

Оптимизация кода SSE2

Я использую встроенные функции SSE2 для оптимизации узких мест моего приложения и задаю следующий вопрос : ddata = _mm_xor_si128 (_mm_xor_si128 (_mm_sll_epi32 (xdata, 0x7u), _mm_srl_epi32 (tdata, ...
вопрос задан: 19 May 2016 05:54
0
ответов

Умножение SSE 16 x uint8_t

Я хочу умножить с помощью SSE4 объект __m128i на 16 8-битных целых чисел без знака, но я смог найти только внутреннюю функцию для умножения 16-битных целых чисел. Нет ничего такого, как _mm_mult_epi8?
вопрос задан: 31 January 2016 09:18
0
ответов

SSE (SIMD): умножение вектора на скаляр

Обычная операция, которую я делаю в своей программе - это масштабирование векторов на скаляр (V*s, например, [1,2,3,4]*2 == [2,4,6,8]). Существует ли инструкция SSE (или AVX) для этого, кроме как сначала загружать скаляр в каждый ...
вопрос задан: 12 January 2016 23:24
0
ответов

Доступ к произвольным 16-битным элементам, упакованным в 128-битный регистр

С помощью встроенных функций компилятора Intel, учитывая 128-битный регистр, упаковывающий 8 16-битных элементов, как я могу получить доступ (дешево) к произвольным элементам из регистр, для последующего использования _mm_cvtepi8_epi64 (...
вопрос задан: 16 September 2015 14:55