Публикации по теме 'sse'
Использование SIMD / SSE в Unity3D (.NET 2.0)
Мотивация Прежде всего, что на самом деле означает SIMD? Я определенно не слышал об этом до тех пор, пока не изучал информатику несколько лет назад. Это сокращение от Одна инструкция, несколько данных (SIMD) и связано с архитектурой ЦП и ГП. Другой акроним, часто встречающийся рядом с SIMD, - Streaming SIMD Extensions (SSE) . Вы можете прочитать теоретические подробности об этом в различных публикациях и по всему Интернету, но я постараюсь сформулировать его упрощенно и практично:..
Как эффективно округлить (усечь) двойное без приведения типов
Магическое число 2⁵² вам очень поможет
Языки - это не то, о чем мы здесь заботимся, но для простоты предположим, что мы используем C в следующем контексте.
Вопрос, на который будет отвечать эта статья:
Как округлить (обрезать) двойник без приведения типов?
Вопрос может звучать как-то глупо. Кому нужно заботиться о способе усечения или округления двойника без приведения типов? Приведение типов так легко решить проблему, и для этой цели служат некоторые инструкции по сборке..
SSEGWSW: шлюз событий, отправляемых сервером, сервисными работниками
Привет!
Меня зовут Александр, я работаю архитектором в Тинькофф Бизнесе.
В этой статье я хочу поговорить о том, как преодолеть ограничение браузеров на количество открытых долгоживущих HTTP-соединений в одном домене с помощью сервис-воркера.
При желании смело пропускайте предысторию, описание проблемы, ищите решение. Просто сразу приступаем к результату.
Предыстория
Жил-был чат в Тинькофф Бизнесе, который работал на WebSocket .
Через какое-то время он перестал вписываться в..
Вопросы по теме 'sse'
функциональность glibc и SSE
Я пытаюсь найти информацию о glibc и о том, в какой степени он использует функциональность SSE.
Если он оптимизирован, могу ли я использовать его «из коробки»?
Скажем, я использую один из больших дистрибутивов Linux, я предполагаю, что его glibc...
1850 просмотров
schedule
19.09.2022
Возврат регистра SSE с отключенным SSE
Я в следующей ситуации:
Я пишу код для ядра, которое не поддерживает инструкции SSE.
Мне нужно сделать арифметику с плавающей запятой
Я компилирую для платформы x86_64
Вот пример кода, иллюстрирующий проблему:
int
main(int argc,...
12204 просмотров
schedule
20.02.2023
Как определить, выровнена ли память?
Я новичок в оптимизации кода с помощью инструкций SSE / SSE2, и до сих пор я не очень далеко продвинулся. Насколько мне известно, обычная функция, оптимизированная для SSE, будет выглядеть так:
void sse_func(const float* const ptr, int len){...
47757 просмотров
schedule
03.07.2022
Можно ли векторизовать myNum += a[b[i]] * c[i]; на х86_64?
Какие внутренние функции я бы использовал для векторизации следующего (если это вообще возможно) на x86_64?
double myNum = 0;
for(int i=0;i<n;i++){
myNum += a[b[i]] * c[i]; //b[i] = int, a[b[i]] = double, c[i] = double
}
1173 просмотров
schedule
29.08.2023
Qt, GCC, SSE и выравнивание стека
Я пытаюсь создать программу, скомпилированную с помощью GCC и использующую встроенные функции Qt и SSE. Кажется, что когда Qt вызывает одну из моих функций, выравнивание стека не сохраняется. Вот краткий пример, чтобы проиллюстрировать, что я имею в...
5904 просмотров
schedule
14.09.2022
Можно ли построить хорошую хеш-функцию, взяв за основу CRC32C?
Учитывая, что SSE 4.2 (части Intel Core i7 и i5) включает инструкцию CRC32, кажется разумным исследовать, можно ли создать более быструю хеш-функцию общего назначения. Согласно это только 16 бит CRC32 распределяются равномерно. Итак, какое еще...
9014 просмотров
schedule
17.04.2022
Как включить набор инструкций SSE3 / SSE4.1 в Visual Studio 2008?
Я пытался следить:
Проект> Свойства> Свойства конфигурации> C / C ++> Создание кода> Включить расширенный набор команд
Но у меня были только варианты - SSE или SSE2.
Спасибо.
4164 просмотров
schedule
28.03.2024
Краткий справочник инструкций SSE и MMX с задержками и пропускной способностью
Я пытаюсь оптимизировать некоторые арифметические операции, используя наборы инструкций MMX и SSE со встроенной сборкой. Однако мне не удалось найти хороших ссылок на тайминги и использование этих расширенных наборов инструкций. Не могли бы вы...
4762 просмотров
schedule
19.08.2022
Как использовать SSE как с компилятором Windows, так и с компилятором GCC?
Мне нужно оптимизировать часть кода, используя расширения SSE. Моими целевыми платформами являются Windows и Linux, поэтому я создаю свое приложение, используя компилятор MS (VStudio) и компилятор GCC.
Какой подход существует для привлечения SSE?...
539 просмотров
schedule
20.03.2023
Согласование SSE с классом
Возникла какая-то действительно странная проблема, и как новичок в С++ я не знаю, почему.
struct DeviceSettings
{
public:
....somevariables
DXSize BackbufferSize;
....somemethods
};
struct DXPoint;
typedef DXPoint DXSize;...
1157 просмотров
schedule
06.03.2023
Переворачивающий знак на упакованных поплавках SSE
Я ищу наиболее эффективный метод переворота знака на всех четырех поплавках, упакованных в регистр SSE.
Я не нашел встроенной функции для этого в руководстве по разработке программного обеспечения для архитектуры Intel. Ниже приведены вещи,...
3301 просмотров
schedule
06.06.2023
Программирование SIMD
Я использую расширения SSE, доступные в процессоре Core2Duo (компилятор gcc 4.4.1). Я вижу, что доступно 16 регистров, каждый из которых имеет длину 128 бит. Теперь я могу разместить 4 целочисленных значения в одном регистре и 4 в другом регистре и,...
1563 просмотров
schedule
10.10.2022
Что делает мой компилятор? (оптимизация памяти)
Я компилирую немного кода, используя следующие настройки в VC++2010: /O2 /Ob2 /Oi /Ot
Однако у меня возникли проблемы с пониманием некоторых частей сгенерированной сборки, я задал несколько вопросов в коде в виде комментариев.
Кроме того, какое...
4149 просмотров
schedule
02.05.2024
64-битный встроенный SIMD
Я использую следующее объявление объединения в SSE2.
typedef unsigned long uli;
typedef uli v4si __attribute__ ((vector_size(16)));
typedef union
{
v4si v;
uli data[2];
} uliv;
uliv a, b, c;
Идея состоит в том, чтобы...
1532 просмотров
schedule
13.01.2023
SIMD-код работает медленнее, чем скалярный код
elma и elmc оба unsigned long массивы. Таковы res1 и res2 .
unsigned long simdstore[2];
__m128i *p, simda, simdb, simdc;
p = (__m128i *) simdstore;
for (i = 0; i < _polylen; i++)
{
u1 = (elma[i] >> l) & 15;...
3821 просмотров
schedule
15.03.2024
Использование структуры в качестве векторного типа SSE в gcc?
Возможно ли в GCC использовать структуру или класс в качестве векторного типа для инструкций SSE?
что-то типа:
typedef struct vfloat __attribute__((vector_size(16))) {
float x,y,z,w;
} vfloat;
Вместо канонического:
typedef float...
1034 просмотров
schedule
01.05.2022
Загрузка констант с плавающей запятой в регистры SSE
Я пытаюсь найти эффективный способ загрузки поплавков константы времени компиляции в регистры SSE (2/3). Я пробовал сделать такой простой код,
const __m128 x = { 1.0f, 2.0f, 3.0f, 4.0f };
но это генерирует 4 инструкции movss из памяти!...
10314 просмотров
schedule
12.03.2023
Помогите мне улучшить код SSE2
Я ищу помощь, чтобы улучшить этот код билинейного масштабирования sse2 на процессоре core2.
На моем Atom N270 и i7 этот код примерно в 2 раза быстрее, чем код mmx. Но под процессором core2 он равен только коду mmx.
Код следует
void...
1031 просмотров
schedule
20.04.2023
Данные неправильно выровнены в Visual Studio при запуске в отладчике
Я работаю с SSE некоторое время, и я видел свою долю проблем с выравниванием. Однако это выше моего понимания:
Я получаю различное выравнивание независимо от того, запускаю ли я программу с помощью F5 (отладка) или запускаю ее вне отладчика...
3735 просмотров
schedule
01.07.2023
Советы по оптимизации вычислений с плавающей запятой: решение квадратного уравнения
Я работаю над проблемой гранулярной динамики. Вычислительно затратная часть — это приведенная ниже функция, которая решает квадратное уравнение для обнаружения столкновения двух частиц.
Мне было интересно, можно ли это легко оптимизировать или я...
624 просмотров
schedule
27.07.2023