Garima Kochhar、Deepthi Cherlopalle、Joshua Weage。HPC 和 AI 创新实验室,2019 年 10 月
不适用
在当今的 HPC 世界中,AMD 代号为 Rome 的最新一代 EPYC 处理器几乎不需要介绍。 最近几个月,我们一直在 HPC 和 AI 创新实验室 评估基于 Rome 的系统,Dell Technologies 最近发布了
支持这种处理器体系结构的服务器。Rome 系列的第一篇博客将讨论 Rome 处理器体系结构,如何针对 HPC 性能进行调整,并展示初始微基准性能。后续博客将介绍 CFD、CAE、分子动力学、天气模拟和其他应用程序领域的应用程序性能。
Rome 是 AMD 的第二代 EPYC CPU,刷新了其第一代 Naples。我们去年 在这个博客 中讨论了那不勒斯。
那不勒斯和罗马之间有利于 HPC 的最大体系结构差异之一是 Rome 中的新 IO 芯片。在 Rome,每个处理器都是一个多芯片封装,由最多 9 个 小芯片 组成,如图 1 所示。有一个中央 14nm IO 芯片,包含所有 IO 和内存功能 - 例如内存控制器、插槽内和插槽间连接的 Infinity 结构链路,以及 PCI-e。每个插槽有八个内存控制器,支持八个内存通道,以 3200 MT/s 的速度运行 DDR4。单插槽服务器可支持多达 130 条 PCIe 4.0 通道。双插槽系统可支持多达 160 个 PCIe 4.0 通道。
(图 1Rome 多芯片封装,具有一个中央 IO 芯片和多达 8 核芯片)
中央 IO 芯片周围有多达 8 个 7nm 内核小芯片。核心芯片称为核心高速缓存芯片或 CCD。每个 CCD 都具有基于 Zen2 微体系结构的 CPU 核心、二级缓存和 32MB 三级缓存。CCD 本身有两个核心高速缓存复合体 (CCX),每个 CCX 最多有四个核心和 16MB 的 L3 高速缓存。图 2 显示了一个 CCX。
(图 2 具有四个核心和共享 16 MB L3 高速缓存的 CCX)
不同的 Rome CPU 型号具有不同的核心数量,
但都具有一个中央 IO 芯片。
顶端是 64 核 CPU 型号,例如 EPYC 7702。lstopo 输出显示该处理器每个插槽有 16 个 CCX,每个 CCX 有四个内核,如图 3 和 4 所示,因此每个插槽产生 64 个内核。每个 CCX 16MB L3,即每个 CCD 32MB L3,使此处理器总共具有 256MB L3 高速缓存。但请注意,Rome 中的总 L3 高速缓存并非由所有核心共享。每个 CCX 中的 16MB L3 高速缓存是独立的,仅由 CCX 中的核心共享,如图 2 所示。
像 EPYC 7402 这样的 24 核 CPU 具有 128MB L3 高速缓存。图 3 和图 4 中的 lstopo 输出表明,该模型每个 CCX 有 3 个内核,每个插槽有 8 个 CCX。
(图 3 和 4 64 核和 24 核 CPU 的 lstopo 输出)
无论 CCD 的数量如何,每个 Rome 处理器在逻辑上被划分为四个 象限 ,其中 CCD 尽可能均匀地分布在象限中,每个象限中有两个内存通道。中央 IO 芯片可以视为在逻辑上支持插槽的四个象限。
与在那不勒斯测量的内存延迟相比,Rome 中的中央 IO 芯片有助于 改善内存延迟 。此外,它还允许将 CPU 配置为单个 NUMA 域,从而实现插槽中所有内核的统一内存访问。这将在下面解释。
Rome 处理器中的四个逻辑象限允许将 CPU 划分为不同的 NUMA 域。此设置称为 每插槽 NUMA 或 NPS。
如果可用,建议将 NPS4 用于 HPC,因为它有望提供最佳内存带宽和最低内存延迟,而且我们的应用程序往往能够识别 NUMA。如果 NPS4 不可用,我们建议使用 CPU 型号支持的最高 NPS - NPS2,甚至 NPS1。
鉴于基于 Rome 的平台上提供众多 NUMA 选项,PowerEdge BIOS 允许在 MADT 枚举下使用两种不同的核心枚举方法。线性枚举按顺序对核心进行编号,填充一个 CCX、CCD 插槽,然后移动到下一个插槽。在 32c CPU 上,核心 0 至 31 位于第一个插槽上,核心 32-63 位于第二个插槽上。轮询枚举对 NUMA 区域中的核心进行编号。在这种情况下,偶数编号的核心将位于第一个插槽上,奇数编号的核心位于第二个插槽上。为简单起见,建议对 HPC 使用线性枚举。有关在 NPS4 中配置的双插槽 64c 服务器上的线性核心枚举示例,请参见图 5。在图中,每个包含四个核心的盒子是一个 CCX,每组相邻的八个核心是一个 CCD。
(图 5 双插槽系统上的线性内核枚举,每个插槽 64c,8 CCD CPU 型号上的 NPS4 配置)
另一个特定于 Rome 的 BIOS 选项称为 首选 IO 设备。这是 InfiniBand 带宽和消息速率的重要调整旋钮。它允许平台优先处理一个 IO 设备的流量。此选项在单插槽和双插槽 Rome 平台上可用,并且必须在 BIOS 菜单中将平台中的 InfiniBand 设备选为 首选 设备,以便在所有 CPU 核心都处于活动状态时实现完整消息速率。
与 Naples类似,Rome 也支持超线程或 逻辑处理器。对于 HPC,我们禁用此选项,但某些应用程序可以通过启用逻辑处理器而受益。请关注我们关于分子动力学应用研究的后续博客。
与那不勒斯类似,罗马也允许 CCX 作为 NUMA 域。此选项将每个 CCX 公开为 NUMA 节点。在具有双插槽 CPU 且每个 CPU 有 16 个 CCX 的系统上,此设置将公开 32 个 NUMA 域。在此示例中,每个插槽具有 8 个 CCD,即 16 个 CCX。每个 CCX 都可以启用为其自己的 NUMA 域,每个插槽提供 16 个 NUMA 节点,在双插槽系统中提供 32 个 NUMA 节点。对于 HPC,我们建议将 “CCX as NUMA Domain ”保留默认选项 “disabled”。启用此选项有望帮助虚拟化环境。
与 Naples 类似,Rome 允许将系统设置为性能决策或功耗决策模式。在 性能确定性中,系统以 CPU 型号的预期频率运行,从而减少多个服务器之间的可变性。在 功率决定论中,系统以 CPU 型号的最大可用 TDP 运行。这放大了制造过程中部件之间的差异,使某些服务器比其他服务器更快。所有服务器都可能消耗 CPU 的最大额定功率,从而确定功耗,但允许在多个服务器之间存在一些性能差异。
正如您对 PowerEdge 平台所期望的那样,BIOS 具有一个名为 System Profile 的元选项。选择 性能优化 的系统配置文件将启用睿频加速模式,禁用 C 状态,并将确定性滑块设置为功率确定性,从而优化性能。
我们的许多读者可能已经直接跳到这一部分,所以我们将直接进入。
在 HPC 和 AI 创新实验室中,我们构建了一个包含 64 台服务器的位于罗马的集群,我们称之为 Minerva。除了同构 Minerva 集群之外,我们还能够评估其他一些 Rome CPU 样本。我们的测试平台如表 1 和表 2 中所述。
(表 1 本研究中评估的 Rome CPU 型号)
CPU | 每个插槽的核心数 | Config | 基础频率 | TDP |
---|---|---|---|---|
7702 | 64分 | 每个 CCX 4c | 2.0千兆赫 | 200W |
7502 | 32分 | 每个 CCX 4c | 2.5 GHz | 180 W |
7452 | 32分 | 每个 CCX 4c | 2.35千兆赫 | 155 W |
7402 | 24分 | 每个 CCX 3c | 2.8 GHz | 180 W |
(表 2 测试台)
组件 | 详细信息 |
---|---|
服务器 | PowerEdge C6525 |
处理器 | 如表 1 所示双插槽 |
内存 | 256 GB,16 个 16 GB,3200 MT/s DDR4 |
互连 | ConnectX-6 Mellanox Infini 频带 HDR100 |
操作系统 | Red Hat Enterprise Linux 7.6 |
内核 | 3.10.0.957.27.2.e17.x86_64 |
磁盘 | 240 GB SATA SSD M.2 模块 |
基于 Rome 的内存带宽测试如图 6 所示,这些测试在 NPS4 模式下运行。我们在双路 PowerEdge C6525 上测量了 ~270-300 GB/s 的内存带宽,当时使用服务器中的所有核心,包括表 1 中列出的四种 CPU 型号。当每个 CCX 仅使用一个核心时,系统内存带宽比使用所有核心测得的带宽高 ~9-17%。
大多数 HPC 工作负载要么完全订阅系统中的所有核心,要么 HPC 中心在高吞吐量模式下运行,每台服务器上有多个作业。因此,全核内存带宽更准确地表示了系统的内存带宽和每核内存带宽功能。
图 6 还绘制了在上一代 EPYC Naples 平台上测得的内存带宽,该平台也支持每个插槽 8 个内存通道,但运行速度为 2667 MT/s。Rome 平台提供的总内存带宽比 Naples 高 5% 到 19%,这主要是由于更快的 3200 MT/s 内存。即使每个插槽 64c,Rome 系统也可以提供超过 2 GB/s/核心的带宽。
通过比较不同的 NPS 配置,NPS4 测得的内存带宽比 NPS1 高 ~13%,如图 7 所示。
(图 6 双插槽 NPS4 STREAM Triad 内存带宽)
(图 7 NPS1、NPS2 和 NPS 4 内存带宽)
图 8 绘制了单向和双向测试的单核 InfiniBand 带宽。测试台使用以 100 Gbps 运行的 HDR100,图表显示了这些测试的预期线速性能。
图 8InfiniBand 带宽(单核)
图 9InfiniBand 消息速率(所有核心)
接下来,使用被测两台服务器套接字上的所有内核进行消息速率测试。当在 BIOS 中启用首选 IO 并将 ConnectX-6 HDR100 适配器配置为首选设备时,全核消息速率明显高于未启用首选 IO 时,如图 9 所示。这说明了在针对 HPC 进行调整时此 BIOS 选项的重要性,尤其是针对多节点应用程序可扩展性。
Rome 微架构可以淘汰 16 个 DP FLOP/周期,是 Naples 8 个 FLOPS/周期的两倍。这使得 Rome 的理论峰值 FLOPS 是那不勒斯的 4 倍,增强的浮点能力是 2 倍,内核数是那不勒斯的两倍(64c 与 32c)。图 10 绘制了我们测试的四个 Rome CPU 型号的测量 HPL 结果,以及我们之前在基于 Naples 的系统中的结果。Rome HPL 效率以图表上条形上方的百分比值表示,对于较低的 TDP CPU 型号,此值更高。
测试在功耗确定性模式下运行,在 64 台相同配置的服务器上测得性能增量为 ~5%,因此此处的结果处于该性能区间内。
(图 10 NPS4 中的单服务器 HPL)
接下来执行多节点 HPL 测试,这些结果如图 11 所示。在 64 节点规模下,EPYC 7452 的 HPL 效率保持在 90% 以上,但效率从 102% 下降到 97%,然后回升到 99% 需要进一步评估
(图 11 多节点 HPL,在 HDR100 InfiniBand 上双插槽 EPYC 7452)
对基于 Rome 的服务器进行的初步性能研究表明,我们的第一组 HPC 基准测试的预期性能。在为获得最佳性能进行配置时,BIOS 调整非常重要,我们的 BIOS HPC 工作负载配置文件中提供了调整选项,这些选项可在工厂中配置,也可以使用 Dell EMC Systems Management 实用程序进行设置。
HPC 和 AI 创新实验室有一个全新的位于罗马的 PowerEdge 群集(含 64 台服务器),名为 Minerva。请关注此空间,了解后续博客,这些博客介绍了我们新的 Minerva 群集上的应用程序性能研究。