CUDA的功能定位及組成
時間:2008-12-01 01:49:00
來源:UltraLAB圖形工作站方案網(wǎng)站
人氣:11120
作者:admin
CUDA(Compute Unified Device Architecture)是一個新的基礎架構(gòu),這個架構(gòu)可以使用GPU來解決商業(yè)、工業(yè)以及科學方面的復雜計算問題。它是一個完整的GPGPU解決方案,提供了硬件的直接訪問接口,而不必像傳統(tǒng)方式一樣必須依賴圖形API接口來實現(xiàn)GPU的訪問。在架構(gòu)上采用了一種全新的計算體系結(jié)構(gòu)來使用GPU提供的硬件資源,從而給大規(guī)模的數(shù)據(jù)計算應用提供了一種比CPU更加強大的計算能力。CUDA采用C語言作為編程語言提供大量的高性能計算指令開發(fā)能力,使開發(fā)者能夠在GPU的強大計算能力的基礎上建立起一種效率更高的密集數(shù)據(jù)計算解決方案。
從CUDA體系結(jié)構(gòu)的組成來說,包含了三個部分:開發(fā)庫、運行期環(huán)境和驅(qū)動(表2)。
開發(fā)庫是基于CUDA技術(shù)所提供的應用開發(fā)庫。目前CUDA的1.1版提供了兩個標準的數(shù)學運算庫——CUFFT(離散快速傅立葉變換)和CUBLAS(離散基本線性計算)的實現(xiàn)。這兩個數(shù)學運算庫所解決的是典型的大規(guī)模的并行計算問題,也是在密集數(shù)據(jù)計算中非常常見的計算類型。開發(fā)人員在開發(fā)庫的基礎上可以快速、方便的建立起自己的計算應用。此外,開發(fā)人員也可以在CUDA的技術(shù)基礎上實現(xiàn)出更多的開發(fā)庫。
運行期環(huán)境提供了應用開發(fā)接口和運行期組件,包括基本數(shù)據(jù)類型的定義和各類計算、類型轉(zhuǎn)換、內(nèi)存管理、設備訪問和執(zhí)行調(diào)度等函數(shù)。基于CUDA開發(fā)的程序代碼在實際執(zhí)行中分為兩種,一種是運行在CPU上的宿主代碼(Host Code),一種是運行在GPU上的設備代碼(Device Code)。不同類型的代碼由于其運行的物理位置不同,能夠訪問到的資源不同,因此對應的運行期組件也分為公共組件、宿主組件和設備組件三個部分,基本上囊括了所有在GPGPU開發(fā)中所需要的功能和能夠使用到的資源接口,開發(fā)人員可以通過運行期環(huán)境的編程接口實現(xiàn)各種類型的計算。
由于目前存在著多種GPU版本的NVIDIA顯卡,不同版本的GPU之間都有不同的差異,因此驅(qū)動部分基本上可以理解為是CUDA-enable的GPU的設備抽象層,提供硬件設備的抽象訪問接口。CUDA提供運行期環(huán)境也是通過這一層來實現(xiàn)各種功能的。目前基于CUDA開發(fā)的應用必須有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU運算事業(yè)部總經(jīng)理Andy Keane在一次活動中表示:一個充滿生命力的技術(shù)平臺應該是開放的,CUDA未來也會向這個方向發(fā)展。由于CUDA的體系結(jié)構(gòu)中有硬件抽象層的存在,因此今后也有可能發(fā)展成為一個通用的GPGPU標準接口,兼容不同廠商的GPU產(chǎn)品。
從CUDA體系結(jié)構(gòu)的組成來說,包含了三個部分:開發(fā)庫、運行期環(huán)境和驅(qū)動(表2)。
開發(fā)庫是基于CUDA技術(shù)所提供的應用開發(fā)庫。目前CUDA的1.1版提供了兩個標準的數(shù)學運算庫——CUFFT(離散快速傅立葉變換)和CUBLAS(離散基本線性計算)的實現(xiàn)。這兩個數(shù)學運算庫所解決的是典型的大規(guī)模的并行計算問題,也是在密集數(shù)據(jù)計算中非常常見的計算類型。開發(fā)人員在開發(fā)庫的基礎上可以快速、方便的建立起自己的計算應用。此外,開發(fā)人員也可以在CUDA的技術(shù)基礎上實現(xiàn)出更多的開發(fā)庫。
運行期環(huán)境提供了應用開發(fā)接口和運行期組件,包括基本數(shù)據(jù)類型的定義和各類計算、類型轉(zhuǎn)換、內(nèi)存管理、設備訪問和執(zhí)行調(diào)度等函數(shù)。基于CUDA開發(fā)的程序代碼在實際執(zhí)行中分為兩種,一種是運行在CPU上的宿主代碼(Host Code),一種是運行在GPU上的設備代碼(Device Code)。不同類型的代碼由于其運行的物理位置不同,能夠訪問到的資源不同,因此對應的運行期組件也分為公共組件、宿主組件和設備組件三個部分,基本上囊括了所有在GPGPU開發(fā)中所需要的功能和能夠使用到的資源接口,開發(fā)人員可以通過運行期環(huán)境的編程接口實現(xiàn)各種類型的計算。
由于目前存在著多種GPU版本的NVIDIA顯卡,不同版本的GPU之間都有不同的差異,因此驅(qū)動部分基本上可以理解為是CUDA-enable的GPU的設備抽象層,提供硬件設備的抽象訪問接口。CUDA提供運行期環(huán)境也是通過這一層來實現(xiàn)各種功能的。目前基于CUDA開發(fā)的應用必須有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU運算事業(yè)部總經(jīng)理Andy Keane在一次活動中表示:一個充滿生命力的技術(shù)平臺應該是開放的,CUDA未來也會向這個方向發(fā)展。由于CUDA的體系結(jié)構(gòu)中有硬件抽象層的存在,因此今后也有可能發(fā)展成為一個通用的GPGPU標準接口,兼容不同廠商的GPU產(chǎn)品。
上一篇:Cuda技術(shù)革命一瞥