5.6 KiB
5.6 KiB
P31-A. GC3: корректность расписаний
- Версия и дата проверки: 1.1, 07.09.2026.
- Статус: готово к назначению.
Статья и исходные материалы
- Основная статья: Meghan Cowan и соавт. — GC3: An Optimizing Compiler for GPU Collective Communication. ASPLOS 2023.
- Кратко о статье: Быстрые коллективные операции для GPU-кластеров обычно реализуются вручную под конкретную топологию, что усложняет проверку и перенос оптимизаций. GC3 задаёт коллектив как структурированную программу пересылок и компилирует её в специализированное выполнение, применяя преобразования и конвейеризацию. В этом проекте строится CPU-модель для проверки корректности расписаний и сохранения семантики после преобразований.
- Почему результат актуален: исходный набор MSCCL tools обновляется редко, но линия программируемых коллективов продолжается в активно развиваемом MSCCL++ под MIT. Проект сосредоточен на переносимом языке расписаний, проверке корректности и компиляции; устаревшая версия runtime не входит в его основной предмет.
- Артефакты и данные: microsoft/msccl-tools под MIT, с Python DSL MSCCLang, компилятором, примерами и тестами. Зафиксированные ревизии:
microsoft/msccl-tools@030a750fc56e(MIT). - Что уже предоставляет артефакт: MSCCL-tools предоставляет DSL, компилятор, алгоритмы коллективных операций, примеры и встроенные проверки. Их разрешено использовать для записи и компиляции расписаний и как источник положительных примеров.
Обязательный результат
- Проверяемый вопрос или утверждение: явное описание алгоритма на уровне блоков вместе с компиляторными преобразованиями позволяет безопасно получать специализированные конвейерные коллективы без ручного написания низкоуровневого GPU-кода.
- Технический результат: Выразить ring AllReduce и один AllToAll в MSCCLang, построить независимый эталон семантики блоков и автоматическую проверку полученного расписания.
- Обязательное приращение команды: Создать предусмотренный независимый эталон семантики блоков и проверку расписаний ring AllReduce и AllToAll. Проверить потери, дублирование, чтение до записи и взаимоблокировку на положительных и не менее трёх испорченных расписаниях; встроенная проверка DSL не заменяет эталон команды.
- Эксперимент: Для нескольких размеров топологии проверить отсутствие потерь, дублирования, чтения до записи и взаимоблокировки, затем сопоставить IR и имитационную стоимость с эталонным расписанием. Обязательны положительные тесты и не менее трёх намеренно испорченных расписаний.
- Границы выводов: проверка относится к семантике блоков, выбранным коллективам и сгенерированному IR; без исполнения на GPU она не подтверждает производительность расписаний и корректность низкоуровневого runtime.
- Ресурсный профиль: локально, CPU и 4–8 ГБ памяти для компиляции и имитации; исполнение через MSCCL на нескольких GPU необязательно и не входит в минимальный результат.
Содержательные направления
- DSL-программы и эталоны.
- анализ и модификация компилятора.
- проверка расписаний, модель стоимости и эксперименты.
Возможное продолжение
Реализовать проверку корректности, новую оптимизацию порядка или слияния передач, поддержку новой топологии либо автоматический выбор числа каналов.