Публикации по теме '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 просмотров

Советы по оптимизации вычислений с плавающей запятой: решение квадратного уравнения
Я работаю над проблемой гранулярной динамики. Вычислительно затратная часть — это приведенная ниже функция, которая решает квадратное уравнение для обнаружения столкновения двух частиц. Мне было интересно, можно ли это легко оптимизировать или я...
624 просмотров
schedule 27.07.2023