CUDA並行計算架構(一) 概念相關、內容比較抽象

來源:互聯網
上載者:User

一.   概念。

1. 相關關鍵字。

CUDA(Compute Unified Device Architecture)。

GPU英文全稱Graphic Processing Unit,中文翻譯為“圖形處理器”。

2. CUDA是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決複雜的計算問題。它包含了CUDA指令集架構(ISA)以及GPU內部的並行計算引擎。。

3. 從CUDA體繫結構的組成來說,包含了三個部分:開發庫、運行期環境和驅動。開發庫是基於CUDA技術所提供的應用開發庫。運行期環境提供了應用開發介面和運行期組件,包括基礎資料型別 (Elementary Data Type)的定義和各類計算、類型轉換、記憶體管理、裝置訪問和執行調度等函數。驅動部分基本上可以理解為是CUDA-enable的GPU的裝置抽象層,提供硬體裝置的抽象提供者。

4. 應用領域例如遊戲、高清視頻、衛星成像等資料規模龐大的情境。

二.   初探。

1. CUDA架構

CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 語言為基礎,可以直接以大多數人熟悉的C 語言,寫出在顯示晶片上執行的程式,而不需要去學習特定的顯示晶片的指令或是特殊的結構。

在 CUDA 的架構下,一個程式分為兩個部份:host 端和 device 端。Host 端是指在 CPU 上執行的部份,而 device 端則是在顯示晶片上執行的部份。Device 端的程式又稱為 "kernel"。通常 host 端程式會將資料準備好後,複製到顯卡的記憶體中,再由顯示晶片執行 device 端程式,完成後再由 host 端程式將結果從顯卡的記憶體中取回。

2. Cpu與Gpu的各自領域

CPU和GPU各有所長。一般而言,CPU擅長處理不規則資料結構和不可預測的存模數式,以及遞迴演算法、分支密集型代碼和單線程程式。這類程式任務擁有複雜的指令調度、迴圈、分支、邏輯判斷以及執行等步驟。例如,作業系統、文文書處理、互動性應用的除錯、通用計算、系統控制和虛擬化技術等系統軟體和跨平台 app程式等等。而GPU擅於處理規則資料結構和可預測存模數式。例如,光影處理、3D 座標變換、油氣勘探、金融分析、醫學成像、有限元、基因分析和地理資訊系統以及科學計算等方面的應用。顯示晶片通常具有更大的記憶體頻寬。具有更大量的執行單元。和高階 CPU 相比,顯卡的價格較為低廉。

目前設計GPU+CPU架構平台的指導思想是:讓CPU的更多資源用於緩衝,GPU的更多資源用於資料計算。把兩者放在一起,不但可以減小在傳輸頻寬上的花銷,還可以讓CPU和GPU這兩個PC中運算速度最快的組件互為幫襯。其原因是,CPU中的運算器通常只有幾個ALU,而GPU中的ALU則比CPU的數目多很多。另外,CPU中快取相對比較多,而GPU中的快取則比CPU少很多。必要的時候,CPU可以協助GPU分擔一部分軟體渲染工作,另一方面GPU可以使用主流程式設計語言來處理通用計算問題。這就相當於CPU多了一個強大的浮點運算組件,而GPU多了一個像素處理單元。

從微架構上看,CPU和GPU看起來完全不是按照相同的設計思路設計的,當代CPU的微架構是按照兼顧“指令並存執行”和“資料並行運算”的思路而設計,就是要兼顧程式執行和資料運算的並行性、通用性以及它們的平衡性。CPU的微架構偏重於程式執行的效率,不會一味追求某種運算極致速度而犧牲程式執行的效率。GPU的微架構就是面向適合於矩陣類型的數值計算而設計的,大量重複設計的計算單元,這類計算可以分成眾多獨立的數值計算——大量數值運算的線程,而且資料之間沒有像程式執行的那種邏輯關聯性。

從主頻上來看,GPU執行每個數值計算的速度並沒有比CPU快,從目前主流CPU和GPU的主頻就可以看出了,CPU的主頻都超過了1GHz,2GHz,甚至3GHz,而GPU的主頻最高還不到1GHz,主流的也就500~600MHz。要知道1GHz = 1000MHz。所以GPU在執行少量線程的數值計算時並不能超過CPU。

從每個刻度執行的指令數來看,這個方面,CPU和GPU無法比較,因為GPU大多數指令都是面向數值計算的,少量的控制指令也無法被作業系統和軟體直接使用。如果比較資料指令的IPC,GPU顯然要高過CPU,因為並行的原因。但是,如果比較控制指令的IPC,自然是CPU的要高的多。原因很簡單,CPU著重的是指令執行的並行性。

GPU 的設計能使更多晶體管用於資料處理,而非資料緩衝和流量控制。

更具體地說,GPU 專用於解決可表示為資料並行計算的問題——在許多資料元素上並存執行的程式,具有極高的計算密度(數學運算與儲存空間運算的比率)。由於所有資料元素都執行相同的程式,因此對精密流量控制的要求不高;由於在許多資料元素上運行,且具有較高的計算密度,因而可通過計算隱藏儲存空間訪問延遲,而不必使用較大的資料緩衝。

3. Gpu的線程階層

執行核心的每個線程都會被分配一個獨特的線程 ID。線程的索引及其線程 ID 有著直接的關係:對於一維塊來說,兩者是相同的;對於大小為 (Dx,Dy) 的二維塊來說,索引為 (x,y) 的線程的ID 是(x + yDx);對於大小為(Dx,Dy, Dz)的三維塊來說,索引為(x, y, z)的線程的ID 是(x + yDx + ZDxDy)。

一個塊內的線程可彼此協作,通過一些共用儲存空間來共用資料,並同步其執行來協調儲存空間訪問。一個線程塊最多可以包含 512 個線程。但一個核心可能由多個大小相同的線程塊執行,因而線程總數應等於每個塊的線程數乘以塊的數量。這些塊將組織為一個一維或二維線程塊網格。

線程塊需要獨立執行:必須能夠以任意順序執行、能夠並行或順序執行。這種獨立性需求允許跨任意數量的核心安排線程塊,從而使程式員能夠編寫出可伸縮的代碼。

返回欄目頁:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.