Files

32 lines
5.6 KiB
Markdown
Raw Permalink Normal View History

2026-09-06 19:26:12 +03:00
# P31-A. GC3: корректность расписаний
2026-09-07 21:46:04 +03:00
- **Версия и дата проверки:** 1.1, 07.09.2026.
2026-09-06 19:26:12 +03:00
- **Статус:** готово к назначению.
## Статья и исходные материалы
- **Основная статья:** 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).
2026-09-07 21:46:04 +03:00
- **Что уже предоставляет артефакт:** MSCCL-tools предоставляет DSL, компилятор, алгоритмы коллективных операций, примеры и встроенные проверки. Их разрешено использовать для записи и компиляции расписаний и как источник положительных примеров.
2026-09-06 19:26:12 +03:00
## Обязательный результат
- **Проверяемый вопрос или утверждение:** явное описание алгоритма на уровне блоков вместе с компиляторными преобразованиями позволяет безопасно получать специализированные конвейерные коллективы без ручного написания низкоуровневого GPU-кода.
- **Технический результат:** Выразить ring AllReduce и один AllToAll в MSCCLang, построить независимый эталон семантики блоков и автоматическую проверку полученного расписания.
2026-09-07 21:46:04 +03:00
- **Обязательное приращение команды:** Создать предусмотренный независимый эталон семантики блоков и проверку расписаний ring AllReduce и AllToAll. Проверить потери, дублирование, чтение до записи и взаимоблокировку на положительных и не менее трёх испорченных расписаниях; встроенная проверка DSL не заменяет эталон команды.
2026-09-06 19:26:12 +03:00
- **Эксперимент:** Для нескольких размеров топологии проверить отсутствие потерь, дублирования, чтения до записи и взаимоблокировки, затем сопоставить IR и имитационную стоимость с эталонным расписанием. Обязательны положительные тесты и не менее трёх намеренно испорченных расписаний.
- **Границы выводов:** проверка относится к семантике блоков, выбранным коллективам и сгенерированному IR; без исполнения на GPU она не подтверждает производительность расписаний и корректность низкоуровневого runtime.
- **Ресурсный профиль:** локально, CPU и 4–8 ГБ памяти для компиляции и имитации; исполнение через MSCCL на нескольких GPU необязательно и не входит в минимальный результат.
## Содержательные направления
- DSL-программы и эталоны.
- анализ и модификация компилятора.
- проверка расписаний, модель стоимости и эксперименты.
## Возможное продолжение
Реализовать проверку корректности, новую оптимизацию порядка или слияния передач, поддержку новой топологии либо автоматический выбор числа каналов.