0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用AWS Graviton3上的SVE加速NVIDIA HPC软件

星星科技指导员 来源:NVIDIA 作者:NVIDIA 2022-10-11 11:48 次阅读

最新 NVIDIA HPC SDK 更新扩展了可移植性,现在支持基于 Arm 的 AWS Graviton 3 processor 。在本文中,您将学习如何使用 NVIDIA 编译器启用可缩放矢量扩展( Scalable Vector Extension , SVE )自动矢量化,以最大限度地提高运行在 AWS Graviton3 CPU 上的 HPC 应用程序的性能。

HPC SDK NVIDIA 软件包

NVIDIA HPC SDK 包括经过验证的编译器、库和软件工具,对于最大限度地提高开发人员生产力和为 CPU 、 CPU 或云构建 HPC 应用 至关重要。

NVIDIA HPC compilers 为 NVIDIA GPU 和多核 Arm 、 OpenPOWER 或 x86-64 CPU 启用跨平台 C 、 C ++和 Fortran 编程。对于使用 OpenMP 、 OpenACC 和 CUDA 以 C 、 C ++或 Fortran 编写的 HPC 建模和仿真应用程序,这些都是理想的选择。

例如,与 GCC 12.1 相比,使用 NVIDIA HPC 编译器编译时, AWS Graviton 3 的 SPEC CPU ® 2017 基准分数预计增加 17% 。

编译器还可以与优化的 NVIDIA math libraries 、通信库以及性能调优和调试工具完全互操作。这些加速的数学库最大限度地提高了普通 HPC 算法的性能,而优化的通信库支持基于标准的可扩展系统编程。

集成的性能分析和调试工具简化了 HPC 应用程序的移植和优化,而容器化工具可以方便地在本地或云中部署。

臂和 AWS 重力 3

AWS Graviton3 于 2022 年 5 月推出,是 AWS 基于 Arm 的 CPU 。 Arm 体系结构具有传统的能效和对高内存带宽的支持,使其成为云和数据中心计算的理想选择。 Amazon 报导 :

Amazon EC2 C7g 实例由最新一代 AWS Graviton3 处理器提供支持,为计算密集型工作负载提供了 Amazon EC2 中最佳的性价比。 C7g 实例非常适合 HPC 、批处理、电子设计自动化( EDA )、游戏、视频编码、科学建模、分布式分析、基于 CPU 的机器学习( ML )推理和广告服务。与基于第六代 AWS Graviton2 的 C6g 实例相比,它们的性能提高了 25% 。

与 AWS Graviton2 相比, ANSYS 将 AWS Graviton3 的性能提高 35% 作为基准 。一级方程式模拟速度也提高了 40% 。自推出 Arm Neoverse 产品线以来,基于 Arm 的 CPU 一直在提供重大创新和性能增强,当时 Neoverses N1 核心 超过绩效预期30% 。

与 Arm 支持新计算技术的历史保持一致, AWS Graviton3 的特点是 DDR5 内存和 SVE 到 Arm 体系结构。

Amazon EC2 C7g 实例是云中第一个使用 DDR5 内存的实例,与 DDR4 内存相比,它提供了 50% 的内存带宽,从而实现了对内存中数据的高速访问。充分利用所有内存带宽的最佳方法是使用最新的矢量化技术: Arm SVE 。

SVE 架构

除了是第一个提供 DDR5 的云托管 CPU 之外, AWS Graviton3 也是第一个在云中使用 SVE 的。

SVE 首次引入富士通 A64FX CPU ,为 RIKEN Fugaku 超级计算机供电。当 Fugaku 推出时,它打破了所有当代 HPC CPU 基准,并在两年内自信地名列 TOP500 超级计算机榜首。

SVE 和高带宽内存是 A64FX 的主要设计特点,是 HPC 的理想之选,而 AWS Graviton3 处理器中也有这两个特点。

SVE 是 Arm 体系结构的下一代 SIMD 扩展。它可以使用 CPU 实现中的一系列可能值实现灵活的矢量长度。矢量长度可以从最小 128 位到最大 2048 位不等,增量为 128 位。

例如,富士通 A64FX 以 512 位实现 SVE ,而 AWS Graviton3 以 256 位实现。与其他 SIMD 体系结构不同,尽管硬件矢量位宽度不同,但相同的汇编代码在两个 CPU 上运行。这称为矢量长度无关( VLA )编程。

VLA 代码具有高度的可移植性,可以使编译器生成更好的汇编代码。但是,如果编译器知道目标 CPU 的硬件矢量位宽度,它可以针对特定的体系结构进行进一步优化。这是矢量长度特定( VLS )编程。

SVE 对 VLA 和 VLS 使用相同的汇编语言。唯一的区别是,编译器在生成代码时可以自由地对数据布局、循环跳闸计数和其他相关特性进行附加断言。这会产生高度优化的、特定于目标的代码,从而充分利用 CPU 。

SVE 还引入了一系列功能强大的高级功能,非常适合 HPC 和 ML 应用:

收集加载和分散存储指令允许对结构数组和其他非连续数据进行矢量化操作。

推测性矢量化支持对包含控制流的字符串操作函数和循环进行 SIMD 加速。

水平和序列化矢量操作有助于数据缩减,并有助于优化处理大型数据集的循环。

SVE 不是 NEON 指令集的扩展或替代,后者也可在 AWS Gravition3 中使用。 SVE 经过重新设计,以提高 HPC 和 ML 的数据并行性。

使用 NVIDIA HPC 编译器最大限度地提高 Graviton3 性能

编译器自动矢量化是利用 SVE 的最简单方法之一, NVIDIA HPC 编译器在 22.7 版本中添加了对 SVE 自动矢量化的支持。

为了最大限度地提高性能,编译器执行分析以确定要生成的 SIMD 指令。 SVE 自动矢量化使用目标特定信息,根据 CPU 核的矢量位宽度生成高度优化的矢量长度特定( VLS )代码。

要启用 SVE 自动矢量化,请为目标 CPU 指定适当的 -tp 体系结构标志: -tp = neoverse-v1 。如果不指定 -tp 选项,则假定应用程序将在编译它的同一系统上执行。

在 Graviton3 上使用 NVIDIA HPC 编译器编译的应用程序会自动充分利用 CPU 的 256 位 SVE SIMD 单元。 Graviton3 还向后兼容 -tp = neoverse-n1 选项,但仅在其 128 位 NEON SIMD 单元上运行矢量代码。

NVIDIA HPC SDK 入门

NVIDIA HPC SDK 提供了一个全面且经验证的软件堆栈。它使 HPC 开发人员能够在 NVIDIA 平台和 AWS Graviton3 等高性能系统上创建和优化应用程序性能。

通过提供广泛的编程模型、库和开发工具,可以针对专用硬件高效开发应用程序,从而在 NVIDIA GPU 和支持 SVE 的处理器(如 AWS Graviton3 )等系统中实现最先进的性能。

关于作者

John Linford 博士是 NVIDIA 的首席技术经理,专注于开发 CPU 软件生态系统。 John 此前曾担任 HPC 工程部主任。 John 拥有近二十年的一线 HPC 应用、系统和优化经验,尤其喜欢与新兴技术和极端规模的系统合作。约翰的总部设在德克萨斯州奥斯汀。

Scott Manley 是一名编译器优化工程师,也是 NVIDIA HPC SDK 的自动矢量化主管。 Scott 的整个职业生涯都致力于矢量化和 HPC 编译器。他曾在 Cray 编译环境( CCE )工作,并在都柏林三一学院获得博士学位,主要致力于优化 SIMD ISAs 的使用。

Graham Lopez 在 NVIDIA 领导高性能计算编译器的产品管理。此前,他曾与应用程序合作,以在当前和未来的领先级计算设施上大规模运行。除了直接参与 HPC 应用程序之外, Graham 还发表了编程模型、计算科学、异构系统的应用程序加速和基准测试以及低级通信 API 等领域的研究成果。格雷厄姆过去三年一直是 ISO C ++标准委员会的成员。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4598

    浏览量

    101768
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48638
收藏 人收藏

    评论

    相关推荐

    AWS成为第一个提供NVIDIA GH200 Grace Hopper超级芯片的提供商

    2023年的AWS re:Invent大会上,AWSNVIDIA宣布AWS将成为第一个提供NVIDIA GH200 Grace Hoppe
    的头像 发表于 11-30 09:24 331次阅读
    <b class='flag-5'>AWS</b>成为第一个提供<b class='flag-5'>NVIDIA</b> GH200 Grace Hopper超级芯片的提供商

    西门子携手Arm和AWS提供PAVE360数字孪生解决方案

    西门子数字化工业软件携手Arm和AWS,在AWS云服务中提供PAVE360数字孪生解决方案,利用云端汽车仿真帮助下一代软件定义汽车 (SDV
    的头像 发表于 11-28 11:09 1161次阅读

    加速SDV诊断开发用例的HPC实施方案解析

    软件定义车辆的快速转变;车载/离线诊断工具和用于HPC实现的加速器; 现有的挑战和需求正在推动E/E体系结构的演进。连接的、软件定义的车辆的需求
    的头像 发表于 11-21 11:27 232次阅读
    <b class='flag-5'>加速</b>SDV诊断开发用例的<b class='flag-5'>HPC</b>实施方案解析

    Commvault加入AWS ISV工作负载迁移计划(WMP)

    中获得多项称号。作为AWS服务就绪计划的一部分,Commvault软件凭借其备份和恢复解决方案通过验证,成为了AWS Graviton Ready、A
    的头像 发表于 09-08 16:33 373次阅读

    DolphinDB加入NVIDIA初创加速计划

    近日,DolphinDB 正式加入“NVIDIA 初创加速计划(NVIDIA Inception)”,该项目是 NVIDIA 提供的一个加速
    的头像 发表于 08-27 01:08 656次阅读

    移植和优化Arm SVE文档的HPC应用程序

    2048个128位宽的单位。 CPU设计者可以通过选择最适合CPU目标工作负载的矢量寄存器大小来实现扩展。 SVE的设计保证了相同的程序可以在指令集体系结构的不同实现运行,而不需要重新编译代码。 许多指令
    发表于 08-24 07:46

    ARMv8-A TrustZone软件对实施SVE的系统的影响

    本文档介绍ARMv8-A[ARMv8]的可伸缩向量扩展[SVE]对在应用程序处理器以安全状态执行的软件的影响。 本文档考虑了部署现有ARMv8-A TrustZone软件对实施
    发表于 08-23 06:17

    SVE编程示例

    ARMv8-A高级SIMD指令集在64位或128位的固定长度向量运行。 对于处理大量数据的行业应用,例如计算机视觉和机器学习、服务器、数据分析,人们已经认识到,运行较长向量长度的处理器可能更适合
    发表于 08-22 06:29

    SVE优化指南

    。 Arm 现有的高级 SIMD 指令集。 SVE 的应用包括机器学习( ML)、高性能计算(HPC)、数据分析以及可能的任何可计算约束软件。 请参看 SVE 指南的导言, 以便更完整
    发表于 08-17 08:06

    Arm Cortex‑X3核心加密扩展技术参考手册

    SHA2-512、SHA3、SM3和SM4。 SVE2-AES、SVE2-SHA3SVE2-SM扩展添加了A64指令,以
    发表于 08-17 06:25

    ARM编译器可扩展矢量扩展用户指南

    ARM编译器工具链支持为ARMv8-A AArch64实现可伸缩向量扩展(SVE)EAC(00rel1)的目标。 SVE是针对AArch64的下一代SIMD指令集,它为高性能计算(HPC)引入了以下
    发表于 08-16 06:51

    针对ARM SVE 4.0版移植和优化HPC应用程序文档

    介绍如何将高性能计算(HPC)应用程序移植到基于SVE的Arm硬件,如何在移植后开始优化应用程序,以及Arm提供了哪些工具可以提供帮助。
    发表于 08-10 07:11

    Arm编译器可扩展矢量扩展用户指导

    HPC): •可扩展的矢量长度。 •每条车道预测。 •收集负载并分散存储。 •容错推测矢量化。 •水平和串行矢量运算。 此版本的Arm编译器工具链允许您: •汇编包含SVE指令的源代码。 •分解
    发表于 08-08 06:34

    使用AWS Greengras和Lambdas 进行推论样品的情况

    aws_cloud_to_edge_pipeline/ 3. 更改可执行的边缘软件文件的权限。 chmod 755 edgesoftware 4. 在下面运行命令以安装使用大小写。 ./edgesoftware insta
    发表于 08-03 08:48

    SVE编码和霓虹灯编码之间的区别

    SIMD扩展。它不是Neon的扩展,而是针对HPC工作负载开发的一组新的矢量指令。简而言之,SVE可以实现循环的矢量化,而使用Neon进行矢量化是不可能的,或者是没有好处的。重要的是,与其他SIMD
    发表于 08-02 18:35