房顶线模型和高性能核算基准分析
简介
高功用核算的核算功用在很大程度上取决于处理元件的峰值功用和内存带宽之间的平衡。虽然外部内存通常是 HPC 中的束缚要素,但相对简略的房顶线模型可认为 HPC 功用的束缚和瓶颈供给洞察力。它或许无法供给特定作业负载的精确功用数据,但却能为程序员和硬件架构师供给有关优化点的有用见地。咱们在 ARM 和 X86 节点(服务器)上运转了具有代表性的基准 STREAM、HPCG 和 HPL。咱们将供货商发布的峰值功用和内存带宽与经过 STREAM、HPCG 和 HPL 搜集的配置文件数据进行比较,以证明简略房顶线模型的有效性。HPCG 和 HPL 基准测验成果标明,HPCG 受内存束缚,而 HPL 基准测验受核算束缚。房顶线模型还显现了每种架构在内存带宽和峰值核算功用之间的平衡点。
导言
超级核算机的运用范畴正在从传统的科学和工程范畴扩展到大数据和人工智能范畴。对超级核算机更高功用的需求不断添加,推动了新式超级核算机架构与高功用加速器、内存架构和网络的增强。核算机体系的核算功用取决于处理器的运转频率、并行核算处理器和线程的数量以及数据宽度。此类处理器需求从主存储器读/写数据流才干取得最高功用。主内存带宽(数据吞吐量)取决于 DIMM(双列直插式内存模块 dual in-line memory module)或 HBM(高带宽内存 High Bandwidth Memory)的时钟速度和通道数量。并行核算范式需求用于多个socket和节点的事实标准 MPI、用于多线程编程的 OpenMP 以及用于运用加速器的 OpenCL。
房顶线模型运用两个基本参数,即峰值核算功用和峰值内存带宽。因而,房顶线模型或许无法显现精确的功用数字,但能够显现一种架构与其他架构比较的相对功用预期。顶线有两个区域,一个是内存鸿沟,CPU 在该鸿沟作业时内存带宽最大,核算功用较低;另一个是核算鸿沟,CPU 在该鸿沟作业时核算功用最大,内存带宽较低。
房顶线模型运用的峰值核算功用和峰值内存带宽是抱负功用。咱们估计实践功用会低于峰值核算功用和最大内存带宽。有必要丈量实践核算功用和内存带宽,以验证房顶线模型所显现的趋势。有一些 HPC(高功用核算机)基准程序能够预算最大核算功用和最大内存带宽。HPL(高功用 LINPAC High Performance LINPAC)可预算最大核算功用,STREAM 可预算最大内存带宽。
HPCG(高功用共轭梯度 High-Performance Conjugate-Gradient)预算了稀少矩阵核算在最大内存带宽下的核算功用。咱们标明,HPL、HPCG 基准成果坐落 ARM 和 X86 节点的顶线。STREAM 对内存带宽的预算使抱负顶线成为经历顶线,HPCG 和 HPL 在此顶线上的核算功用证明,顶线是核算机体系核算功用的参阅值。
房顶线模型
房顶线模型
房顶线 x 轴为 AI(算术强度),即运算次数(W)与内存流量(Q)之比,轴的单位为 FLOPs/字节。
房顶线的 y 轴显现在给定 AI 条件下的预期功用。最佳运转条件坐落下图所示的房顶线图的山脊处。房顶线模型由两条蓝色直线组成,分别是平直线和线性下降线。x 轴和 y 轴为对数刻度,y 轴的单位为功用 FLOPS,即 FLOPs/sec 或 FLOP/sec。在最佳 AI(AIO)时,核算功用的 y 轴值即为 CPU 的峰值核算功用(PP)。当 AI 值到达 在 AIO 的右侧,最大可完成功用遭到峰值功用的束缚,而在 AIO 的左边,预期功用在下降。蓝线下方区域是基准成果的答应规模,由经历核算功用和内存带宽决议。
节点功用
咱们在 ARM 和 X86 节点上运转了三个基准程序。ARM 节点有两个 Cavium ThunderX2 CPU(ARMv8 内核 9980,有 28 个内核、4 个线程和 2 个 SIMD(单指令多数据)),主频为 2.2GHz。ARM 节点的内存带宽为 2.66GByte/秒,选用 16 通道 DIMM。X86 节点有两个至强 E5-2690 v4 CPU,其间有 14 个内核(2 个线程)、8 个 AVX2(高档矢量扩展)和 FMA(交融乘法器)3,作业频率为 2.6GHz,内存带宽为 2.4Gbyte/sec,有 8 个 DIMM 通道。表 1 总结了两个节点的峰值功用和峰值内存带宽。
虽然 ARM 节点有 16 个 DIMM 通道,但咱们只运用了 16 个 DIMM 中的 8 个通道。X86 节点则运用了 8 通道 DIMM 的悉数容量。
具有代表性的超级核算机 CPU 和 GPU 的顶线
现在 TOP500 榜单中速度最快的超级核算机 Fugaku 运用的是依据 ARM 内核的 A64FX CPU。该 CPU 具有 3.377GFLOPS 的核算功用和 1.024TB/sec 的 HBM2(高带宽内存)。英伟达公司的 A100 GPU 被超级核算机广泛用于人工智能运用。它的核算功用和内存带宽分别为张量核 19.5TFLOPS 和 HBM2e 1.935TB/sec 。英特尔的 KNL 7250 是 Nurion 的 CPU,它是 KISTI 的第 5 台超级核算机。它的核算功用和内存带宽分别为 3.072TFLOPS 和 490GB/sec 的 MCDRAM(多通道 DRAM)。咱们注意到,超级核算机的处理器广泛运用 HBM 等高带宽内存。表 2 总结了这些处理器的核算功用、内存带宽和 AIO。运用高带宽内存后,代表性处理器的 AIO 规模束缚在 3 到 10 之间。
参阅资料
- 软件测验精品书本文档下载继续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文触及的python测验开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书本下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书本下载 https://www.cnblogs.com/testing-/p/17438558.html
STREAM、HPCG 和 HPL 基准
HPCG 和 HPL 基准程序是衡量超级核算机功用的参阅。STREAM 基准程序丈量超级核算机的内存带宽。HPCG 的稀少量据核算需求主存储器的悉数内存带宽,而悉数核算功用的一小部分需求主存储器的悉数内存带宽。HPL 的密布数据核算需求比内存读/写速度更快的核算功用。咱们在体系上运转基准程序,以取得体系主内存的实践带宽,以及 HPCG 的低人工智能和 HPL 的高人工智能下的核算功用。咱们能够依据丈量成果制作修改后的房顶线斜率图。基准(STREAM、HPCG、HPL)装置 Arm 节点需求 armclang 和 armpl,X86 节点需求 icc 和 MKL(数学内核库)。咱们装置了相关的编译器、库和 MPI(音讯传递接口),以便并行运转多进程。STREAM、HPCG 和 HPC 基准已装置,并在 MPI 装置后运转。
STREAM 基准
STREAM 基准经过仿制、缩放、加法和三元组 4 个核算功用来丈量内存带宽。STREAM 需求存储 3 个向量。咱们将向量巨细恰当设置为大于 L3 缓存巨细。一个向量的巨细在编译条件中界说。基准运转需求线程数而不是进程数来取得 STREAM 基准成果。STREAM 基准成果在 ARM 节点为 100GB/s,在 X86 节点为 120GB/s,低于每个节点峰值内存带宽的 171GB/s 和153.6GB/s。
值得注意的是,两个坐标轴都是对数刻度,功用距离或许比看上去的要大。ARM 节点与抱负带宽的经历带宽比为 58.4%,低于 X86 节点的 78.1%。”
- HPCG 基准测验
HPCG 基准测验有四个子程序,分别是点乘 (DDOT)、两份额向量加法 (WAXPBY)、稀少矩阵-向量乘法 (SpMV) 和多网格矩阵 (MG)。基准成果还显现了 STREAM 的内存带宽。本域维度 nx、ny 和 nz 以及进程维度 nxp、nyp 和 nzp 由 hpcg.dat 和 mpirun 指令参数界说。矩阵的行数由 nxnxp + nynyp+nz*nzp,矩阵的非零数约为矩阵行数的 27 倍。在参数 OMP NUM THREADS=1 的情况下,咱们设置进程数运转基准。
-
DDOT 函数有两个长度为 N 的向量输入和一个标量输出,核算操作有 N 次乘法和加法。因而,DDOT 的人工智能为 2N/(28*N+1),其间 8 是双精度数据的字节数。AI 的近似值为 0.125。
-
WAXPBY 有两个向量输入和一个向量输出,向量长度为 N,核算次数为 2N 次乘法和 N 次加法。WAXPBY 的人工智能为 3N/(38*N)=0.125
-
SpMV 有四个输入:一个长度为 Nsp 的稀少矩阵、一个长度为 N 的矢量和一个长度为 N 的行指针,以及一个长度为 N 的矢量输出。算术运算次数为 Nsp 加法和乘法。SpMV 的 AI 上限为 2NSP/(8N+8N+4N+8NSP)≈0.25,其间 8 个字节为双精度数据字节,4 个字节为整数精度行指针字节。在 HPCG 基准中,Nsp 约为 N 的 27 倍。
HPCG 基准显现了 DDOT、WAXPBY、SpMV 和 MG 的核算功用随进程数添加而添加的向量和矩阵巨细。ARM 节点的 HPCG 均匀核算功用分别为 7.5GFLOPS、11GFLOPS 和 17.6GFLOP。X86 节点 HPCG 的均匀核算功用分别为 8GFLOPS、10.5GFLOPS 和 17GFLOPS。HPCG 基准成果:
HPCG AI 小于 0.25,HPCG 核算功用小于节点峰值核算功用的 1.5%,这提醒了内存束缚的特性。
HPL 基准测验
HPL 基准测验的功用是运用 LU(下和上)分化算法求解矩阵核算。经过随机生成一个矩阵(A)和一个解向量(x)就能经过线性方程得到另一个向量 y:y=Ax。为了并行处理 HPL,应将原始矩阵 A 分化成许多较小的矩阵。MPI 将子矩阵分配给特定的处理器,然后得到部分矩阵解。
- DGEMM 的人工智能与 HPL 的人工智能适当[9]。DGEMM 包含矩阵-矩阵乘法、标量-矩阵乘法和二乘加法。DGEMM 的数据读写量约为 4N2,输入 3 个矩阵,输出 1 个矩阵。矩阵乘法和加法的运算量约为 N3。DGEMM 的人工智能约为 2N3/32N2=N/16。在 NB=256 时,DGEMM 的人工智能约为 16。
矩阵设置的参数有 N、NB、P 和 Q,分别是矩阵巨细、子矩阵巨细、子矩阵的行和列处理器分配。最佳 N 值为 α8N2 字节,其间 α 约占总主内存的 85%的存储空间。已知最佳 NB 在 32 到 256 之间 。P 和 Q 是满意 NP=PQ 的少量调集(NP 是节点的处理器数量)。经过设置 N、NB、P 和 Q,咱们运转 HPL 以取得节点的核算功用。N 为 16 万,取自节点 256GB 的主内存巨细。ARM 节点的 NB 分别为 100、200、300,X86 节点的 NB 分别为 100、250、500。
ARM (左)和 X86 (右)节点的 HPL 基准成果 ARM 和 X86 sever 分别为 56 和 28。P, Q 对的调集为 (7,8)、(4,14)、(2,28)、(1,56)、(4,7)、(2,14)、(1,28) 。HPL 基准成果显现,最佳 NB 分别为 250 和 200,ARM 和 X86 节点的最佳 P、Q 对分别为 7,8 和 4,7。ARM 和 X86 节点的最大核算功用分别为 680GFLOPS 和 980GFLOPS。ARM 节点和 X86 节点的功用功率比分别为 70% 和 85%。
HPL 在 AI 15.6 和 12.5 时的核算功用挨近节点的峰值功用。蓝色房顶线代表 ARM 节点,赤色房顶线代表 X86 节点。HPCG 基准成果的 AI 小于 0.25,而 HPL 基准成果约为 12.5。因而,HPCG 基准是内存绑定的,HPL 是核算绑定的。
总结与后续作业
咱们运转了 STREAM、HPCG 和 HPL 三个基准,以取得实践内存带宽、内存束缚和核算束缚的核算功用。ARM 和 X86 节点的基准测验成果取决于编译器和库。当节点在特定处理器编译器和库中运转时,会取得更好的核算功用。ARM 节点在运用 armclang 编译器和 armpl 库时运转得更好,X86 节点在运用 icc 编译器和 MKL 库时运转得更好。依据 HPL 的最佳 NB,峰值功用和峰值内存带宽的最佳 AI(AIO) 在 2 到 16 Flops/Byte 之间。
这个数字与测验节点 CPU 的 AIO 规模以及超级核算机的代表性 CPU 和 GPU 相吻合。
假如咱们选用 HBM 或 MCDRAM 等宽带内存,内存绑定作业负载的核算功用应该会有所进步。此外,处理器内部有带宽较宽的高速缓冲存储器,因而咱们能够运用高速缓冲存储器进步核算功用,并运用分层内存模型更精确地预算核算功用。当今的超级核算机具有不计其数个核算节点,并经过高带宽互连完成更高的功用。在未来的研讨中,咱们或许会将当时的房顶线模型扩展到分层模型,并剖析通讯带宽与内存带宽的影响。