Профилирование / Top-down Microarchitecture Analysis Method / Intel VTune
Гость выпуска — инженер Дмитрий Рябцев, который начинал свою карьеру в команде Intel и больше 20 лет разрабатывал Intel VTune, инструмент анализа производительности программ для компьютеров на базе x86-процессоров. Дмитрий расскажет, как профилировщики устроены изнутри, а также даст подсказку, с чего стоит начинать профилирование различных систем. Почему профилировщиков сравнительно немного? Какими они бывают? Как устроена аппаратная поддержка профилирования? Что скрывается за аббревиатурой TMA? В чем заключается фундаментальная проблема инструментов для анализа производительности программ? Почему Intel VTune долгое время был платным? Ответы на эти и многие другие вопросы — в девятом эпизоде «Битовых масок». Смотреть видеоверсию выпуска: https://youtu.be/zIdySCwntXcКстати, у подкаста появился канал в Telegram. В нем мы будем публиковать анонсы новых выпусков, вместе с вами выбирать следующие темы для обсуждения и интересных гостей, а также делиться фотографиями и видео со съемок. Подписывайтесь по ссылке: https://t.me/+vCkZB-u3bgEyZDli 00:00:00 — Тизер выпуска 00:01:00 — Представление гостя 00:01:56 — Начало карьеры в Intel 00:04:44 — Зачем нужны профилировщики 00:08:14 — Типы профилировщиков и как они работают 00:12:01 — Профилировщики для нативных приложений и для систем с managed runtime 00:15:51 — Почему профилировщиков немного 00:16:52 — Почему Intel VTune был платным 00:19:15 — Фундаментальная проблема профилировщиков 00:22:19 — Влияние профилировщиков на результаты 00:26:20 — С чего начать профилирование сложной системы 00:28:44 — Особенности Intel VTune 00:31:03 — Аппаратная поддержка для профилирования 00:39:33 — Внутренние и внешние пользователи Intel VTune 00:42:17 — Top-down Microarchitecture Analysis Method 00:55:26 — Боятся ли вендоры реверс-инжиниринга 00:57:25 — Накладные расходы счетчиков 00:59:23 — Основные микроархитектурные bottlenecks 01:09:33 — Почему сложно сделать универсальный профилировщик для всех микроархитектур 01:13:58 — Верификация формул TMA для микроархитектуры 01:16:59 — Профилирование многопоточных приложений 01:23:44 — Заключение
Компилятор для CPU и GPU. Часть 2. LLVM в GPU компиляторах/Стандарты С++
Во второй части выпуска «Битовых масок» Константин Владимиров, инженер с 20-летним опытом разработки на C/C++, расскажет об особенностях разработки компиляторов для GPU. А также порассуждает о новых полезных вещах в стандартах C++ и объяснит, почему разработчикам компиляторов так важно знать стандарт. Чем отличаются CPU и GPU? В чем сложность гетерогенного программирования? Почему MLIR не применяется в графических компиляторах? Как использовать LLVM для GPU-компиляторов, несмотря на его недостатки для подобных архитектур? Когда мешает SSA? Почему наличие undefined behaviour — это хорошо? Что может быть включено в C++26? Ответы на эти и другие вопросы вы узнаете из второй части выпуска. Видеоверсия выпуска: https://youtu.be/_SIBiSR8rzM00:00:00 — Тизер второй части 00:01:00 — Отличия CPU и GPU 00:02:33 — Особенности компиляторов для GPU 00:04:31 — Сложности применения LLVM для GPU-компиляторов 00:06:43 — Spill’ы в шейдерах 00:10:45 — Сложность гетерогенного программирования 00:11:48 — Проблемы компиляторных инженеров 00:13:57 — Использование LLVM в GPU-компиляторах 00:19:27 — MLIR и возможность его применения 00:21:43 — Особенности языков для GPU 00:26:37 — Backend в GPU-компиляторах 00:27:12 — Интересный баг 00:32:56 — Стоит ли писать на ассемблере 00:34:19 — Почему важно знать стандарты C++ 00:36:40 — Ошибка в Linux 00:39:26 — Польза undefined behaviour 00:46:04 — Новшества в C++23 и C++26 00:56:07 — Участие в разработке стандартов C++ 01:01:30 — Заключение
Компилятор для CPU и GPU. Часть 1. LLVM и GCC.
В этом выпуске Константин Владимиров, занимавшийся разработкой компиляторов для CPU и GPU, расскажет о том достоинствах и недостатках GCC и LLVM. Константин опишет различные современные подходы к аллокации регистров, применяемых в компиляторах. А также поделится базовыми рекомендациями для пользователей компиляторов, желающих улучшить производительность своих программ с помощью компиляторов. Кроме того, мы обсудили животрепещущий вопрос об IT-образовании. Насколько больно переходить на новые версии компилятора? По каким причинам выбирают LLVM? Какие достоинства и недостатки GCC и LLVM? Какие методы решения задачи аллокации регистров существуют? Насколько этот этап влияет на скорость работы программы? Почему инженерам полезно идти преподавать в ВУЗы? Какие проблемы есть у современного высшего образования в сфере IT? Ответы на эти и другие вопросы вы узнаете из этого эпизода. Больше интересного обсудим с Константином во второй части выпуска, которая выйдет чуть позже. Видеоверсия выпуска: https://youtu.be/oXjS8mJk6VEСсылка на канал Константина: https://www.youtube.com/@tilir00:00:00 - Тизер 00:00:22 - В гостях Константин Владимиров 00:01:40 - Карьерный путь Константина 00:08:16 - Как Константин попал в сферу разработки компиляторов 00:10:05 - Процесс проектирования микроархитектуры 00:11:39 - Сравнение GCC и LLVM, преимущества и недостатки 00:15:47 - LLVM IR 00:16:41 - Все крупные системы должны быть переписаны на C++ 00:17:18 - Преимущества C 00:18:57 - Наследие, оставшееся от С, в GCC 00:20:19 - Ниши gcc и clang 00:22:26 - Отсутствие бинарной совместимости для LLVM IR 00:24:42 - Различные методы аллокации регистров в компиляторах 00:34:47 - Как аллокация регистров влияет на качество сгенерированного кода 00:36:15 - Рекомендации для пользователей компиляторов 00:37:02 - Архитектурные решения проблемы аллокации регистров 00:40:07 - Польза преподавательской деятельности 00:43:43 - Собеседования при найме 00:45:27 - Что полезно для развития специалиста 00:46:56 - Проблемы IT-кафедр 00:52:10 - Участие компаний в высшем образовании 00:55:27 - Новогоднее пожелание будущим инженерам от Константина
Wireless-сети и гетерогенные системы / Сетевые протоколы / Операционные системы / RTOS
В этом выпуске Александр Разинков, работавший во множестве компаний в сфере разработки встраиваемых систем, расскажет о том, как происходит передача данных в беспроводных сетях. Александр объяснит алгоритм работы передачи данных, а также расскажет о задачах операционных систем. Что может привести к замедлению передачи данных по Wi-Fi? Какие ограничения скорости передачи данных существуют? Насколько устройства отстают от самых современных стандартов? Для чего нужны гетерогенные системы? В чем отличие Linux от RTOS? Можно ли написать ядро ОС на C++? Эти и многие другие вопросы обсудили в этом выпуске «Битовых масок».Смотреть видеоверсию выпуска: https://youtu.be/IfRLOYb00kw00:00:00 - Вступление 00:01:38 - Начало работы в сфере встраиваемого ПО 00:05:03 - Сетевые протоколы, стандарты, особенности и сферы применения 00:09:24 - Ограничения и возможности для развития существующих и появления новых стандартов 00:12:40 - Модуляция сигнала 00:13:40 - Алгоритм передачи данных в сети без коллизий 00:17:19 - Что может создавать помехи для работы сетей 00:21:03 - Multi-user MIMO 00:25:00 - Отставание устройств от стандартов и протоколов 00:28:30 - Internet of Things 00:29:56 - Отладка беспроводных сетевых протоколов 00:35:10 - Гетерогенные системы 00:40:32 - Необходимость знания алгоритмов и особенности работы 00:43:37 - Комбинация baremetal и linux в гетерогенных системах и взаимодействие между ядрами 00:47:08 - ARM big.LITTLE 00:50:03 - Операционные системы, планировщик, отличия RTOS 01:07:29 - Можно ли написать ядро ОС на C++ 01:11:17 - Заключение
Дизайн процессоров. RTL-дизайн / Языки разработки аппаратуры / Верификация и синтез
В этом выпуске Никита Поляков, работавший в МЦСТ и Syntacore, позволит понять, как выглядит работа разработчика процессоров. Никита рассказал о различных специализациях, которые есть внутри профессии, какие тулы используются и на какие этапы делится разработка процессоров. В чем преимущества и недостатки архитектуры Эльбрус(VLIW) и RISC-V? Какие языки разработки аппаратуры бывают и в чем их отличие от языков программирования? Как происходит отладка? Как происходит синтез многоядерных процессоров? Нужно ли уметь обращаться с паяльником и осциллографом разработчику процессоров? Что вообще могут и в каком виде продавать компании, специализирующиеся на разработке аппаратуры? И многие другие вопросы обсудили в этом выпуске.00:00:00 - Тизер 00:00:52 - Представление гостя 00:02:17 - Как Никита стал разработчиком процессоров, учеба в МФТИ 00:05:33 - Начало работы в МЦСТ 00:06:45 - Различные специализации разработчиков процессоров 00:08:37 - Языки описания аппаратуры и инструменты для разработки процессоров 00:13:26 - Сходства Verilog и языков программирования 00:14:43 - Отличия Verilog и языков программирования 00:17:49 - Моделирование/верификация и синтез с помощью Verilog 00:20:50 - Автоматические и ручные оптимизации схемы во время синтеза 00:23:07 - Тулы симуляции и синтеза, этапы разработки 00:27:11 - Баги и процесс отладки 00:31:15 - Процесс синтеза больших устройств, синтез многоядерных процессоров 00:37:35 - Этап верификации аппаратуры 00:41:47 - Результирующие продукты, Soft IP 00:48:29 - Как справляться с багами в уже выпущенных модулях и процессорах 00:51:39 - Развитие языка Verilog и его стандарты 00:55:23 - Баги в тулах для разработки процессоров 00:58:26 - Chisel 01:04:25 - Архитектура Эльбрус 01:10:55 - Различия RISC-V и Эльбруса 01:22:17 - Где учиться разработке процессоров, что должен знать разработчик процессоров 01:25:46 - Связь между программированием и разработкой аппаратуры, миграция фич из ПО в аппаратуру 01:28:48 - Возможен ли переход в разработчики процессоров из другой специальности 01:35:42 - Нужны ли паяльник и осциллограф при работе 01:40:22 - Заключение