30 lines
4.6 KiB
Markdown
30 lines
4.6 KiB
Markdown
# P31-A. GC3: корректность расписаний
|
||||
|
|
|
|||
|
|
- **Версия и дата проверки:** 1.0, 05.09.2026.
|
|||
|
|
- **Статус:** готово к назначению.
|
|||
|
|
|
|||
|
|
## Статья и исходные материалы
|
|||
|
|
|
|||
|
|
- **Основная статья:** Meghan Cowan и соавт. — [GC3: An Optimizing Compiler for GPU Collective Communication](https://arxiv.org/pdf/2201.11840). ASPLOS 2023.
|
|||
|
|
- **Кратко о статье:** Быстрые коллективные операции для GPU-кластеров обычно реализуются вручную под конкретную топологию, что усложняет проверку и перенос оптимизаций. GC3 задаёт коллектив как структурированную программу пересылок и компилирует её в специализированное выполнение, применяя преобразования и конвейеризацию. В этом проекте строится CPU-модель для проверки корректности расписаний и сохранения семантики после преобразований.
|
|||
|
|
- **Почему результат актуален:** исходный набор MSCCL tools обновляется редко, но линия программируемых коллективов продолжается в активно развиваемом [MSCCL++](https://github.com/microsoft/mscclpp) под MIT. Проект сосредоточен на переносимом языке расписаний, проверке корректности и компиляции; устаревшая версия runtime не входит в его основной предмет.
|
|||
|
|
- **Артефакты и данные:** [microsoft/msccl-tools](https://github.com/microsoft/msccl-tools) под MIT, с Python DSL MSCCLang, компилятором, примерами и тестами. Зафиксированные ревизии: `microsoft/msccl-tools@030a750fc56e` (MIT).
|
|||
|
|
|
|||
|
|
## Обязательный результат
|
|||
|
|
|
|||
|
|
- **Проверяемый вопрос или утверждение:** явное описание алгоритма на уровне блоков вместе с компиляторными преобразованиями позволяет безопасно получать специализированные конвейерные коллективы без ручного написания низкоуровневого GPU-кода.
|
|||
|
|
- **Технический результат:** Выразить ring AllReduce и один AllToAll в MSCCLang, построить независимый эталон семантики блоков и автоматическую проверку полученного расписания.
|
|||
|
|
- **Эксперимент:** Для нескольких размеров топологии проверить отсутствие потерь, дублирования, чтения до записи и взаимоблокировки, затем сопоставить IR и имитационную стоимость с эталонным расписанием. Обязательны положительные тесты и не менее трёх намеренно испорченных расписаний.
|
|||
|
|
- **Границы выводов:** проверка относится к семантике блоков, выбранным коллективам и сгенерированному IR; без исполнения на GPU она не подтверждает производительность расписаний и корректность низкоуровневого runtime.
|
|||
|
|
- **Ресурсный профиль:** локально, CPU и 4–8 ГБ памяти для компиляции и имитации; исполнение через MSCCL на нескольких GPU необязательно и не входит в минимальный результат.
|
|||
|
|
|
|||
|
|
## Содержательные направления
|
|||
|
|
|
|||
|
|
- DSL-программы и эталоны.
|
|||
|
|
- анализ и модификация компилятора.
|
|||
|
|
- проверка расписаний, модель стоимости и эксперименты.
|
|||
|
|
|
|||
|
|
## Возможное продолжение
|
|||
|
|
|
|||
|
|
Реализовать проверку корректности, новую оптимизацию порядка или слияния передач, поддержку новой топологии либо автоматический выбор числа каналов.
|