Реализация динамического полиморфизма для свободных функций (Кирилл Колодяжный)
24 мая в Санкт-Петербурге состоялся первый System Level Meetup от компании YADRO. В рамках мероприятия спикер из YADRO, Кирилл Колодяжный, выступил с докладом "Реализация динамического полиморфизма для свободных функций". Он рассказал про один из вариантов реализации механизма динамического полиморфизма для свободных функций. Под этим подразумевается использование одной сигнатуры функции, но вызов различных ее реализаций в зависимости от значений аргументов. В рамках ООП такая задача может быть реализована с использованием виртуальных функций. Однако Кирилл показал, как можно автоматизировать процедурный подход, используя подобие таблицы виртуальных вызовов. А также рассказал про составные ключи и type-erasure для упаковки функций. Данное решение используется, например, в платформах машинного обучения, позволяя создавать код для тензорных вычислений, который можно без изменения запускать на разных аппаратных вычислителях и в разных сценариях. 00:20 - О докладе. 00:45 - Динамический полиморфизм для свободные функцийв контексте математический библиотек для машинного обучения. 05:20 - Таблица вызовов - FunctionTable. 08:22 - DispatchKey – индекс в массиве функций. 10:22 - Класс Dispatcher. 12:15 - Анализ аргументов, извлечение значений, перебор аргументов функций. 14:49 - Получение значения типа устройства. 16:04 - Производительность в PyTorch: Dispatcher vs LazyTensor. 17:11 - Выводы. 18:10 - Вопросы участников. Подробности о докладах и анонсы следующих митапов вы найдете на нашем Хабре https://habr.com/ru/companies/yadro/articles/
24 мая в Санкт-Петербурге состоялся первый System Level Meetup от компании YADRO. В рамках мероприятия спикер из YADRO, Кирилл Колодяжный, выступил с докладом "Реализация динамического полиморфизма для свободных функций". Он рассказал про один из вариантов реализации механизма динамического полиморфизма для свободных функций. Под этим подразумевается использование одной сигнатуры функции, но вызов различных ее реализаций в зависимости от значений аргументов. В рамках ООП такая задача может быть реализована с использованием виртуальных функций. Однако Кирилл показал, как можно автоматизировать процедурный подход, используя подобие таблицы виртуальных вызовов. А также рассказал про составные ключи и type-erasure для упаковки функций. Данное решение используется, например, в платформах машинного обучения, позволяя создавать код для тензорных вычислений, который можно без изменения запускать на разных аппаратных вычислителях и в разных сценариях. 00:20 - О докладе. 00:45 - Динамический полиморфизм для свободные функцийв контексте математический библиотек для машинного обучения. 05:20 - Таблица вызовов - FunctionTable. 08:22 - DispatchKey – индекс в массиве функций. 10:22 - Класс Dispatcher. 12:15 - Анализ аргументов, извлечение значений, перебор аргументов функций. 14:49 - Получение значения типа устройства. 16:04 - Производительность в PyTorch: Dispatcher vs LazyTensor. 17:11 - Выводы. 18:10 - Вопросы участников. Подробности о докладах и анонсы следующих митапов вы найдете на нашем Хабре https://habr.com/ru/companies/yadro/articles/
