Files
nis2/project-tasks/p31-a-gc3-correctness.md
T

5.6 KiB
Raw Blame History

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-программы и эталоны.
  • анализ и модификация компилятора.
  • проверка расписаний, модель стоимости и эксперименты.

Возможное продолжение

Реализовать проверку корректности, новую оптимизацию порядка или слияния передач, поддержку новой топологии либо автоматический выбор числа каналов.