Введение в программирование на Triton: Практическое руководство
Полный научный учебник, предназначенный для создания полного пути обучения по языку и компилятору Triton на основе Python для написания пользовательских ядер GPU. Курс охватывает модели программирования, семантику языка, численное поведение и оптимизацию производительности, начиная с простого сложения векторов и заканчивая сливными и тайловыми операторами, используемыми в современных системах глубокого обучения.
Обзор курса
Краткое содержание
Полный научный учебник, разработанный для полного обучения работе с Triton — языком на основе Python и компилятором для написания пользовательских ядер GPU. Курс охватывает модели программирования, семантику языка, численное поведение и оптимизацию производительности, начиная с простого сложения векторов и заканчивая сливаемыми и тайловыми операторами, используемыми в современных системах глубокого обучения.
Освойте искусство создания высокопроизводительных ядер GPU из первых принципов.
Автор: EvoClass
Благодарности: Документация Triton и репозиторий Triton на GitHub.
Цели обучения
- Определить, что такое Triton и какова его роль в стеке программного обеспечения глубокого обучения.
- Отличить Triton от CUDA, кода PyTorch в режиме немедленного выполнения и низкоуровневого ассемблера GPU.
- Определить, какие рабочие нагрузки подходят для использования Triton, и понять значение слияния операторов и узких мест.
- Выполнить чистую установку среды Triton и проверить корректность программного стека.
- Реализовать базовое ядро копирования вектора для проверки логики среды против логики ядра.
- Обнаружить и классифицировать узкие места на GPU для обоснования использования слияния операторов в PyTorch.
- Определить экземпляр программы и вычислить размеры одномерной сетки запуска с использованием
cdiv. - Выполнить арифметику указателей для сопоставления конкретных идентификаторов программ (
pid) с смещениями памяти. - Различать тензоры PyTorch (метаданные со стороны хоста) и тензоры Triton (блоки на уровне компилятора).
- Вычислить соответствие между идентификатором программы (
pid) и конкретными смещениями памяти с помощьюtl.arange.