An Overview of High Performance Computing and Responsibly Reckless Algorithms
该笔记内容来源于 Jack Dongarra 教授于 2024.8.5 在中大的讲座“An Overview of High Performance Computing and Responsibly Reckless Algorithms”。
大多数东西还不懂但是会慢慢了解的。
1970 年代的 HPC 系统
-
CDC 7600 36.4 MHz:主存 \(65\) 千词(每个词 \(60\) 位),峰值 \(36 \rm{Mflop/s}\),每日至少停止运行一次(通常是四到五次)。
-
IBN 370.195 18.5 MHz:并行运算,可以同时进行 \(7\) 次浮算,内存 \(4 \rm{MB}\)。
50 年来线性系统软件包的开发
-
EISPACK(1970's):使用 Fortran,它依赖于矩阵的行。
-
LINPACK(1980's):依赖 Level 1 Basic Linear Algebra Subprograms(BLAS) 操作,即向量乘向量,且使用矩阵的列。
此外 Level 2 & 3 BLAS - ATLAS 支持矩阵乘向量和矩阵乘矩阵操作。
-
LAPACK(1990's):依赖 Level-3 BLAS 操作,对缓存十分友好。
-
ScaLAPACK(2000's):依赖 PBLAS Mess Passing。(PVM 和 MPI 是 Message passing 的标准)
在之后的 PLASMA/MAGMA(2010's) 和 SLATE(2020's) (依赖于 C++)出现了 DAG Scheduling(DAG 调度,基于 PaRSEC)等等,不再赘述。
现在的 HPC Environment
-
高度并行,使用分布式内存和 MRI + Open-MP 程序设计模型。
-
商业处理器 + GPU 加速器。
-
浮算次数不反应解决问题的时间大小。
-
有 64,32,16,8 字节级别的浮算硬件。
Dennard Scaling
Dennard Scaling(登纳德缩放定律,1974)认为,随着晶体管尺寸的缩小,其功率密度保持不变,从而使芯片的功率与芯片面积成正比。随着晶体管密度的增加,每个晶体管的能耗将降低,计算机将变得更加节能。
但自 2005-2007 年前后,Dennard Scaling 定律似乎已经失效。集成电路中的晶体管数量仍在增加,但性能提升开始放缓。主要原因在于,当芯片尺寸不变而晶体管数量增多时,电流泄漏问题变得更加严重,导致芯片升温,进一步增加能源成本。
Frontier
-
峰值 \(2\rm{Eflop/s}\),功率 \(20+\rm{MW}\)。在数据分析、机器学习、人工智能方面,在 \(16\) 位下达到了 \(11.2\rm{Eflop/s}\) 的峰值。
-
每个 node 有一个 AMD CPU 和四个 AMD GPU(后者性能占比为 \(99\%\)),\(730\mathrm{GB}\) fast memory 和 \(2\mathrm{TB}\) NVMe memory。
-
共 \(9408\) nodes(\(37,632\) GPUs,\(8.8\times 10^6\) Cores),\(706\mathrm{PB}\) 内存(\(695\mathrm{PB}\) Disk + \(11\mathrm{PB}\) SSD)。
值得注意的是目前 TOP 级别的 HPC 的 Fraction of Peak 十分的低(大部分 \(<2.0\%\) 甚至是 \(1.0\%\))。
"Respnsibly Reckless" Algorithms
牵扯到 AI 和 ML,Deep Learning 需要大量的小型矩阵运算("the time-consuming part"),从而引出这个 Responsibly Reckless Algorithms:
-
尝试使用一个快速的算法,但是它可能会失败(概率较低)。避免 Data Movement 和 Synchronization(同步?),使用 Mixed Precision。
-
检查其不稳定性,有需要的话再用稳定算法计算它。
Algorithm / Software advances follows hardware.
And there is "plenty of room at the top".