最新 NVIDIA HPC SDK 更新擴(kuò)展了可移植性,現(xiàn)在支持基于 Arm 的 AWS Graviton 3 processor 。在本文中,您將學(xué)習(xí)如何使用 NVIDIA 編譯器啟用可縮放矢量擴(kuò)展( Scalable Vector Extension , SVE )自動(dòng)矢量化,以最大限度地提高運(yùn)行在 AWS Graviton3 CPU 上的 HPC 應(yīng)用程序的性能。
HPC SDK NVIDIA 軟件包
NVIDIA HPC SDK 包括經(jīng)過驗(yàn)證的編譯器、庫(kù)和軟件工具,對(duì)于最大限度地提高開發(fā)人員生產(chǎn)力和為 CPU 、 CPU 或云構(gòu)建 HPC 應(yīng)用 至關(guān)重要。
NVIDIA HPC compilers 為 NVIDIA GPU 和多核 Arm 、 OpenPOWER 或 x86-64 CPU 啟用跨平臺(tái) C 、 C ++和 Fortran 編程。對(duì)于使用 OpenMP 、 OpenACC 和 CUDA 以 C 、 C ++或 Fortran 編寫的 HPC 建模和仿真應(yīng)用程序,這些都是理想的選擇。
例如,與 GCC 12.1 相比,使用 NVIDIA HPC 編譯器編譯時(shí), AWS Graviton 3 的 SPEC CPU ? 2017 基準(zhǔn)分?jǐn)?shù)預(yù)計(jì)增加 17% 。
編譯器還可以與優(yōu)化的 NVIDIA math libraries 、通信庫(kù)以及性能調(diào)優(yōu)和調(diào)試工具完全互操作。這些加速的數(shù)學(xué)庫(kù)最大限度地提高了普通 HPC 算法的性能,而優(yōu)化的通信庫(kù)支持基于標(biāo)準(zhǔn)的可擴(kuò)展系統(tǒng)編程。
集成的性能分析和調(diào)試工具簡(jiǎn)化了 HPC 應(yīng)用程序的移植和優(yōu)化,而容器化工具可以方便地在本地或云中部署。
臂和 AWS 重力 3
AWS Graviton3 于 2022 年 5 月推出,是 AWS 基于 Arm 的 CPU 。 Arm 體系結(jié)構(gòu)具有傳統(tǒng)的能效和對(duì)高內(nèi)存帶寬的支持,使其成為云和數(shù)據(jù)中心計(jì)算的理想選擇。 Amazon 報(bào)導(dǎo) :
Amazon EC2 C7g 實(shí)例由最新一代 AWS Graviton3 處理器提供支持,為計(jì)算密集型工作負(fù)載提供了 Amazon EC2 中最佳的性價(jià)比。 C7g 實(shí)例非常適合 HPC 、批處理、電子設(shè)計(jì)自動(dòng)化( EDA )、游戲、視頻編碼、科學(xué)建模、分布式分析、基于 CPU 的機(jī)器學(xué)習(xí)( ML )推理和廣告服務(wù)。與基于第六代 AWS Graviton2 的 C6g 實(shí)例相比,它們的性能提高了 25% 。
與 AWS Graviton2 相比, ANSYS 將 AWS Graviton3 的性能提高 35% 作為基準(zhǔn) 。一級(jí)方程式模擬速度也提高了 40% 。自推出 Arm Neoverse 產(chǎn)品線以來,基于 Arm 的 CPU 一直在提供重大創(chuàng)新和性能增強(qiáng),當(dāng)時(shí) Neoverses N1 核心 超過績(jī)效預(yù)期30% 。
與 Arm 支持新計(jì)算技術(shù)的歷史保持一致, AWS Graviton3 的特點(diǎn)是 DDR5 內(nèi)存和 SVE 到 Arm 體系結(jié)構(gòu)。
Amazon EC2 C7g 實(shí)例是云中第一個(gè)使用 DDR5 內(nèi)存的實(shí)例,與 DDR4 內(nèi)存相比,它提供了 50% 的內(nèi)存帶寬,從而實(shí)現(xiàn)了對(duì)內(nèi)存中數(shù)據(jù)的高速訪問。充分利用所有內(nèi)存帶寬的最佳方法是使用最新的矢量化技術(shù): Arm SVE 。
SVE 架構(gòu)
除了是第一個(gè)提供 DDR5 的云托管 CPU 之外, AWS Graviton3 也是第一個(gè)在云中使用 SVE 的。
SVE 首次引入富士通 A64FX CPU ,為 RIKEN Fugaku 超級(jí)計(jì)算機(jī)供電。當(dāng) Fugaku 推出時(shí),它打破了所有當(dāng)代 HPC CPU 基準(zhǔn),并在兩年內(nèi)自信地名列 TOP500 超級(jí)計(jì)算機(jī)榜首。
SVE 和高帶寬內(nèi)存是 A64FX 的主要設(shè)計(jì)特點(diǎn),是 HPC 的理想之選,而 AWS Graviton3 處理器中也有這兩個(gè)特點(diǎn)。
SVE 是 Arm 體系結(jié)構(gòu)的下一代 SIMD 擴(kuò)展。它可以使用 CPU 實(shí)現(xiàn)中的一系列可能值實(shí)現(xiàn)靈活的矢量長(zhǎng)度。矢量長(zhǎng)度可以從最小 128 位到最大 2048 位不等,增量為 128 位。
例如,富士通 A64FX 以 512 位實(shí)現(xiàn) SVE ,而 AWS Graviton3 以 256 位實(shí)現(xiàn)。與其他 SIMD 體系結(jié)構(gòu)不同,盡管硬件矢量位寬度不同,但相同的匯編代碼在兩個(gè) CPU 上運(yùn)行。這稱為矢量長(zhǎng)度無(wú)關(guān)( VLA )編程。
VLA 代碼具有高度的可移植性,可以使編譯器生成更好的匯編代碼。但是,如果編譯器知道目標(biāo) CPU 的硬件矢量位寬度,它可以針對(duì)特定的體系結(jié)構(gòu)進(jìn)行進(jìn)一步優(yōu)化。這是矢量長(zhǎng)度特定( VLS )編程。
SVE 對(duì) VLA 和 VLS 使用相同的匯編語(yǔ)言。唯一的區(qū)別是,編譯器在生成代碼時(shí)可以自由地對(duì)數(shù)據(jù)布局、循環(huán)跳閘計(jì)數(shù)和其他相關(guān)特性進(jìn)行附加斷言。這會(huì)產(chǎn)生高度優(yōu)化的、特定于目標(biāo)的代碼,從而充分利用 CPU 。
SVE 還引入了一系列功能強(qiáng)大的高級(jí)功能,非常適合 HPC 和 ML 應(yīng)用:
收集加載和分散存儲(chǔ)指令允許對(duì)結(jié)構(gòu)數(shù)組和其他非連續(xù)數(shù)據(jù)進(jìn)行矢量化操作。
推測(cè)性矢量化支持對(duì)包含控制流的字符串操作函數(shù)和循環(huán)進(jìn)行 SIMD 加速。
水平和序列化矢量操作有助于數(shù)據(jù)縮減,并有助于優(yōu)化處理大型數(shù)據(jù)集的循環(huán)。
SVE 不是 NEON 指令集的擴(kuò)展或替代,后者也可在 AWS Gravition3 中使用。 SVE 經(jīng)過重新設(shè)計(jì),以提高 HPC 和 ML 的數(shù)據(jù)并行性。
使用 NVIDIA HPC 編譯器最大限度地提高 Graviton3 性能
編譯器自動(dòng)矢量化是利用 SVE 的最簡(jiǎn)單方法之一, NVIDIA HPC 編譯器在 22.7 版本中添加了對(duì) SVE 自動(dòng)矢量化的支持。
為了最大限度地提高性能,編譯器執(zhí)行分析以確定要生成的 SIMD 指令。 SVE 自動(dòng)矢量化使用目標(biāo)特定信息,根據(jù) CPU 核的矢量位寬度生成高度優(yōu)化的矢量長(zhǎng)度特定( VLS )代碼。
要啟用 SVE 自動(dòng)矢量化,請(qǐng)為目標(biāo) CPU 指定適當(dāng)?shù)?-tp 體系結(jié)構(gòu)標(biāo)志: -tp = neoverse-v1 。如果不指定 -tp 選項(xiàng),則假定應(yīng)用程序?qū)⒃诰幾g它的同一系統(tǒng)上執(zhí)行。
在 Graviton3 上使用 NVIDIA HPC 編譯器編譯的應(yīng)用程序會(huì)自動(dòng)充分利用 CPU 的 256 位 SVE SIMD 單元。 Graviton3 還向后兼容 -tp = neoverse-n1 選項(xiàng),但僅在其 128 位 NEON SIMD 單元上運(yùn)行矢量代碼。
NVIDIA HPC SDK 入門
NVIDIA HPC SDK 提供了一個(gè)全面且經(jīng)驗(yàn)證的軟件堆棧。它使 HPC 開發(fā)人員能夠在 NVIDIA 平臺(tái)和 AWS Graviton3 等高性能系統(tǒng)上創(chuàng)建和優(yōu)化應(yīng)用程序性能。
通過提供廣泛的編程模型、庫(kù)和開發(fā)工具,可以針對(duì)專用硬件高效開發(fā)應(yīng)用程序,從而在 NVIDIA GPU 和支持 SVE 的處理器(如 AWS Graviton3 )等系統(tǒng)中實(shí)現(xiàn)最先進(jìn)的性能。
關(guān)于作者
John Linford 博士是 NVIDIA 的首席技術(shù)經(jīng)理,專注于開發(fā) CPU 軟件生態(tài)系統(tǒng)。 John 此前曾擔(dān)任 HPC 工程部主任。 John 擁有近二十年的一線 HPC 應(yīng)用、系統(tǒng)和優(yōu)化經(jīng)驗(yàn),尤其喜歡與新興技術(shù)和極端規(guī)模的系統(tǒng)合作。約翰的總部設(shè)在德克薩斯州奧斯汀。
Scott Manley 是一名編譯器優(yōu)化工程師,也是 NVIDIA HPC SDK 的自動(dòng)矢量化主管。 Scott 的整個(gè)職業(yè)生涯都致力于矢量化和 HPC 編譯器。他曾在 Cray 編譯環(huán)境( CCE )工作,并在都柏林三一學(xué)院獲得博士學(xué)位,主要致力于優(yōu)化 SIMD ISAs 的使用。
Graham Lopez 在 NVIDIA 領(lǐng)導(dǎo)高性能計(jì)算編譯器的產(chǎn)品管理。此前,他曾與應(yīng)用程序合作,以在當(dāng)前和未來的領(lǐng)先級(jí)計(jì)算設(shè)施上大規(guī)模運(yùn)行。除了直接參與 HPC 應(yīng)用程序之外, Graham 還發(fā)表了編程模型、計(jì)算科學(xué)、異構(gòu)系統(tǒng)的應(yīng)用程序加速和基準(zhǔn)測(cè)試以及低級(jí)通信 API 等領(lǐng)域的研究成果。格雷厄姆過去三年一直是 ISO C ++標(biāo)準(zhǔn)委員會(huì)的成員。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4935瀏覽量
102812 -
編譯器
+關(guān)注
關(guān)注
1文章
1618瀏覽量
49048
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論