Мир изменился. Я чувствую это в воде, чувствую это в земле, ощущаю в воздухе.
«Властелин колец», Джон Рональд Руэл Толкин
Рубрика «sse»
Обзор инструкций ARM NEON для тех, кто знаком с MMX-SSE-AVX
2021-03-31 в 7:16, admin, рубрики: avx, AVX2, neon, sse, x86, высокая производительность, обработка изображенийSSEGWSW: Server-Sent Events Gateway by Service Workers
2019-10-16 в 10:01, admin, рубрики: Google Chrome, http, javascript, server-sent events, service worker, sse, stream api, WebSocket, Блог компании Tinkoff.ruПривет!
Меня зовут Саша и я работаю архитектором в Тинькофф Бизнес.
В этой статье хочу рассказать о том, как преодолеть ограничение браузеров на количество открытых долгоживущих HTTP-соединений в рамках одного домена при помощи service worker.
Если хотите — смело пропускайте предысторию, описание проблемы, поиск решения и сразу переходите к результату.
Разновидности SIMD
2019-02-24 в 17:05, admin, рубрики: avx, AVX2, meshoptimizer, simd, sse, параллельное программирование, Проектирование и рефакторинг, Работа с векторной графикойВо время разработки meshoptimizer частенько возникает вопрос: «А может этому алгоритму использовать SIMD?»
Библиотека ориентирована на производительность, но SIMD не всегда обеспечивает значительные преимущества по скорости. К сожалению, SIMD может сделать код менее переносимым и менее ремонтопригодным. Поэтому в каждом конкретном случае приходится искать компромисс. Когда первостепенное значение имеет производительность, приходится разрабатывать и поддерживать отдельные реализации SIMD для наборов инструкций SSE и NEON. В других случаях нужно понять, каков эффект от применения SIMD. Сегодня мы попытаемся ускорить меш-рационализатор (sloppy mesh simplifier) — новый алгоритм, недавно добавленный в библиотеку — используя наборы инструкций SSEn/AVXn.
Читать полностью »
Ускоряем неускоряемое или знакомимся с SIMD, часть 2 — AVX
2019-02-18 в 15:21, admin, рубрики: avx, AVX2, C, c++, simd, sse, высокая производительность, ПроцессорыПредыдущая часть вызвала бурную дискуссию, в ходе которой выяснилось, что AVX/AVX2 на самом деле есть в десктопных CPU, нет только AVX512. Поэтому продолжаем знакомиться с SIMD, но уже с современной его частью — AVX. А так же разберём некоторые комментарии:
- медленнее ли
_mm256_load_si256
, чем прямое обращение к памяти? - влияет ли на скорость использование AVX команд над SSE регистрами?
- действительно ли так плохо использовать
_popcnt
?Читать полностью »
Ускоряем неускоряемое или знакомимся с SIMD
2019-02-17 в 9:17, admin, рубрики: C, c++, simd, sse, высокая производительность, ПроцессорыЕсть класс задач, которые нельзя ускорить за счёт оптимизации алгоритмов, а ускорить надо. В этой практически тупиковой ситуации к нам на помощь приходят разработчики процессоров, которые сделали команды, позволяющие выполнять операции на большим количеством данных за одну операцию. В случае x86 процессоров это инструкции сделанные в расширениях MMX, SSE, SSE2, SSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, AVX512.
В качестве «подопытного кролика» я взял следующую задачу:
Есть неупорядоченный массив arr с числами типа uint16_t. Необходимо найти количество вхождений числа v в массив arr.
Классическое решение, работающее за линейное время выглядит так:
int64_t cnt = 0;
for (int i = 0; i < ARR_SIZE; ++i)
if (arr[i] == v)
++cnt;
В таком виде бенчмарк показывает следующие результаты:
------------------------------------------------------------
Benchmark Time CPU Iterations
------------------------------------------------------------
BM_Count 2084 ns 2084 ns 333079
Под катом я покажу как его ускорить в 5+ раз.
Читать полностью »
Как у меня сломался String.getBytes(UTF_8) и что я с этим делал
2018-06-19 в 15:23, admin, рубрики: java, sse, детектив, Процессоры(спойлер) дебажил, дизасемблил и пришел к выводу что проблема в SSE инструкциях
Привет!
Все началось с того что я писал Load тест на Java для внутреннего компонента системы над которой сейчас работаю. Тест создавал несколько потоков и пытался что-то выполнить очень много раз. В процессе выполнения иногда появлялись java.lang.ArrayIndexOutOfBoundsException: 0 ошибки на строчке очень похожей на эту:
"test".getBytes(StandardCharsets.UTF_8)
Вдвое мощней за те же деньги! Intel Xeon E5 против E3-серии
2018-03-16 в 5:33, admin, рубрики: 1230v6, 1650v2, 2650v2, 2680v2, 3dmark, 7-zip, avx, cinebench, ddr3, ddr4, EX120.3-008LF, EX127.3-008LH, EX140.3-008LH, intel, MBD-X11SSH-F, MBD-X9SRL-F, PerformanceTest, sse, STSS Flagman, stss.ru, xeon, xeon e3, xeon e5, Блог компании STSS, бюджетный сервер, высокая производительность, купить сервер, производительность процессоров, процессоры intel, сервер, Серверная оптимизация, Системы Флагман, сравнение производительности, Тестирование IT-систем, тестирование процессоровНе так давно мы публиковали статью Сравнение производительности процессоров Intel разных поколений, в которой представлены результаты тестирования 8-ядерных процессоров Intel Xeon E5. С тех пор, по акции, было продано несколько сотен серверов на базе процессоров V1/V2, которые стали достойным аналогом E5-2620V4/2630V3 в таких задачах как: сервер баз данных, терминальный сервер, видеонаблюдение и пр. Но, к сожалению, модельный ряд был ограничен только 2-процессорными платформами, что накладывало дополнительную финансовую нагрузку при использовании 1-процессорных конфигураций. Большое количество запросов побудило нас разработать бюджетную модель 1-процессорного сервера/рабочей станции, которая должна существенно выигрывать по производительности у платформ на базе Xeon E3/Core i7, и при этом конкурировать с ними по цене.
Читать полностью »
Как работает JS: WebSocket и HTTP-2+SSE. Что выбрать?
2017-11-14 в 10:49, admin, рубрики: http, javascript, sse, WebSocket, Блог компании RUVDS.com, разработка, Разработка веб-сайтовПеред вами — перевод пятого материала из серии, посвящённой особенностям JS-разработки. В предыдущих статьях мы рассматривали основные элементы экосистемы JavaScript, возможностями которых пользуются разработчики серверного и клиентского кода. В этих материалах, после изложения основ тех или иных аспектов JS, даются рекомендации по их использованию. Автор статьи говорит, что эти принципы применяются в ходе разработки приложения SessionStack. Современный пользователь библиотек и фреймворков может выбирать из множества возможностей, поэтому любому проекту, для того, чтобы достойно смотреться в конкурентной борьбе, приходится выжимать из технологий, на которых он построен, всё, что можно.
В этот раз мы поговорим о коммуникационных протоколах, сопоставим и обсудим их особенности и составные части. Тут мы займёмся технологиями WebSocket и HTTP/2, в частности, поговорим о безопасности и поделимся советами, касающимися выбора подходящих протоколов в различных ситуациях.
Читать полностью »
Как я сделал самый быстрый ресайз изображений. Часть 3, числа с фиксированной точкой
2017-08-03 в 11:28, admin, рубрики: avx, AVX2, C, pillow, pillow-simd, python, sse, SSE4, высокая производительность, обработка изображений, оптимизация, производительность, ресайзЯ продолжаю подробно рассказывать о приемах оптимизации, позволивших мне написать самый быстрый ресайз изображений на современных x86 процессорах. На этот раз речь пойдет о преобразовании вычислений с плавающей точкой в вычисления с целыми числами. Сперва я расскажу немного теории, как это работает. Затем вернусь к реальному коду, в том числе SIMD-версии.
В предыдущих частях:
Быстрое удаление пробелов из строк на процессорах ARM
2017-07-09 в 15:33, admin, рубрики: avx, movemask, neon, open source, SS4, sse, x64, x86, Алгоритмы, высокая производительность, ПрограммированиеПредположим, что я дал вам относительно длинную строку, а вы хотите удалить из неё все пробелы. В ASCII мы можем определить пробелы как знак пробела (‘ ’) и знаки окончания строки (‘r’ и ‘n’). Меня больше всего интересуют вопросы алгоритма и производительности, так что мы можем упростить задачу и удалить все байты со значениями меньшими либо равными 32.
В предыдущией статье, где я задавал вопрос об удалении пробелов на скорость, лучшим ответом было использование векторизации с помощью 128-битных регистров (SSE4). Оно оказалось в 5-10 раз быстрее подхода в лоб.
Очень удобно, что во всех процессорах имеются 128-битные векторные регистры, также как в процессорах x64. Неужели процессоры ARM могут работать настолько же быстро, как процессоры x64?
Читать полностью »