NVIDIA 宣布發(fā)布 Early Access ( EA )的 cuFFTMp 。 cuFFTMp 是 cuFFT 的多節(jié)點(diǎn)、多進(jìn)程擴(kuò)展,使科學(xué)家和工程師能夠在 exascale 平臺(tái)上解決具有挑戰(zhàn)性的問題。
FFTs ( Fast Fourier Transforms )廣泛應(yīng)用于分子動(dòng)力學(xué)、信號(hào)處理、計(jì)算流體力學(xué)( CFD )、無線多媒體和機(jī)器學(xué)習(xí)等領(lǐng)域。有了 cuFFTMp , NVIDIA 現(xiàn)在不僅支持單個(gè)系統(tǒng)中的多個(gè) GPU ,還支持跨多個(gè)節(jié)點(diǎn)的多個(gè) GPU 。
圖 1 顯示, cuFFTMp 達(dá)到 1.8 PFlop / s 以上,超過該規(guī)模轉(zhuǎn)換峰值機(jī)器帶寬的 70% 。

圖 1 。 Selene cluster 上的 cuFFTMp (弱伸縮)性能
在圖 2 中,問題大小保持不變,但 GPU 的數(shù)量從 8 增加到 2048 ??梢钥吹剑?cuFFTMp 成功地?cái)U(kuò)展了問題,將單精度時(shí)間從 8 GPU ( 1 個(gè)節(jié)點(diǎn))的 78ms 提高到 2048 GPU ( 256 個(gè)節(jié)點(diǎn))的 4ms 。

圖 2 。 Selene cluster 上的 cuFFTMp (強(qiáng)伸縮)性能
圖 1 和圖 2 在 Selene 集群上運(yùn)行。 Selene 由 NVIDIA DGXA100 和 NVSwitch ( 300 GB / s / GPU ,雙向)以及 Mellanox Infiniband HDR ( 200 GB / s / node ,雙向)組成,每個(gè)節(jié)點(diǎn) 8xA100-80GB 。使用 nvcr 提供的 CUDA 11.4 和 NVIDIA HPC SDK 21.9 Docker 容器 進(jìn)行測(cè)試。 io / NVIDIA / nvhpc:21.9-runtime-cuda11 。 4-ubuntu20 。 04.GPU 應(yīng)用程序時(shí)鐘設(shè)置為最大值。
性能和可擴(kuò)展性
由于MPI_Alltoallv類型的全局集體通信,分布式 3D FFT 以通信受限而聞名。MPI_Alltoallv是分布式 FFT 的主要瓶頸,因?yàn)榕c高計(jì)算能力相比,節(jié)點(diǎn)間帶寬較低,而且all_to_all類型通信的加速器感知 MPI 實(shí)現(xiàn)在質(zhì)量上各不相同。
cuFFTMp 使用 NVSHMEM ,這是一個(gè)基于 OpenSHMEM 標(biāo)準(zhǔn)的新通信庫(kù),通過提供內(nèi)核啟動(dòng)的通信,為 NVIDIA GPU 設(shè)計(jì)。 NVSHMEM 創(chuàng)建一個(gè)全局地址空間,其中包含集群中所有 GPU 的內(nèi)存。從 CUDA 內(nèi)核內(nèi)部執(zhí)行通信可以實(shí)現(xiàn)細(xì)粒度遠(yuǎn)程數(shù)據(jù)訪問,從而降低同步成本,并利用 GPU 中的大規(guī)模并行性來隱藏通信開銷。
通過使用 NVSHMEM , cuFFTMp 獨(dú)立于 MPI 實(shí)現(xiàn)的質(zhì)量,這是至關(guān)重要的,因?yàn)椴煌?MPI 的性能可能會(huì)有很大差異。有關(guān)更多信息,請(qǐng)參閱 關(guān)于高性能系統(tǒng) FFT 庫(kù)基準(zhǔn)測(cè)試的中期報(bào)告。第三章 。
圖 3 顯示,隨著 GPU 的數(shù)量增加一倍, cuFFTMp 能夠保持大約 75% 的峰值。

圖 3 。硒原子團(tuán)上 cuFFTMp 的弱標(biāo)度,顯示為峰值性能的一小部分
峰值性能是使用 2000 GB / s / GPU 的雙向全局內(nèi)存帶寬, 300 GB / s / GPU 的雙向 NVLink 帶寬和 25 GB / s / GPU 的 Infiniband 帶寬。
設(shè) N 為 1D 變換大小, G 為 GPU 的個(gè)數(shù)。每個(gè) GPU 都擁有 N 3/ G 元素(每個(gè)元素 8 或 16 字節(jié)),模型假設(shè) N 3/ G 元素在全局內(nèi)存中被讀/寫六次,并且 N 3 G 2元素從每個(gè) GPU 發(fā)送一次到其他 GPU 。在 4096 GPU 上,非 InfiniBand 通信所花費(fèi)的時(shí)間不到總時(shí)間的 10% 。
MPI 可移植性和多體系結(jié)構(gòu)支持
如前所述, cuFFTMp 的性能不依賴于 MPI 實(shí)現(xiàn)。為了便于攜帶, cuFFTMp 要求啟動(dòng) MPI ,并管理 CPU 上的數(shù)據(jù)分發(fā)。
目前, TMP 靜態(tài)鏈接到 NVSHMEM 。 NVSHMEM 使用一個(gè)小型 MPI “引導(dǎo)插件”( NVSHMEM _ bootstrap _ MPI.so ),它是使用 MPI 構(gòu)建的,并在運(yùn)行時(shí)自動(dòng)加載。此引導(dǎo)程序針對(duì) HPC SDK 中包含的 OpenMPI 版本。對(duì)于依賴于另一個(gè) MPI 實(shí)現(xiàn)的用戶應(yīng)用程序, EA 包包括幫助程序腳本,用于構(gòu)建針對(duì)不同 MPI 的引導(dǎo)程序。
cuFFTMp 同時(shí)支持 Linux x86 _ 64 和 IBM POWER 體系結(jié)構(gòu)。您可以下載不同體系結(jié)構(gòu)的 EA 包。圖 4 顯示,在 256 個(gè)節(jié)點(diǎn)中使用 1536V100 GPU , cuFFTMp 可以達(dá)到 50Tflop / s 以上,轉(zhuǎn)換 40963復(fù)雜的數(shù)據(jù)點(diǎn),僅占 Summit 系統(tǒng)的 5% 。

圖 4 。 cuFFTMp ( FP32 )在 Summit cluster 上的性能
圖 5 顯示,在 256 個(gè)節(jié)點(diǎn)中使用 1536V100 GPU 時(shí), cuFFTMp 可以達(dá)到 4096 個(gè)以上的 TFlop / s3復(fù)雜的數(shù)據(jù)點(diǎn),僅占 Summit 系統(tǒng)的 5% 。

圖 5 。 cuFFTMp ( FP64 )在 Summit cluster 上的性能
輕松過渡到 TMP
cuFFTMp 只是當(dāng)前多 GPU cuFFT 庫(kù)的擴(kuò)展。大多數(shù)現(xiàn)有的多 GPU 函數(shù)適用于 TMP 。作為一個(gè)分布式多進(jìn)程庫(kù), cuFFTMp 要求 MPI 被引導(dǎo)(“啟動(dòng)”),并期望數(shù)據(jù)分布在 MPI 進(jìn)程之間。下表顯示了將應(yīng)用程序從使用 multi- GPU cuFFT 轉(zhuǎn)換為 cuFFTMp 所需的代碼。
| Multi-GPU, single-process cuFFT | cuFFTMp |
|---|---|
|
#include |
#include |
| // host buffer h_f size NX*NY*NZ | // host buffer h_f size my_NX*NY*NZ |
|
cufftHandle plan_c2c; cufftCreate(&plan_c2c); |
|
|
for (auto i =0; i < NGPUS; ++i) |
cufftMpAttachComm(plan, CUFFT_COMM_MPI, MPI_COMM_WORLD) |
|
size_t worksize; |
|
| MPI_Finalize(); | |
Slab 、 pencil 和 block 分解是多維 FFT 算法中用于跨節(jié)點(diǎn)并行計(jì)算的數(shù)據(jù)分布方法的典型名稱。 cuFFTMp EA 僅支持優(yōu)化的 slab ( 1D )分解,并提供輔助功能,例如 cufftXtSetDistribution 和 cufftMpReshape ,以幫助用戶從任何其他數(shù)據(jù)分發(fā)重新分發(fā)到 cuFFTMp 的 slab 數(shù)據(jù)分發(fā)。
CufftMP EA 包包括 C ++和 Fortran 示例,覆蓋了一系列用例: C2C 、 R2C / C2R 、不同的計(jì)劃共享工作空間,以及從一個(gè)分布到另一個(gè)分布的數(shù)據(jù)或在 GPU 上重新分布。 cuFFTMp 使用 EA 包中包含的 HPC SDK 21.7 +編譯器和包裝器,為 Fortran 應(yīng)用程序提供全面支持。
客戶體驗(yàn):湍流模擬
cuFFTMp 使科學(xué)家能夠研究具有挑戰(zhàn)性的流體湍流問題 物理學(xué)中最古老的懸而未決的問題 。
為了了解湍流行為,印度海得拉巴塔塔基礎(chǔ)研究所( TFRI )的一個(gè)研究團(tuán)隊(duì)開發(fā)了 Fluid3D ,這是一個(gè) CFD 軟件包,使用偽譜方法對(duì) Navier-Stokes 方程進(jìn)行直接數(shù)值模擬( DNS )。通過將 Fluid3D 移植到 cuFFTMp 和 CUDA ,該團(tuán)隊(duì)現(xiàn)在可以在幾個(gè)小時(shí)內(nèi)模擬數(shù)千個(gè) GPU 上更高的雷諾數(shù)流動(dòng),這是使用 MPI CPU 版本不可能完成的任務(wù)。
在圖 6 中,湍流由不同尺度的漩渦組成,能量從大尺度的運(yùn)動(dòng)轉(zhuǎn)移到小尺度。模擬和理解大型 DNS 運(yùn)行中最小湍流結(jié)構(gòu)的各向同性行為非常重要。
DNS 是提高對(duì)湍流理解的關(guān)鍵工具,偽譜方法因其計(jì)算效率和準(zhǔn)確性而被廣泛使用。
湍流模擬的挑戰(zhàn)是需要獲得高雷諾數(shù)( Re )。為了保持計(jì)算穩(wěn)定性, Re 數(shù)受到網(wǎng)格分辨率的限制,即 Re 2.25 N 3,其中 N 是每個(gè)維度中的網(wǎng)格點(diǎn)數(shù)量。因此,模擬高 Re 數(shù)湍流需要數(shù)值分辨率,計(jì)算成本可能會(huì)很高,甚至?xí)屓送鴧s步。
表 1 顯示了最大 Re 數(shù)所需的網(wǎng)格分辨率以及模擬所需的內(nèi)存。

Fluid3D 在傅里葉空間中使用二階指數(shù)時(shí)間步進(jìn)法。模擬通常集成在數(shù)萬個(gè)時(shí)間步上,每個(gè)時(shí)間步計(jì)算九個(gè) 3D FFT 。 FFT 主導(dǎo)整個(gè)仿真運(yùn)行時(shí)。每個(gè)時(shí)間步長(zhǎng)的壁面時(shí)間是衡量數(shù)值實(shí)驗(yàn)特定結(jié)構(gòu)的求解時(shí)間是否合理的一個(gè)重要指標(biāo)。
圖 7 顯示了 Fluid3D 的每個(gè)時(shí)間步的壁時(shí)間小于 5 秒,分辨率為 81923,在 Selene 上使用 1024 個(gè) A100 GPU ( 128 個(gè)節(jié)點(diǎn))。帶有 FFTW-MPI 的 CPU 版本,每次迭代需要 23.9 秒,分辨率為 10243在單個(gè) 64 核 CPU 節(jié)點(diǎn)上使用 64 MPI 列組的問題大小。與同樣 1024 小時(shí)的墻時(shí)間相比3問題大小使用兩個(gè) A100 GPU ,很明顯 Fluid3D 從 CPU 節(jié)點(diǎn)到單個(gè) A100 的加速比超過 20 倍。

圖 7 。在 Selene 上運(yùn)行的 Fluid3D DNS 的每個(gè)時(shí)間步長(zhǎng)的墻時(shí)間
開始使用 cuFFTMp
有興趣嘗試使用 cuFFTMp 將應(yīng)用程序轉(zhuǎn)換為在多個(gè)節(jié)點(diǎn)上運(yùn)行嗎?請(qǐng)轉(zhuǎn)到 cuFFTMp EA 的入門頁(yè)面。下載 cuFFTMp 后,玩一下示例代碼,看看它們與 multi- GPU 版本有多相似,以及它們?nèi)绾卧诙鄠€(gè)節(jié)點(diǎn)上擴(kuò)展。
關(guān)于作者
Leopold Cambier 于 2021 在斯坦福大學(xué)獲得了計(jì)算和數(shù)學(xué)工程博士學(xué)位。在博士期間,他專注于從理論和并行計(jì)算的角度研究大型稀疏線性系統(tǒng)的快速求解器。 2016 年和 2017 年,他還在NVIDIA cuDNN 團(tuán)隊(duì)實(shí)習(xí)。自從他在 2021 年 1 月加入全職以來,利奧波德一直在cuFFT。
Doris Pan 是 cuFFT 團(tuán)隊(duì)的軟件工程師,之前是 NVIDIA 的解決方案架構(gòu)師。她的熱情在于幫助和教育世界各地的客戶加速他們的 HPC 和 DL / ML 應(yīng)用程序。在加入 NVIDIA 之前,她曾在 NOAA 、 NASA 和斯倫貝謝擔(dān)任 HPC 軟件工程師和技術(shù)經(jīng)理。多麗絲擁有北卡羅來納大學(xué)教堂山分校環(huán)境科學(xué)與工程博士學(xué)位。
Lukasz Ligowski 是負(fù)責(zé)cuFFT和設(shè)備擴(kuò)展庫(kù)的工程經(jīng)理。他于 2012 加入NVIDIA HPC 數(shù)學(xué)圖書館團(tuán)隊(duì)。最初,他花了大部分時(shí)間開發(fā) cuFFT 庫(kù),只做了一小段 cuDNN / DL 工作。他從華沙大學(xué)超級(jí)計(jì)算中心( ICM )轉(zhuǎn)入 Nvidia 。他推動(dòng)了 CUDA 的早期采用,并使用其他奇特的硬件體系結(jié)構(gòu)來加速科學(xué)應(yīng)用。他熱衷于從硬件中提取最后一點(diǎn)計(jì)算性能。在空閑時(shí)間,他喜歡喝咖啡和獨(dú)角獸。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
11257瀏覽量
224150 -
gpu
+關(guān)注
關(guān)注
28文章
5166瀏覽量
134891 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3343瀏覽量
60143
發(fā)布評(píng)論請(qǐng)先 登錄
fft算法c語(yǔ)言的實(shí)現(xiàn)
禮來與NVIDIA宣布成立AI聯(lián)合創(chuàng)新實(shí)驗(yàn)室以應(yīng)對(duì)藥物研發(fā)挑戰(zhàn)
如何在NVIDIA Jetson平臺(tái)上運(yùn)行最新的開源AI模型
NVIDIA技術(shù)推動(dòng)化學(xué)和材料科學(xué)發(fā)展
NVIDIA推出全新BlueField-4 DPU
泰克示波器FFT功能詳解
Tektronix泰克MDO32示波器FFT功能使用指南
DFT算法與FFT算法的優(yōu)劣分析
是德MSOX3104G示波器FFT分析與開關(guān)電源噪聲診斷
Keysight是德MSOX3054T示波器FFT頻譜分析在通信領(lǐng)域的深度應(yīng)用
借助NVIDIA技術(shù)實(shí)現(xiàn)機(jī)器人裝配和接觸密集型操作
使用NVIDIA cuFFTMp FFT解決具有挑戰(zhàn)性的問題
評(píng)論