Files
nis2/project-tasks/p31-b-gc3-topology-optimization.md

5.5 KiB
Raw Permalink Blame History

P31-B. GC3: оптимизация под топологию

  • Версия и дата проверки: 1.1, 07.09.2026.
  • Статус: готово к назначению.

Статья и исходные материалы

  • Основная статья: Meghan Cowan и соавт. — GC3: An Optimizing Compiler for GPU Collective Communication. ASPLOS 2023.
  • Кратко о статье: Быстрые коллективные операции для GPU-кластеров обычно реализуются вручную под конкретную топологию и доступные параллельные каналы. GC3 отделяет описание алгоритма обмена от низкоуровневого выполнения и компилирует специализированные расписания с конвейеризацией. В этом проекте исследуется, как учёт топологии сокращает критический путь коллектива без изменения результата.
  • Почему результат актуален: исходный набор MSCCL tools обновляется редко, но линия программируемых коллективов продолжается в активно развиваемом MSCCL++ под MIT. Проект сосредоточен на переносимом языке расписаний, проверке корректности и компиляции; устаревшая версия runtime не входит в его основной предмет.
  • Артефакты и данные: microsoft/msccl-tools под MIT, с Python DSL MSCCLang, компилятором, примерами и тестами. Зафиксированная основная ревизия: microsoft/msccl-tools@030a750fc56e (MIT).
  • Что уже предоставляет артефакт: MSCCL-tools предоставляет DSL, компилятор и исходные расписания. Их можно использовать как формат и baselines для собственной CPU-модели.

Обязательный результат

  • Проверяемый вопрос или утверждение: Специализированное расписание, учитывающее топологию и параллельные каналы, может сократить критический путь коллектива без изменения его семантики.
  • Технический результат: Построить CPU-симулятор топологии и расписаний MSCCLang, реализовать хотя бы одно преобразование порядка, разбиения или назначения каналов. Корректность каждого результата проверяется независимой моделью движения блоков.
  • Обязательное приращение команды: Построить предусмотренный симулятор топологии и расписаний, реализовать преобразование и независимую проверку движения блоков. Сравнить исходное и преобразованное расписания на двух топологиях и нескольких размерах сообщения, включая чувствительность к параметрам.
  • Эксперимент: Сравнить исходный ring либо AllToAll и оптимизированное расписание на двух топологиях и нескольких размерах сообщения. Измерить критический путь, переданные байты, загрузку узких каналов и число шагов; проверить корректность и устойчивость к изменению параметров.
  • Границы выводов: выигрыш оценивается по модели критического пути на двух заданных топологиях; он не учитывает все эффекты реальной сети, GPU-ядер и конкуренции каналов при исполнении коллектива.
  • Ресурсный профиль: локально, CPU и 4–8 ГБ памяти для компиляции и имитации; исполнение через MSCCL на нескольких GPU необязательно и не входит в минимальный результат.

Содержательные направления

  • модель топологии и исходное расписание.
  • компиляторное преобразование и генерация расписаний.
  • проверка корректности, модель стоимости и экспериментальные серии.

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

Добавить иерархическую топологию, автоматический поиск числа каналов, отказ одного канала, слияние передач или сравнение с ещё одним опубликованным коллективом.