天天看點

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

作者:愛程式設計的查理

今天學到了一個新概念, GPGPU, 跟大家分享一下。

圖形處理單元上的通用計算(General-purpose computing on graphics processing units,縮寫GPGPU),也稱為 GPGPU 計算,是指除了把GPU用作傳統的計算機圖形計算之外,使用 GPU 進行通用計算。就是在圖形處理單元(GPU)上運作的通用計算,而這些計算傳統上由中央處理單元(CPU)處理的計算,

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

将 GPU 用于通用計算可以增強 CPU 架構,通過加速應用程式的某些部分,而其餘部分繼續在 CPU 上運作,最終通過結合 CPU 和 GPU 處理能力來建立整體更快、更高性能的應用程式。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

GPU 與 GPGPU

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!
每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

基本上所有現代 GPU 都是 GPGPU。GPU 是一種可程式設計處理器,其上數千個處理核心以大規模并行方式同時運作,每個核心都專注于進行高效計算,促進對大量資料集的實時處理和分析。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

顯示卡用于圖形渲染

雖然 GPU 最初主要設計用于渲染圖像,但現在 GPGPU 也可以通過程式設計将處理能力用于滿足科學計算需求。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

如果顯示卡與任何提供通用計算通路的特定架構相容,則它就是 GPGPU。主要差別在于,GPU 計算是硬體元件,而 GPGPU 本質上是一個軟體概念,其中專門的程式設計和裝置設計促進了非專業計算的大規模并行處理。

什麼是 GPGPU 加速?

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

圖形處理單元 (GPU) 是一種專用計算機處理器,可滿足實時高分辨率 3D 圖形計算密集型任務的需求。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

到 2012 年,GPU 已發展成為高度并行的多核系統,可以高效處理大量資料。對于并行處理大量資料塊的算法,這種設計比通用中央處理單元 (CPU) 更有效,例如加密哈希函數、機器學習等。

GPU 的架構與 CPU 不同。CPU 專為單線程性能而設計,而 GPU 則旨在處理大量并行任務。GPU 的并行架構使其能夠同時執行數千個線程,使其成為需要高吞吐量的資料處理任務的理想選擇。此外,現代 GPU 配備了專門的硬體來執行矩陣乘法等任務,這是許多資料處理任務中的關鍵操作。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

GPGPU 加速是指一種加速計算方法,其中應用程式的計算密集型部分配置設定給 GPU,而通用計算則交給 CPU,進而提供超級計算級别的并行性。雖然高度複雜的計算是在 GPU 中計算的,但順序計算可以在 CPU 中并行執行。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

GPGPU 設計的最顯著的特點,就是是能夠将資訊從 GPU 雙向傳輸回 CPU;通常,兩個方向的資料吞吐量都很高,進而對特定高使用率算法的速度産生乘數效應。

GPGPU 管道可以顯著的提高資料處理的速度, 尤其是在特别大型資料集, 或者包含 2D 或 3D 圖像的資料處理。它用于複雜的圖形管道以及科學計算;在具有大型資料集(如基因組圖譜)的領域,或者二維或三維分析有用的領域更是如此——尤其是目前的生物分子分析、蛋白質研究和其他複雜的有機化學。

如何使用 GPGPU

編寫支援 GPU 的應用程式需要并行計算平台和應用程式程式設計接口 (API),該接口允許軟體開發人員和軟體工程師建構算法來修改其應用程式并将計算密集型核心映射到 GPU。GPGPU 支援記憶體層次結構中的幾種記憶體類型,以便設計人員優化其程式。

任何允許在 CPU 上運作的代碼輪詢 GPU 着色器以擷取傳回值的語言都可以建立 GPGPU 架構。并行計算的程式設計标準包括 OpenCL(獨立于供應商)、OpenACC、OpenMP 和 OpenHMPP。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

OpenCL 全稱是Open Computing Language,開放計算語言,是 Khronos Group 定義的開放标準, 一種開放的、免費的标準,OpenCL 提供了一個跨平台的 GPGPU 平台,支援 CPU 上的資料并行計算,用于超級計算機、雲伺服器、個人計算機、移動裝置和嵌入式平台中各種加速器的跨平台并行程式設計。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

OpenCL 在 Intel、AMD、Nvidia 和 ARM 平台上得到積極支援。借助OpenCL這個工具,在 GPU 或其他相容硬體加速器上執行并行通用計算。這包括移動資料、執行實際工作和擷取結果。

截至 2016 年,OpenCL 是占主導地位的開放通用 GPU 計算語言。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

NVIDIA 于 2006 年通過建立計算統一裝置架構 (Compute Unified Device Architecture,CUDA),提出了CUDA平台, 這是一個軟體開發工具包 (SDK) 和應用程式程式設計接口 (API),CUDA 是一種用于加速并行計算的軟體開發平台,允許使用程式設計語言 C 編寫算法,以便在 GeForce 8 系列及更高版本的 GPU 上執行。CUDA 技術通過将任務分解為數千個獨立執行的較小“線程”來實作并行處理。

CUDA API 及其運作時:CUDA API 是 C 程式設計語言的擴充,它增加了在 C 中指定線程級并行性以及指定 GPU 裝置特定操作(如在 CPU 和 GPU 之間移動資料)的能力。

CUDA 是一個軟體層,可以直接通路 GPU 的虛拟指令集和并行計算元素,以執行計算核心。除了驅動程式和運作時核心之外,CUDA 平台還包括編譯器、庫和開發人員工具,以幫助程式員加速他們的應用程式。

CUDA 設計目标是可以和 C、C++、Fortran 和 Python 等程式設計語言配合使用。這種可通路性使并行程式設計專家更容易使用 GPU 資源,而之前的 API(如 Direct3D 和 OpenGL)則需要進階圖形程式設計技能。基于 CUDA 的 GPU 還支援 OpenMP、OpenACC 和 OpenCL 等程式設計架構。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

ROCm 是AMD在2016年推出的用于圖形處理單元 (GPU) 程式設計的軟體技術棧,包括HIP(基于 GPU 核心的程式設計)、OpenMP/消息傳遞接口 (MPI)(基于指令的程式設計)和 OpenCL。ROCm 涵蓋多個領域:圖形處理單元上的通用計算 (GPGPU)、高性能計算 (HPC)、異構計算。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

ROCm 運作于AMD的顯示卡。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

Metal GPGPU 是 Apple Inc. 的 API,是适用于 iOS 和 macOS 的低級圖形程式設計 API,但它也可用于這些裝置上的通用計算。

CUDA 中的 GPGPU

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

CUDA 平台是一個軟體層,可直接通路 GPU 的虛拟指令集和并行計算元素以執行計算核心。CUDA 旨在與 C、C++ 和 Fortran 等程式設計語言配合使用,是一個易于通路的平台,不需要進階圖形程式設計技能,軟體開發人員可以通過 CUDA 加速庫和編譯器指令使用它。支援 CUDA 的裝置通常與主機 CPU 連接配接,主機 CPU 用于 CUDA 裝置的資料傳輸和核心調用。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

GPGPU 的 CUDA 模型可加速各種應用,包括 GPGPU AI、計算科學、圖像處理、數值分析和深度學習。CUDA 工具包包括 GPU 加速庫、編譯器、程式設計指南、API 參考和 CUDA 運作時。

除了CUDA, GPGPU有國産的架構嗎?

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

有, CANN,就是國産的CUDA替代方案,華為出品!

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

CANN,全稱是Compute Architecture for Neural Networks,異構計算架構, 這是華為針對AI場景推出的異構計算架構,向上支援多種AI架構,包括MindSpore、PyTorch、TensorFlow等,向下服務AI處理器與程式設計,發揮承上啟下的關鍵作用,是提升昇騰AI處理器計算效率的關鍵平台。同時針對多樣化應用場景,提供多層次程式設計接口,支援使用者快速建構基于昇騰平台的AI應用和業務。

每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!
每天學點AI知識: 了解GPGPU 與CUDA,華為的CANN也很厲害!

#GPU##首款國産7納米GPGPU晶片亮相##顯示卡# #華為鴻蒙×昇騰雲有望突破AI算力瓶頸##華為##英偉達##國産7納米GPGPU晶片面世# #cuda##昇騰AI向上的力量# #微頭條首發挑戰賽##頭條創作挑戰賽##頭條#