Мир изменился. Я чувствую это в воде, чувствую это в земле, ощущаю в воздухе.
«Властелин колец», Джон Рональд Руэл Толкин
Рубрика «avx»
Обзор инструкций ARM NEON для тех, кто знаком с MMX-SSE-AVX
2021-03-31 в 7:16, admin, рубрики: avx, AVX2, neon, sse, x86, высокая производительность, обработка изображенийРазновидности 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
?Читать полностью »
Вдвое мощней за те же деньги! 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, и при этом конкурировать с ними по цене.
Читать полностью »
Как я сделал самый быстрый ресайз изображений. Часть 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?
Читать полностью »
Как я сделал самый быстрый ресайз изображений. Часть 2, SIMD
2017-04-19 в 16:13, admin, рубрики: avx, AVX2, C, pillow, pillow-simd, python, sse, SSE4, высокая производительность, обработка изображений, оптимизация, производительность, ресайзЭто продолжение цикла статей о том, как я занимался оптимизацией и получил самый быстрый ресайз на современных x86 процессорах. В каждой статье я рассказываю часть истории, и надеюсь подтолкнуть еще кого-то заняться оптимизацией своего или чужого кода. В предыдущих сериях:
→ Часть 0
→ Часть 1, общие оптимизации
В прошлый раз мы получили ускорение в среднем в 2,5 раза без изменения подхода. В этот раз я покажу, как применять SIMD-подход и получить ускорение еще в 3,5 раза. Конечно, применение SIMD для обработки графики не является ноу-хау, можно даже сказать, что SIMD был придуман для этого. Но на практике очень мало разработчиков используют его даже в задачах обработки изображений. Например, довольно известные и распространенные библиотеки ImageMagick и LibGD написаны без использования SIMD. Отчасти так происходит потому, что SIMD-подход объективно сложнее и не кроссплатформенный, а отчасти потому, что по нему мало информации. Довольно просто найти азы, но мало детальных материалов и разбора реальных задач. От этого на Stack Overflow очень много вопросов буквально о каждой мелочи: как загрузить данные, как распаковать, запаковать. Видно, что всем приходится набивать шишки самостоятельно.
Как я сделал самый быстрый ресайз изображений. Часть 0
2017-02-14 в 8:17, admin, рубрики: avx, pillow, pillow-simd, python, simd, sse, uploadcare, высокая производительность, обработка изображений, оптимизация, производительность, ресайзЗдравствуйте, меня зовут Саша, я написал самый быстрый ресайз изображений для современных х86 процессоров. Я так утверждаю, поскольку все остальные библиотеки, которые я сумел найти и протестировать, оказались медленнее. Я занялся этой задачей, когда работал над оптимизацией ресайза картинок на лету в Uploadcare. Мы решили открыть код и в результате появился проект Pillow-SIMD. Любой желающий с легкостью может использовать его в приложении на языке Python.
Любой код выполняется на конкретном железе и хорошей оптимизации можно добиться, только понимая его архитектуру. Всего я планирую выпустить 4 или 5 статей, в которых расскажу как применять знание архитектуры железа для оптимизации реальной задачи. Своим примером я хочу побудить вас оптимизировать другие прикладные задачи. Первые две статьи выйдут в течение недели, остальные — по мере готовности.