Вопросы по теме 'sse2'
Цикл оптимизации с несколькими инструкциями (SSE2, SSE4) с TBB
У меня есть простой алгоритм обработки изображений. Вкратце, изображение (среднее) в формате с плавающей запятой вычитается из 8-битного изображения, а затем результат сохраняется в изображение с плавающей запятой (назначение).
эта функция в...
1525 просмотров
schedule
12.04.2023
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 просмотров
schedule
21.04.2024
Де-перемежение канала изображения в 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 просмотров
schedule
10.11.2023
Установите регистр 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