Рубрика «оптимизация» - 3

Ещё в мае 2022 года я переориентировал пару команд в Google на разработку полностью гомоморфного шифрования (вот объявление об этом в рассылке). С тех пор я участвовал в работе над многими проектами в этой области, в частности, руководил поддержкой на github.com/google/fully-homomorphic-encryption – это опенсорсный ПГШ-компилятор для C++. В этой статье даётся вводная информация о том, как при помощи этого инструмента компилировать программы с расчётом на ПГШ. Также пробежимся по тому, из чего этот компилятор состоит.

Читать полностью »

К нам в цех заезжает поезд с маленькими-маленькими ковшами стали по 80–120 тонн. Доменное производство, где делают чугун, — это предыдущий этап работ. А у нас из чугуна надо сделать сталь. Соответственно цеха соединены железной дорогой, и расплавленный чугун приезжает к нам. В поезде — сразу 10-11 ковшей. Проблема в том, что наши ковши — по 300 тонн, и нужно с помощью трёх мостовых кранов (они перемещаются где-то под потолком цеха) собрать из этого поезда оптимальные разливки.

Раньше около 60 % ковшей по 300 тонн составлялось из четырёх маленьких ковшей, причём четвёртый использовался только частично. То есть где-то получалось скомбинировать что-то вроде 90 + 110 + 98, и это был хороший годный ковш на 298 тонн. А где-то это было 90 + 82 + 85 + 43 тонны из следующего ковша, которому не повезло.

Казалось бы, это задачка, которая решается на школьном уроке информатики за 15 минут, но есть пара нюансов с исходными данными:

Перелив ковша - 1
Небольшие сложности с получением данных

Перелив ковша - 2

Плюс ещё пара особенностей производства. Так что сейчас я расскажу, как непросто внедряются в реальный мир даже такие простые модели.
Читать полностью »

В одной конторе соискателю на позицию Senior C# developer выдали тестовое задание: отсортировать файл со строками определенного формата.

Требования такие:

  • Формат строки: число, точка, пробел, далее любые символы до конца строки.

  • Порядок сортировки — сначала сортируем текстовой части строки, потом по числу если текстовые части совпадают.

  • Кодировка — UTF-8.

  • Размер файла — 100гб - гарантированно больше объема ОП.

  • Должно отработать за 1 час на машине проверяющего, вряд ли там будет супер-быстрый SSD и огромное количество оперативной памяти.

Читать полностью »

Js, трюки, наблюдения, бенчмарки и как Лиса уничтожает Хром. Я протестировал всё, что вам было лень - 1

Картинка, конечно, стронгли анрилейтед

Разные трюки я тестировал на Google Chrome 107.0.5304.107 и Mozilla Firefox 107.0 на Windows 10.

Чтобы результаты всегда были железно воспроизводимыми, я отключил все С-State’ы, ядра зафиксировал на 5 ГГц.

У меня 9900К, это Coffee Lake c AVX256, какие оптимизации применит Jit для вашего процессора — я не знаю, результат на вашем компьютере может отличаться от моего, в т.ч. из-за микроархитектуры процессора.

Скорость парсинга кода тоже входит в бенчмарк, поэтому браузер с быстрым парсером будет впереди.
Читать полностью »

К нам из цеха пришли инженеры и попросили сделать ИТ-систему.

Если вы знакомы со спецификой «суровых производственных мужчин», то знаете, что от них это звучит примерно так же, как «тыквенный смузи и веганский стейк, пожалуйста», — ещё два года назад мы о таком проявлении доверия к ИТ со стороны производства даже мечтать не могли. А тут оказалось, что им нужен инструмент, чтобы контролировать износ сегментов УНРС (установки непрерывной разливки стали), потому что это не только убирает рутину, напрямую влияет на качество продукта — слитков стали, но и снижает потенциальный риск прорыва сегмента с расплавом.

Итак, знакомьтесь, вот один из ручьёв УНРС:

Всё меняется, когда твой софт повышает безопасность производства - 1

Сверху на УНРС приходит ковш, снизу выпадает огромный слиток стали — сляб. Если вы думаете, что достаточно просто залить сталь из ковша в формочку, то нет. Надо, чтобы всё это равномерно остыло, иначе внутри будут раковины, трещины и другие неприятности. Поэтому процесс такой: сверху буфер, бассейн-накопитель для жидкой стали, дальше каскад сегментов-обработчиков. Сталь проливается вниз, а каждый сегмент охлаждает её. В бассейн подаются ковши с расплавом, которые его наполняют.

Самое опасное в УНРС — не уследить за износом какого-то одного из сегментов, по которому идёт расплав, постепенно превращаясь в сляб. И оказалось, что можно свести такую вероятность к нулю, если избавиться от кучи отдельных бумажных документов и автоматизировать контроль.

Технологи хотели от нас предельно простого работающего решения, чтобы они в каждый момент очень чётко представляли себе статус каждого узла машины. Никакой математики. Никакого дата-майнинга. Никаких нейросетей. Никаких сложных научных исследований.

Сейчас покажу результат.
Читать полностью »

Всех с Новым Годом! Меня зовут Григорий Дядиченко, и я технический продюсер. Размер билда. Сегодня хотелось бы поговорить о нём и составить некий чек-лист, который полезно проходить перед выкладкой проекта. Если вам интересно, как можно инструментами Unity уменьшить вес сборки — добро пожаловать под кат!

Как сделать билд минимального размера в Unity? - 1

Читать полностью »

Бывает, чтобы заглянуть в подшипник, нужно разобрать полстанка, и всё это — ради профилактики дефекта. Зачастую бывает, что до того, как что-то реально поломается, узел начинает издавать определённый звук. Замечали, что опытные водители на любую нетипичную вибрацию реагируют чутко и с подозрением? Точно так же и сотрудники наших производств знают, как должен «звучать» станок. Ещё из далёкого прошлого нам достался вполне рабочий метод преобразования ультразвука в слышимый звук с помощью доски: бывает, рабочие со стажем лет так в 30 прикладывают обычный деревянный брусок на полметра к узлу и внимательно вслушиваются.

Где-то год назад на производстве ВИЗ-Сталь мы решили проверить, можно ли с помощью поиска ультразвуковых аномалий определить, что происходит с агрегатом в тот момент, когда он ещё только собирается начать ломаться.

Решение выглядит вот так:

Как мы ищем дефекты оборудования ультразвуковыми микрофонами - 1

На фото вы видите микрофонную решётку с камерой в середине, способную построить акустическую карту пространства. Решётка подключается к ноутбуку, где уже проводится уже анализ звука.

Как мы ищем дефекты оборудования ультразвуковыми микрофонами - 2

Результаты получились очень интересные.
Читать полностью »

Веб-сайты уже давно перестали напоминать простые листы с текстовой информацией. Сейчас это полнофункциональные приложения, порой с очень сложной и тяжелой логикой. А чем больше логики и чем сложнее она становится, тем сильнее сайт начинает замедляться, что, естественно, не нравится пользователям. Сейчас это решают разными способами, например с помощью ленивой подгрузки, а более рисковые пробуют применять микрофронты или виджетные системы. Однако есть еще один вектор, на который пока никто не обращает внимания: использование многопоточности в браузере.

Читать полностью »

С детских лет меня очень интересовали всякие канцелярские и бюрократические вещицы. Я мог часами простаивать у прилавков магазина канцтоваров, глядя на витрины с разнообразными притягательными и волшебными предметами. Особое уважение мне внушали солидные блокноты большого формата, ежедневники, календари-планеры и другие подобные издания, в которых нужно было что-то заполнять и записывать. Помню, что особенно меня поражала страница, которая называлась «Дела на год». Я всё думал: как же можно что-то планировать на целый год вперёд?

Читать полностью »

Выжимаем все соки: PGO Оптимизация ядра Linux - 1


Сложность вычислительных задач и систем растёт с каждым днём. Для бизнеса ускорение кода даже на пару процентов даёт улучшение производительности, заметное снижение издержек и уменьшение задержки(latency). В первую очередь это касается мобильных и встраиваемых систем, высоконагруженных серверов, научных вычислений и 3D-графики. Так был разработан относительно перспективный и молодой метод оптимизации — Profile-Guided Optimization, далее просто PGO-оптимизация. Данный метод эффективно используют такие известные компании, как Google, Mozilla Foundation, Intel, Oracle, IBM и другие. Практически ни один современный веб-браузер не обходится без PGO-оптимизации.

Не так давно компанией Google был предложен набор патчей, включающий PGO-оптимизацию в ядре Linux. Мною был протестирован этот набор патчей в работе и доработан. Мне хотелось бы рассказать об этом методе оптимизации ядра Linux, о том, с какими трудностями можно столкнуться, и как их решить.

Если вас заинтересовала эта тема, вам интересно развитие технологий и тренды крупных компаний, то добро пожаловать под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js