Numerical Methods
Параллельные вычисления в линейной алгебре
Цели урока
- Понять алгоритм Кэннона и условия линейного ускорения параллельного умножения матриц
- Освоить методы Крылова в распределённой памяти: параллельный SpMV и коммуникационные паттерны CG/GMRES
- Разобраться в рандомизированном SVD и GPU-ускорении через cuBLAS и смешанную точность
Предварительные знания
- Спектральные методы
Google PaLM 540B: 6144 TPU v4, 56 петафлопс - весь обмен данными построен на параллельном GEMM
- Google PaLM 540B: 6144 TPU v4, 56 петафлопс - весь обмен данными построен на параллельном GEMM
- Netflix распределённый SVD: матрица 100M пользователей x 500K фильмов факторизуется рандомизированными методами
- ECMWF 4D-Var: параллельный CG на 100K процессорах для ассимиляции данных погоды
- GPT-4 инференс: смешанная точность FP8/FP16 даёт 2x ускорение на H100 без потери качества
История параллельной линейной алгебры
Lynn Elliot Cannon (1969, докторская диссертация) предложил алгоритм для SIMD-компьютеров - задолго до современных GPU. Jack Dongarra (Tennessee) создал LAPACK (1992) и ScaLAPACK (1995) - стандарты, используемые до сих пор. TOP500 суперкомпьютеров ранжируется по HPL (High Performance Linpack) - решению плотной системы СЛАУ, алгоритмически это ScaLAPACK. NVIDIA cuBLAS (2007) перенёс BLAS на GPU, изменив всё.
Параллельное умножение матриц и алгоритм Кэннона
Google обучил PaLM 540B параметров за 1400 часов на 6144 TPU v4 с пиковой производительностью 56 петафлопс. Каждый шаг обучения - миллиарды матричных умножений. Алгоритм Кэннона распределяет их по сетке процессоров с линейным ускорением при правильном соотношении размера матрицы и числа процессоров.