构建可扩展的GPU加速应用程序(NVIDIA HPC)
構建可擴展的GPU加速應用程序(NVIDIA HPC)
研究人員、科學家和開發人員正在通過加速NVIDIA GPU上的高性能計算(HPC)應用來推進科學發展,NVIDIA GPU具有處理當今最具挑戰性的科學問題的計算能力。從計算科學到人工智能,GPU加速應用正在帶來突破性的科學發現。流行的語言如C、C++、FORTRAN和Python正被用來開發、優化和部署這些應用程序。
面向HPC的GPU程序設計
NVIDIA GPU可以編程得很像CPU。從替換GPU優化的數學庫開始。使用標準C++并行算法和FORTRAN語言特征添加附加加速度。最后,使用pragma?優化語言性能,并最終使用pragma?來優化性能。
庫文件
GPU加速庫是CPU庫的一個簡單替代品。
多GPU和多節點感知,NVIDIA GPU加速庫為HPC應用程序中最常見的模式提供最佳性能。從各種常用的計算優化庫中選擇。
標準語言
標準C++和FORTRAN中的并行特性可以將例程映射到多核CPU或GPU的核心。
英偉達C++ 17編譯器在標準模板庫(STL)上增加對執行策略的支持,英偉達2008編譯器的DO并發構造允許循環迭代而不依賴于相互依賴。
指令
基于指令的編程模型為GPU、CPU和其設備上的并行計算提供了一個簡單的入口。
如果標準語言不具備獲得良好性能所需的靈活性或特性,可以使用指令進行擴充,并保持可移植性以供其編譯器和平臺使用。
CUDA
CUDA是一個并行計算平臺和編程模型,旨在為GPU加速應用程序提供最大的靈活性和性能。
為了最大化性能和靈活性,通過直接在CUDA C/C++或CUDA FORTRAN中編碼來獲得GPU硬件的最大值。
NVIDIA HPC SDK
一套針對HPC的編譯器、庫和工具
NVIDIA HPC軟件開發工具包(SDK)包括經過驗證的編譯器、庫和軟件工具,這些工具對于最大限度地提高開發人員的工作效率以及HPC應用程序的性能和可移植性至關重要。
NVIDIA HPC SDK C、C++和FORTRAN編譯器支持HPC建模和仿真應用程序的GPU加速,標準C++和FORTRAN、OpenACC?指令和CUDA?。GPU加速數學庫最大限度地提高通用HPC算法的性能,優化的通信庫支持基于標準的多GPU和可伸縮系統編程。性能分析和調試工具簡化了HPC應用程序的移植和優化,而容器化工具可以方便地在本地或云中部署。通過對NVIDIA GPU和運行Linux的Arm、OpenPOWER或x86-64 cpu的支持,HPC SDK提供了構建NVIDIA GPU加速HPC應用程序所需的工具。
為什么要使用NVIDIA HPC SDK?
性能
廣泛使用的HPC應用程序,包括VASP、Gaussian、ANSYS Fluent、GROMACS和NAMD,使用CUDA、OpenACC和GPU加速數學庫為用戶提供突破性的性能。可以使用這些相同的軟件工具來加速應用程序,并實現戲劇性的加速和能源效率使用NVIDIA GPU。
便攜性
為超過99%的當今500強系統構建和優化應用程序,包括基于NVIDIA gpu或x86-64、Arm或OpenPOWER cpu的系統。可以使用下拉庫、C++ 17并行算法和OpenACC指令來加速GPU,并確保應用程序完全可移植到其編譯器和系統。
生產力
利用單個集成套件最大限度地提高科學和工程吞吐量,并最大限度地縮短編碼時間,該套件允許快速移植、并行化和優化GPU加速,包括用于多GPU和可伸縮計算的行業標準通信庫,以及用于分析的分析和調試工具。
支持喜愛的編程語言
C++ 17并行算法
C++ 17并行算法使用標準模板庫(STL)實現了便攜式并行編程。英偉達HPCSDK C++編譯器支持CPU上的完全C++ 17,并將并行算法卸載到Nvidia GPU,使得GPU編程沒有指令、語法或注釋。使用C++ 17并行算法的程序很容易移植到Linux、Windows和Mac OS的大多數C++實現。
Fortran 2003編譯器
NVIDIA Fortran編譯器支持Fortran 2003和Fortran 2008的許多功能。支持NVIDIA GPU上的OpenACC和CUDA Fortran,支持多核x86-64、Arm和OpenPOWER CPU的SIMD矢量化、OpenACC和OpenMP,具有在當今異構GPU加速HPC系統上移植和優化Fortran應用程序所需的功能。
OpenACC指令
NVIDIA FORTRAN,C++,C++編譯器支持基于OpenACC指令的NVIDIA GPU和多核CPU的并行編程。已經使用OpenACC啟動或啟用了200多個HPC應用程序端口,包括VASP、Gaussian、ANSYS Fluent、WRF和mpa等生產應用程序。OpenACC是一個性能成熟的gpu和多核cpu的便攜式指令解決方案。
主要特點
GPU數學庫
cuBLAS和cuSOLVER庫提供了GPU優化和多GPU實現,實現了LAPACK的所有BLAS例程和核心例程,并在可能的情況下自動使用NVIDIA GPU張量核心。cuFFT包括GPU加速的用于真實和復雜數據的1D、2D和3D FFT例程,cuSPARSE為稀疏矩陣提供基本的線性代數子程序。這些庫可以從CUDA和OpenC程序中調用,是用C、C++和FORTRAN編寫的。
針對張量核心優化
NVIDIA GPU張量核心使科學家和工程師能夠使用混合精度或雙精度來顯著地加速合適的算法。NVIDIA HPCSDK數學庫針對張量核心和多GPU節點進行了優化,以最小的編碼工作量實現系統的全部性能潛力。使用NVIDIA Fortran編譯器,可以通過將轉換數組內部函數自動映射到cuTENSOR庫來利用張量核心。
CPU優化
異構HPC服務器使用gpu來加速計算,并使用基于x86-64、OpenPOWER或Arm指令集架構的多核cpu。所有這些CPU都支持NVIDIA編譯器和工具,并且所有編譯器優化都在支持CPU上完全啟用。NVIDIA HPC SDK具有統一的特性、命令行選項、語言實現、編程模型、工具和庫用戶界面,簡化了開發人員在各種HPC環境中的體驗。
多GPU編程
NVIDIA集合通信庫(NCCL)使用MPI兼容的all-gather、all-reduce、broadcast、reduce和reduce-scatter例程實現高度優化的多GPU和多節點集合通信原語,以利用HPC服務器節點內和跨HPC服務器節點的所有可用GPU。NVSHMEM實現了GPU內存的OpenSHMEM標準,并提供了多GPU和多節點通信原語,這些原語可以從主機CPU或GPU啟動,也可以從CUDA內核中調用。
可擴展系統編程
MPI是分布式內存可伸縮系統編程的標準。NVIDIA HPC SDK包括一個支持GPUDirect的基于openmpi的CUDA感知MPI庫? 因此,可以使用遠程直接內存訪問(RDMA)直接發送和接收GPU緩沖區,包括在CUDA統一內存中分配的緩沖區。CUDA感知開放MPI完全兼容CUDA C/C++、CUDA FORTRAN和英偉達OpenACC編譯器。
Nsight性能分析
N光? Systems提供HPC服務器上應用程序性能的全系統可視化,使能夠優化消除瓶頸,跨多核CPU和GPU擴展并行應用程序。Nsight Compute允許通過圖形或命令行用戶界面深入研究GPU加速應用程序的交互式分析器中的GPU內核,并允許使用NVTX API直接檢測源代碼的區域來查明性能瓶頸。
部署到任何地方
容器通過將應用程序及其依賴項綁定到可移植虛擬環境中,簡化了軟件部署。NVIDIA HPC SDK包含使用HPC容器生成器開發、分析和部署軟件的說明,以簡化容器映像的創建。NVIDIA容器運行時支持幾乎所有容器框架的無縫GPU支持,包括Docker和Singularity。
用戶所說的
“需要Fortran、C和C++編譯器,支持用戶需要的所有編程模型,并期望Nvidia GPU和AMD EPCC CPU-MPI、OpenMP、OpenACC、CUDA和優化的數學庫。NVIDIA HPC SDK會檢查所有這些框。”
總結
以上是生活随笔為你收集整理的构建可扩展的GPU加速应用程序(NVIDIA HPC)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用卷积神经网络的自动心电图诊断
- 下一篇: 利用MONAI加速医学影像学的深度学习研