Вопросы по теме 'sse'
Странная внутренняя оптимизация VC++ SSE
Я выполняю разрозненное чтение 8-битных данных из файла (де-чередование 64-канального волнового файла). Затем я объединяю их в единый поток байтов. Проблема, с которой я сталкиваюсь, связана с моей реконструкцией данных для записи.
В основном я...
3188 просмотров
schedule
08.07.2022
транспонировать для 8 регистров 16-битных элементов на SSE2 / SSSE3
(Я новичок в SSE / asm, извиняюсь, если это очевидно или избыточно)
Есть ли лучший способ транспонировать 8 регистров SSE, содержащих 16-битные значения, чем выполнение 24 unpck [lh] ps и 8/16 + перемешивания с использованием 8 дополнительных...
3544 просмотров
schedule
01.07.2023
В чем разница между логическими встроенными функциями SSE?
Есть ли разница между логическими встроенными функциями SSE для разных типов? Например, если мы возьмем операцию ИЛИ, есть три встроенных функции: _mm_or_ps, _mm_or_pd и _mm_or_si128, все из которых делают одно и то же: вычисляют побитовое ИЛИ...
4215 просмотров
schedule
02.01.2023
Оптимизация SSE SIMD для цикла
У меня есть код в цикле
for(int i = 0; i < n; i++)
{
u[i] = c * u[i] + s * b[i];
}
Итак, u и b - векторы одинаковой длины, а c и s - скаляры. Подходит ли этот код для векторизации для использования с SSE для ускорения?
ОБНОВЛЕНИЕ...
8612 просмотров
schedule
21.02.2022
Головоломка по оптимизации SIMD
Я хочу оптимизировать следующую функцию с помощью SIMD (SSE2 и т. д.):
int64_t fun(int64_t N, int size, int* p)
{
int64_t sum = 0;
for(int i=1; i<size; i++)
sum += (N/i)*p[i];
return sum;
}
Это похоже на в высшей степени...
1188 просмотров
schedule
20.08.2022
Как рассчитать одно-векторное точечное произведение с использованием встроенных функций SSE в C
Я пытаюсь умножить два вектора вместе, где каждый элемент одного вектора умножается на элемент с тем же индексом в другом векторе. Затем я хочу просуммировать все элементы результирующего вектора, чтобы получить одно число. Например, расчет будет...
25606 просмотров
schedule
12.03.2024
SSE: преобразовать __m128 и __m128i в два __m128d
Два связанных вопроса.
Это то, что мой код должен делать с довольно большим объемом данных. Это делается внутри внутренних циклов, и производительность важна.
Преобразуйте массив __int32 в двойные (или преобразуйте __m128i в два __m128d)....
5955 просмотров
schedule
29.05.2024
SSE лучший способ установить регистр на 0.0 и 1.0?
Я занимаюсь математикой sse vector3.
Обычно я устанавливаю 4-ю цифру своего вектора на 1.0f, так как это делает большую часть моей математической работы, но иногда мне нужно установить ее на 0.0f.
Итак, я хочу изменить что-то вроде: (32.4f,...
3757 просмотров
schedule
03.10.2022
Выравнивание памяти G ++ SSE в стеке
Я пытаюсь переписать трассировщик лучей, используя Streaming SIMD Extensions. Мой исходный трассировщик лучей использовал встроенную сборку и инструкции movups для загрузки данных в регистры xmm. Я читал, что встроенные функции компилятора...
4753 просмотров
schedule
12.02.2022
Инструкция SSE для клонирования-расширения регистра XMM
Существует ли инструкция SSE (до версии 4.2), которая автоматически заполняет четыре регистра XMM значением четырех слов другого регистра XMM?
Пример: выполнение инструкции для слова ABCD заполнит четыре регистра XMM: AAAA , BBBB , CCCC и...
559 просмотров
schedule
04.02.2023
Встроенная сборка GCC - переместить float в XMM0 перед вызовом
В настоящее время я пытаюсь вызвать общую функцию C из встроенной сборки GCC (я знаю, плохая идея, но мне сегодня скучно ...).
Моя операционная система - Mac OS X, 64 бита, поэтому соглашение о вызовах - System V, то есть аргументы 0-6 передаются...
3210 просмотров
schedule
10.03.2023
xmmintrin.h против векторных расширений gcc
Какой метод я должен предпочесть для написания SIMD-инструкций?
Методы mm * из *mmintrin.h кажутся более переносимыми между компиляторами.
Но gcc векторные расширения , кажется, производит намного более простой код и поддерживает больше...
4051 просмотров
schedule
15.07.2022
Как выровнять стек по границе 32 байта в GCC?
Я использую сборку MinGW64 на основе GCC 4.6.1 для 64-битной Windows. Я играю с новыми инструкциями Intel AVX. Мои аргументы командной строки -march=corei7-avx -mtune=corei7-avx -mavx .
Но я начал сталкиваться с ошибками сегментации при...
5325 просмотров
schedule
04.12.2022
SSE, где я могу найти руководство по переводу с SSE на ассемблер
Мне нужно кое-что запрограммировать на ассемблере SSE2. Все, что я вижу, это встроенные функции.
Я тщетно искал таблицу перевода встроенных функций в ассемблер. Поскольку я не хочу играть в угадайку, может кто-нибудь дать мне ссылку, чтобы...
268 просмотров
schedule
14.03.2022
Ошибка ссылки при использовании встроенной математической библиотеки в сочетании с предварительно скомпилированным заголовочным файлом
Сегодня я столкнулся с довольно странной проблемой. У меня есть математическая библиотека, оптимизированная для SSE, поэтому почти весь функционал объявлен как встроенный. Для упрощения я объясню проблему только с помощью одного класса, Vector3:...
301 просмотров
schedule
02.04.2022
Как заставить компилятор ICC генерировать инструкции SSE во внутреннем цикле?
У меня есть внутренний цикл, такой как этот
for(i=0 ;i<n;i++){
x[0] += A[i] * z[0];
x[1] += A[i] * z[1];
x[2] += A[i] * z[2];
x[3] += A[i] * z[3];
}
Внутренние 4 инструкции могут быть легко преобразованы компилятором в инструкции SSE....
560 просмотров
schedule
07.06.2023
Ускорение матрицы 5x5 с плавающей запятой * векторное умножение с помощью SSE
Мне нужно запустить умножение матрицы на вектор 240000 раз в секунду. Матрица 5x5 всегда одна и та же, а вектор меняется на каждой итерации. Тип данных float . Я думал об использовании некоторых инструкций SSE (или подобных).
Меня беспокоит,...
9641 просмотров
schedule
21.10.2022
Быстрый способ копирования памяти с переводом - ARGB в BGR
Обзор
У меня есть буфер изображений, который мне нужно преобразовать в другой формат. Буфер исходного изображения состоит из четырех каналов, 8 бит на канал: альфа, красный, зеленый и синий. Целевой буфер состоит из трех каналов по 8 бит на канал:...
9152 просмотров
schedule
24.04.2022
Как сравнить два вектора с помощью SIMD и получить один логический результат?
У меня есть два вектора по 4 целых числа в каждом, и я хотел бы использовать команду SIMD для их сравнения (скажем, сгенерировать вектор результатов, где каждая запись равна 0 или 1 в зависимости от результата сравнения).
Затем я хотел бы сравнить...
9363 просмотров
schedule
22.06.2023
Написание фрагмента кода C таким образом, чтобы компилятор использовал инструкцию SSE4.1 для генерации ассемблерного кода.
Я хочу написать некоторый код C, чтобы gcc с помощью флага -msse4.1 мог его оптимизировать. В основном я хочу проверить, использует ли компилятор инструкции SSE4.1. Существует множество инструкций SSE4.1 (...
706 просмотров
schedule
05.03.2023