C++

BackEnd


Константин Владимиров
Руководитель отдела компиляторов и инструментов разработки @ Syntacore
Москва
Анастасия Черникова
Младший инженер в группе компиляторов и средств разработки @ Syntacore
Москва

1. Введение

1.1. Обзор архитектуры RISC-V

1.2. Обзор инфраструктуры LLVM

2. llvm-exegesis как инструмент бенчмаркинга

2.1. Работа в режиме JIT

2.2. Запуски для baremetal

3. Интересные решения в llvm-exegesis бэкенде для RISC-V

  • День выступления: 28.09.2024
  • Время начала: 13:40
  • Время окончания: 14:20
  • Зал : Разработка-1
  • Категории : Разработка
  • Секции: C++
  • Сложность : Senior

  • Евгений Ерохин
    Старший Разработчик @ Kaspersky
    Санкт-Петербург

    C++ славится тем что в нем все время стреляют себе в ноги. И как правило это связано с работой с памятью. Но, есть методы которые помогают справиться с этим. Давайте разберем один из методов разбора и сбора пакетов, который был успешно применен как в бекэнде в пользовательском пространстве, так и в ядре macOS для разбора USB пакетов. Метод позволяет работать с пакетами весьма эффективно, при этом обеспечивает полный контроль памяти, и не позволяет случаться таким ошибкам как “выход за границы буфера”.

    Этот метод хорошо себя показал в высоконагруженном сервисе передачи видео в реальном времени. А так же драйвере для macOS, где использовался для работы с устройсвами по протоколу поверх USB.

    - рассмотрим сам метод.

    - как он позволяет структурировать код и доступ к данным.

    - какие особенности будут у него в пространстве ядра

    - рассмотрим проблематику работы с упакованными структурами

    - какой код генерирует компилятор

    - рассмотрим особенности связанные с кроссплатформенностью (неприятные сюрпризы от компилятора)

    • День выступления: 28.09.2024
    • Время начала: 14:25
    • Время окончания: 15:05
  • Зал : Разработка-1
  • Категории : Разработка
  • Секции: C++

  • Михаил Лукин
    CTO @ ООО "СУДО"
    Санкт-Петербург
    Дмитрий Громов
    Младший разработчик @ ООО "СУДО"
    Санкт-Петербург

    1. Немного о нас

    2. Краткое введение в GPGPU

    3. Немного про ассемблер на видеокартах

    a. AMD

    b. Nvidia (PTX, SASS)

    c. ассемблерный псевдокод

    4. Ветвление: if, if-else – CPU vs GPU

    a. CPU (godbolt)

    b. AMD: Регистр для ветвления (exec)

    c. Nvidia: ветвящаяся операция

    5. Алгоритм распознавания ветвления

    6. Циклы

    a. Простой цикл

    i. CPU

    ii. AMD

    iii. Nvidia

    b. Распознавание цикла

    c. Развёрнутый (unrolled) цикл

    d. Алгоритм распознавания развёрнутого цикла (для GPU)

    7. Заключение

    • День выступления: 27.09.2024
    • Время начала: 14:25
    • Время окончания: 15:05
  • Зал : Разработка-1
  • Категории : Разработка
  • Секции: C++

  • Александр Петров
    Ведущий эксперт-разработчик @ SimbirSoft
    Санкт-Петербург

    1. C++ не является надмножеством языка C

    2. Почему "мифический" С/С++?

    3. Параллельное развитие языков.

    4. Ограничение стандартов в докладе С++20(ISO/IEC 14882:2020) и С17(ISO/IEC 9899:2018).

    5. Не каждая программа на С - это валидная программа на С++

    6. Не каждая программа на С++ - это валидная программа на С

    7. Код, валидный в обоих языках, но имеющий разное значение

    8. Молчание компиляторов

    9. Практики по написанию кода, в котором миксуются С и С++

    • День выступления: 27.09.2024
    • Время начала: 13:40
    • Время окончания: 14:20
  • Зал : Разработка-1
  • Категории : Разработка
  • Секции: C++

  • Максим Кокряшкин
    Разработчик @ VK
    Москва

    Tarantool — это платформа для in-memory-вычислений, написанная на C/C++ и Lua. Миры Lua и С/C++ очень тесно связаны: у Tarantool есть модули на Lua, модули на Lua могут использовать модули, написанные на C/C++. В процессе исполнения и в Lua-коде, и в C/C+±коде могут возникать исключения, которые иногда необходимо обрабатывать в другом компоненте, может быть написанном на другом языке.

    Доклад рассказывает о том, как можно реализовать интероперабельность исключений между двумя языками на примере Lua и C. Разберемся в том, какие есть способы реализации механизма исключений на разных платформах, посмотрим на специфичные для них сложности, а также рассмотрим реализацию интероперабельности на примере LuaJIT, с помощью которого исполняется весь Lua-код в Tarantool.

    • День выступления: 27.09.2024
    • Время начала: 15:10
    • Время окончания: 15:50
  • Зал : Разработка-1
  • Категории : Разработка
  • Секции: C++

  • Владимир Невзоров
    Старший backend разработчик @ servicepipe
    Москва

    С++ является языком с богатой историей и мощным функционалом. На нём пишут программы для микроконтроллеров, создают игры, Базы Данных, Highload сервисы и многое другое.

    Есть мнение, что старичку пора на пенсию. Ведь в последнее время появилось много специализированных языков, которые заменят С++. А языку 40 лет в обед.

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

    Рассмотрим историю языка - рассвет в 90ых, забвение на рубеже веков и ренессанс начиная с принятием эпохального стандарта С++11 в 2011 году.

    • День выступления: 28.09.2024
    • Время начала: 15:10
    • Время окончания: 15:50
  • Зал : Разработка-1
  • Категории : Разработка
  • Секции: C++