C++ Zero Cost
Cost Conf 2023;
Москва и Белград;
29/07; Конференция по прикладному С++

YfD */

Запись трансляции

C++ Zero Cost Conf —
конференция Яндекса по C++

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

Воркшопы 26 и 27 июля

Мы хотим дать разработчикам как можно больше практических знаний.
Поэтому, помимо конференции, устраиваем несколько воркшопов — мастер‑классов по работе с С++.

*Принять участие смогут все пользователи, зарегистрированные на С++ Conf

Запускаем ML-модели с помощью C++
26 июля, 19:00 МСК

19:00 МСК 26 июля
Павел Филонов Независимый консультант
ex-Kaspersky, ex-Positive Technologies

Смотреть запись Видеозапись скоро появится

При разработке продуктов, которые содержат функционал на основе машинного обучения, выделяют 2 важных этапа: обучение модели и её применение.

При применении модели такой однозначности уже нет и может возникнуть необходимость проинтегрировать готовую ML-модель в код продукта, написанный на C++.

Мы возьмём примеры из доклада «Обучаем на Python, применяем на C++» и создадим на их основе работающие и протестированные модули на C++.

  •  Основные идеи и термины машинного обучения
  •  Простейшая модель линейной регрессии
  •  Реализация предсказаний модели на C++
  •  Подходы к тестированию и сверке метрик
  •  Библиотеки градиентного бустинга CatBoost
  •  Кодогенерация или подключение C API
  •  Пакетная обработка и вопросы производительности
  •  Нейросетевые модели и векторизация
  •  Реализация нейронной сети на C++ через матричные операции
  •  Библиотека TensorFlow (C API) и TensorFlow Lite (C++ API)
  •  Конвертация моделей и библиотека ONNX
  •  Выводы и дальнейшие шаги
  •  Установить Docker
  •  Заранее скачать образ со всеми установленными зависимостями
    docker pull sdukshis/cppml
  •  Научиться монтировать директорию с исходными кодами внутрь контейнера и запускать сборки через CMake
    cd <hello, world>
    docker run --rm $(pwd):/usr/src/app -ti sdukshis/cppml
    cmake -B build
    cmake --build build

en Deduction guides: Impossible is possible.
27 July, 19:00 MSK

19:00 MSK 27 July
Ruslan Arutyunyan Intel, Senior Middleware Development Engineer

Watch recording Видеозапись скоро появится

The presentation will provide the practical example of writing Deductions guides for the class that takes the Callable object as an argument.

We are supposed to go through the steps I’ve made to learn how these tasks can be solved. I will demonstrate how to fetch function signature from the object type and then use it as a developer likes, how to leverage the additional information about the required signature of a function, and how to make more convenient user interface based on above.

The presentation is going to tell the quite funny story of how impossible becomes possible just in two days.

The attendees are expected to know what is Class Template Argument Deduction (CTAD) and basics about how to write the Deduction Guides.

Программа

Перерыв

13:50

Не с первого раза: упрощаем код С++ с помощью DSL

Смотреть

14:40
Илья Шишков Яндекс Еда, старший разработчик

Поделится опытом решения реальной задачи в одном из сервисов бэкенда Яндекс Еды. Задача состоит в том, что надо вычислять длительности отдельных стадий заказа в Еде: попадания курьера в ресторан, приготовления, доставки готового блюда и т. д. Помимо расчёта самого значения, надо сохранять в лог формулу, по которой оно было рассчитано, а также значение всех переменных в этой формуле. Это нужно для дальнейшей аналитики и отладки. Изначально это было запрограммировано «в лоб»: был отдельный код расчёта значения и отдельный код формирования текстового представления формулы и сохранения значений переменных. У такого кода масса недостатков: его трудно понимать и менять. Была поставлена задача сделать так, чтобы достаточно было написать формулу, и всё необходимое формировалось само.

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

Смотреть

Концепция неопределённого поведения

Смотреть

15:30
Роман Русяев Team Lead компиляторного направления

Доклад продемонстрирует мотивацию введения неопределённого поведения в языках С и С++. На конкретных примерах разберём, зачем то или иное поведение регламентировано стандартом языка как неопределённое. Как известно, одной из главных мотиваций неопределённого поведения является эффективная кодогенерация компилятором, которая включает выполнение цикловых оптимизаций, использование информации о расположении объектов в памяти и т. д. Будет продемонстрирована необходимость введения правил алиасинга типов и последствия их нарушения программистом, показаны правила переполнения знаковых и беззнаковых индуктивных переменных в цикле, sequence points, порядок выполнения вычислений и многое другое. После доклада слушатели получат фундаментальное понимание необходимости понятия неопределённого поведения.

Смотреть

Перерыв

16:20

Закрытие

18:50

Афтепати

19:00

Акторная система YDB: история оптимизаций, позволивших обогнать конкурентов

Смотреть

12:00
Владислав Кузнецов Nebius (YDB), Senior Software Engineer

YDB уже почти 10 лет использует и развивает собственную реализацию акторной системы на C++. За это время на реализацию посмотрели с разных углов и почти через все призмы. Но полгода назад было решено сравнить YDB с конкурентами — CockroachDB и YugabyteDB — и снова было найдено много интересного. Команда смотрела на бенчмарки, YCSB-бенчмарк, FlameGraph под нагрузкой. Ребята нашли самые затратные места CPU, экспериментировали с кодом, оптимизировали акторную систему и работу с ней. Стоит упомянуть, что заметный результат дала также оптимизация работы с protobuf, пробовали thinLTO и PGO. В итоге итеративно пришли к тому, что в тесте YCSB — это самая быстрая распределённая база данных SQL. В докладе основной рассказ будет про акторную систему: от общего обзора до интересных и неочевидных оптимизаций, которые дали результаты, а также про сам процесс поиска проблем производительности.

Статья с результатами YCSB бенчмарка
Medium
Хабр

Смотреть

Перерыв

12:50

Перерыв

15:20

Парсим числа через SIMD

Смотреть

17:00
Сергей Слотин Лектор, Tinkoff Education, ex‑Yandex

В современных CPU есть один мощный, но глубоко недооценённый механизм — SIMD (single instruction, multiple data). Это такие специальные инструкции, которые могут за раз применить одну и ту же операцию к целому блоку данных размером 16, 32 или 64 байт и ускорить однопоточную программу в соответствующее число раз. Как обычная многопоточность, но с важным ограничением, что применяемая операция должна быть везде одна и та же. Из-за этой особенности использовать SIMD для нетривиальных задач сильно сложнее и требует гораздо более творческого подхода.

В докладе мы углубимся в нюансы SIMD-программирования, решая задачу парсинга чисел (в очень упрощённом виде: считать из stdin последовательность разделённых пробелами неотрицательных интов). Обсудим реализации из стандартной библиотеки и почему они тормозят, напишем свою с нуля и будем итеративно оптимизировать её с помощью SIMD, придя в конце к алгоритму, работающему в 50–100 раз быстрее scanf(). Также обсудим, как, не теряя производительности, расширить этот подход на более общий случай и как подобные техники используются в реальных парсерах вроде simdjson.

Смотреть

Закрытие

17:50

Афтепати

18:00

Антон Полухин

Яндекс Go, руководитель группы разработки общих компонент

Представитель России в Международной рабочей группе по стандартизации C++ (WG21 ISO). Автор многих принятых предложений к стандарту языка C++.

Председатель Российской рабочей группы по стандартизации С++. Разрабатывает и поддерживает стандартную библиотеку GCC, библиотеки Boost. Aвтор Boost-библиотек PFR, TypeIndex, DLL, StackTrace и активный maintainer Any, Conversion, LexicalCast, Variant.

Автор книги Boost C++ Application Development Cookbook.

Андрей Аксёнов

Авито/Sphinx

Программирует программы, командует командами, докладывает доклады. Работает в Авито, присматривает за инфраструктурой поиска, пилит поисковой движок Sphinx. А так всякое бывало.

Павел Филонов

Независимый консультант ex-Kaspersky, ex-Positive Technologies

Участвовал в разработке таких продуктов, как MaxPatrol SIEM, Kaspersky MLAD, MDR в качестве разработчика C++ и Data Scientist. Преподаватель курсов по C++ и MLOps в OTUS.

Ruslan Arutyunyan

Intel, Senior Middleware Development Engineer

Ruslan is a senior middleware development engineer who has been working in a team specialized in libraries development for concurrency and parallelism. He was a technical leader of two libraries used for autonomous driving. Currently, Ruslan has been working on various Intel products, with main focus on oneDPL.

He is also a member of the C++ standardization working group with a focus on the C++ standard library and parallelism, and with several accepted proposals.

Юлия Головчанская

Playrix, Programming Team Lead

Разработчик C++ с опытом в области Computer Vision и GameDev. Участвовала в разработке ПО для 3D-реконструкции городов, контроля качества производства на заводах, алгоритмов анализа дорожной обстановки для систем контроля ПДД. Преподавала практику С++ студентам НИУ ВШЭ в Санкт-Петербурге. Сейчас тимлид технической команды в GameDev, специализирующейся на разработке фич.

Илья Шишков

Яндекс Еда, старший разработчик

Работает разработчиком С++ в Яндексе 10 лет. Имеет опыт в высоконагруженном бэкенде, приложениях, а также в создании онлайн-курсов.

Создал онлайн-специализацию по С++ «Пояса по С++», а также онлайн-курс «Алгоритмический фундамент программиста».

Докладчик различных конференций:
C++ Russia, SECR, KnowledgeConf. Ведёт телеграм-канал «Алгоритмический фундамент».

Сергей Фёдоров

Yango Deli Tech, руководитель разработки складских роботов

Пишет на C++ с 1999 года. Делал разное: от автоматизации хлебозаводов и крематориев до разработки банковского и биржевого ПО и геймдева. Сейчас — руководитель разработки складских роботов Yango. Любит open source и головоломные задачи.

Александр Кирсанов

ВКонтакте, руководитель команды KPHP

Занимается разработкой компилятора KPHP внутри ВКонтакте, а также ряда других опенсорс-проектов вокруг языков и тулинга. Часто выступает на конференциях по разным направлениям и темам, ведёт студенческие образовательные проекты и считает, что тимлид обязан писать больше всех кода.

Роман Русяев

Team Lead компиляторного направления

Разработчик компиляторов для различных аппаратных архитектур.

Владислав Кузнецов

Nebius (YDB), Senior Software Engineer

6 лет в Яндексе — 6 лет в YDB. Росли и развивались вместе, участвовал в разработке storage-слоя хранения данных и доработке собственной файловой системы. В последнее время оптимизирует, ускоряет и выжимает максимум из обработки транзакций. Главный интерес — эффективность кода. Любит исследовать системы, находить проблемы производительности и всё ускорять.

Александр Малков

Yandex Go, Разработчик C++

До работы в Яндексе был СТО заказной разработки.

Очень любит технологии и технологическую платформу, поэтому пришёл разрабатывать userver и остался. Любит узнавать новое и делиться этим с другими, а ещё — много кодить. Общий опыт разработки — более 10 лет.

Константин Владимиров

Синтакор, руководитель группы разработки инструментов разработки и компиляторов

Занимается компиляторами с 2010 года, а программированием на C++ — с 2004-го. Последний год занимается расширяемой архитектурой RISC-V.

Константин Вуколов

Яндекс, ведущий разработчик

Занимается разработкой в условиях необходимости оптимизации кода уже 8 лет, увлекается высоконагруженными системами, эффективным кодом и применением новейших технологий в тяжёлой промышленности.

Милош Анджелкович

Pure Storage, старший разработчик

Милош впервые познакомился с C++ ещё в школе. С тех пор как он смог вывести на экран пирамиду из звездочек с помощью двух циклов for, он понял, что хочет быть разработчиком. Позже, в университете, он освоил и другие языки, но понял, что ему приятнее всего кодить именно на С++ (да, так бывает). В начале карьеры Милош работал ассистентом преподавателя, этот опыт он очень ценит и когда-нибудь надеется вернуться к преподаванию в будущем. Дальше он работал в разных направлениях разработки, в том числе в геймдеве. Он активно участвует в жизни профессионального сообщества, является членом Сербской группы пользователей C++ и организует встречи энтузиастов программирования в Праге CPP Prague.

Сергей Слотин

Лектор, Tinkoff Education, ex‑Yandex

Разработчик и исследователь в области высокопроизводительных вычислений.

Написал самые быстрые в мире реализации бинарного поиска, B-дерева, факторизации, парсинга целых чисел, а также множества SIMD-алгоритмов для обработки массивов. Участвовал во множестве образовательных проектов. Автор «Алгоритмики» — одного из самых популярных русскоязычных ресурсов по алгоритмам и структурам данных и книги Algorithms for Modern Hardware про низкоуровневую оптимизацию и HPC.

Александр Боргардт

Tech Lead duckstax.com

Более 10 лет занимается исследованием новых подходов и созданием решений в областях adstech, fintech и ML.

В область интересов входят вопросы разработки распределённых систем, параллельной и конкурентной обработки информации.

Улучшает мир посредством опенсорса.

Антон Полухин

Яндекс Go, руководитель группы разработки общих компонент

Представитель России в Международной рабочей группе по стандартизации C++ (WG21 ISO). Автор многих принятых предложений к стандарту языка C++.

Председатель Российской рабочей группы по стандартизации С++. Разрабатывает и поддерживает стандартную библиотеку GCC, библиотеки Boost. Aвтор Boost-библиотек PFR, TypeIndex, DLL, StackTrace и активный maintainer Any, Conversion, LexicalCast, Variant.

Автор книги Boost C++ Application Development Cookbook.

Илья Шишков

Яндекс Еда, старший разработчик

Работает разработчиком С++ в Яндексе 10 лет. Имеет опыт в высоконагруженном бэкенде, приложениях, а также в создании онлайн-курсов.

Создал онлайн-специализацию по С++ «Пояса по С++», а также онлайн-курс «Алгоритмический фундамент программиста».

Докладчик различных конференций:
C++ Russia, SECR, KnowledgeConf. Ведёт телеграм-канал «Алгоритмический фундамент».

Сергей Фёдоров

Yango Deli Tech, руководитель разработки складских роботов

Пишет на C++ с 1999 года. Делал разное: от автоматизации хлебозаводов и крематориев до разработки банковского и биржевого ПО и геймдева. Сейчас — руководитель разработки складских роботов Yango. Любит open source и головоломные задачи.

Сергей Видюк

Yandex Infrastructure, старший разработчик

Занимается разработкой системы сборки для монорепозитория Яндекса. За плечами ещё 10 лет разработки мобильных картографических приложений (Navitel, затем 2ГИС). В hobby time разрабатывает собственную библиотеку future/promise portable_concurrency.

Любит C++, большие ациклические графы и прятать мьютексы от бизнес-логики в многопоточном коде.

Роман Лебедев

AWS, Senior Software Engineer

10+ лет опыта разработки с C++. Работал в различных областях: обработка AV-контента, таргетирование рекламы, HFT. Последние 5 лет занимался направлением эффективности сначала Яндекс Такси, а потом Лавки. В настоящее время работает над развитием AWS Lambda.

Анна Иляхина

Яндекс, Backend DevRel

Больше 8 лет бок о бок с айтишниками. Выстраивает отношения с сообществами: С++, DevOps, Database. Также работает с опенсорсными проектами: ClickHouse, CatBoost, YDB, userver, YTsaurus и т. д.

Организовывает мероприятия Яндекса, партнёрские интеграции (HighLoad Armenia, HighLoad Serbia), работает со спикерами на внутренних и внешних конференциях, сопровождает авторов на «Хабре», развивает внутренние и внешние сообщества, занимается онлайн-проектами и DevRel-стратегией.

Экс-мать деврела в «Леруа Мерлен».

Михаил Борисов

Яндекс, Team Lead

10+ лет пишет на С++ в Яндексе. Занимался обработкой данных, нагруженными бэкендами в рекламе, прошивками устройств. Сейчас занимается бэкендом и инфраструктурой устройств с Алисой. Интересуется устройством компиляторов, любит дебажить странные проблемы.

Thu Apr 11 2024 17:59:03 GMT+0300 (Moscow Standard Time)