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

Цикл оптимизации с несколькими инструкциями (SSE2, SSE4) с TBB
У меня есть простой алгоритм обработки изображений. Вкратце, изображение (среднее) в формате с плавающей запятой вычитается из 8-битного изображения, а затем результат сохраняется в изображение с плавающей запятой (назначение). эта функция в...
1525 просмотров

sse2 умножение с плавающей запятой
Я попытался перенести код из FANN Lib (нейронная сеть, написанная на C) в SSE2. Но производительность SSE2 ухудшилась по сравнению с обычным кодом. С моей реализацией SSE2 один запуск занимает 5,50 мин без 5,20 мин. Как SSE2 может работать...
2077 просмотров
schedule 25.04.2022

Добавление двух типов __m128 через Accelerate framework
Мне нужно добавить /mul/sub две переменные __m128 (с плавающей запятой), используя фреймворк Accelerate. Но я не могу найти функцию для этого. Все функции платформы Accelerate принимают тип int__vector__ вместо типа float__vector__ . Я нашел...
487 просмотров
schedule 23.06.2022

Инструкции SSE для добавления всех элементов массива
Я новичок в инструкциях SSE2. Я нашел инструкцию _mm_add_epi8 , которая может добавить два элемента массива. Но мне нужна инструкция SSE, которая может добавлять все элементы массива. Я пытался разработать эту концепцию, используя этот код:...
22887 просмотров
schedule 06.01.2023

ROS (операционная система для роботов) с флагом SSSE3
Я недавно начал работать с ROS и застрял на одной проблеме. Мне нужно использовать некоторые классы, требующие расширения ЦП SSE2, SSE3 и SSSE3. Я попытался отредактировать файл manifest.xml моего пакета ROS, например <package>...
252 просмотров
schedule 18.07.2022

Тест нулевого вектора SIMD
Существует ли быстрый способ проверить, является ли вектор SIMD нулевым вектором (все компоненты равны +-нулю). В настоящее время я использую алгоритм с использованием сдвигов, который выполняется за время log2 (N), где N - размерность вектора....
2361 просмотров
schedule 22.06.2022

Использование встроенной сборки для ускорения умножения матриц
Я пытался ускорить умножение матрицы на матрицу C ‹- C + alpha * A * B с помощью блокировки регистров, векторизации SSE2 и блокировки кеша L1 (обратите внимание, что я специально выбрал параметр транспонирования op (A) = A и op ( Б) = Б). После...
4105 просмотров

Де-перемежение канала изображения в 16-битных векторах SSE
байт у меня есть изображение 32 бит на пиксель. Мне нужно перемежать цветовые каналы RGB в разных 16-битных векторах. Для этого я использую следующий код ( как деинтерливировать канал изображения в SSE ) // deinterleave chaneel R, G, B ,A in 16...
977 просмотров
schedule 12.07.2022

Точечное производство с использованием sse
#define Size 50000 void main() { unsigned char *arry1 = (unsigned char*)malloc(sizeof(unsigned char)* Size); unsigned char *arry2 = (unsigned char*)malloc(sizeof(unsigned char)* Size); unsigned int *result = (unsigned...
155 просмотров
schedule 04.05.2022

Быстрое копирование каждого второго байта в новую область памяти
Мне нужен быстрый способ скопировать каждый второй байт в новую область памяти, выделенную malloc. У меня есть необработанное изображение с данными RGB и 16 битами на канал (48 бит), и я хочу создать изображение RGB с 8 битами на канал (24 бита)....
1486 просмотров
schedule 06.08.2023

Почему мой модуль ядра отлично выполняет деление с плавающей запятой?
Я пытаюсь использовать типы данных float и double внутри модуля ядра. Чтобы удовлетворить свое любопытство, я написал простой LKM. Вот, #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> static int...
112 просмотров

Установите регистр XMM на повторяющийся байтовый шаблон (широковещательный постоянный байт)
Я знаю, что мы можем сделать что-то вроде этого, чтобы переместить символ в регистр xmm: movaps xmm1, xword [.__0x20] align 16 .__0x20 db 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 но поскольку это...
266 просмотров
schedule 11.07.2023

Как перемешать Vector128 ‹T› и добавить элементы, а затем правильно извлечь скалярное значение?
Я использую Vector128<byte> в C # для подсчета совпадений из массива байтов с индексом 16. Это часть реализации байтовой версии Микрооптимизация гистограммы с 4 сегментами большого массива или списка с использованием метода из Как...
358 просмотров
schedule 03.12.2022

Как сравнить 2 регистра XMM (SSE) и проверить на равенство, чтобы выйти из цикла?
После использования инструкции по сборке: pcmpeqd xmm2, xmm7 Результат в реестре xmm2 = 00000000 00000000 FFFFFFFF 00000000 Результат правильный. К сожалению, сравнение не устанавливает никаких флагов, которые можно проверить, чтобы выйти из...
42 просмотров
schedule 26.05.2022

Как скопировать X байтов или битов из __m128i в стандартную память
У меня есть цикл, который добавляет int16 из двух массивов вместе через _mm_add_epi16() . Есть маленький массив и большой массив, результаты записываются обратно в большой массив. Встроенная функция может получить менее 8x int16 (128 бит) из...
143 просмотров
schedule 19.04.2023

Сравнение целых чисел без знака SSE4.1 с переполнением
Есть ли способ выполнить сравнение, подобное C ›= (A + B) с инструкциями SSE2/4.1, учитывая, что 16-битное сложение без знака ( _mm_add_epi16() ) может переполниться? Фрагмент кода выглядит так: #define _mm_cmpge_epu16(a, b)...
142 просмотров
schedule 19.04.2022