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