CUDA軟硬件環(huán)境簡介
CUDA是用于GPU計算的開發(fā)環(huán)境,它是一個全新的軟硬件架構,可以將GPU視為一個并行數(shù)據(jù)計算的設備,對所進行的計算進行分配和管理。在CUDA的架構中,這些計算不再像過去所謂的GPGPU架構那樣必須將計算映射到圖形API(OpenGL和Direct 3D)中,因此對于開發(fā)者來說,CUDA的開發(fā)門檻大大降低了。CUDA的GPU編程語言基于標準的C語言,因此任何有C語言基礎的用戶都很容易地開發(fā)CUDA的應用程序。
CUDA支持的GPU
CUDA支持的GPU (CUDA-enabled GPU)包含GeForce、Quadro和Tesla三個系列。CUDA-enabled GPU的產(chǎn)品線涵蓋了從筆記本電腦到高性能多GPU的系統(tǒng)中。CUDA-enabled GPU支持并行數(shù)據(jù)高速緩沖(Parallel Data Cache)和線程執(zhí)行管理器(Parallel Data Cache),每個不同的GPU具備8-128個Stream Processor,具備強大的并行數(shù)據(jù)計算能力。迄今為止CUDA-enabled GPU詳細的列表如下:
GeForce是NVIDIA公司面向消費市場的GPU產(chǎn)品;
Quadro是面向專業(yè)圖形市場的GPU產(chǎn)品;
而Tesla則是專門面向GPU計算的產(chǎn)品,它不具備圖形輸出的功能,因此不能作為圖形卡來使用。
這三個產(chǎn)品面向不同的應用領域,因此建議在開發(fā)和部署CUDA應用的時候需要考慮到產(chǎn)品的應用決定采用不同的GPU。NVIDIA的CUDA-enabled GPU具有一個完整的產(chǎn)品線,各種用戶都可以從中選擇到合適自己的產(chǎn)品。對于有高密度計算能力需求的用戶來說,Quadro和Tesla則是必須的選擇。諸如Quadro Plex 1000 Model S4和Tesla S870在一個1U高度的標準服務器機架機箱內(nèi)裝備了四個GPU,每個GPU具備128個stream processor以及1.5GB的存儲器,每個1U裝置總共具備512個stream processor和6GB存儲器,非常適合于有高密度、大規(guī)模數(shù)據(jù)計算需求的用戶。CUDA-enabled GPU的家族還在不斷地擴大之中,隨著NVIDIA新一代GPU的發(fā)布,更多的產(chǎn)品也將加入到這個行列中來。
CUDA軟件環(huán)境
CUDA的架構
如圖所示,在CUDA的軟件層面,NVIDIA C編譯器是其中的核心。CUDA程序是GPU和CPU的混合代碼,它首先由NVIDIA C編譯器進行編譯。經(jīng)過編譯后,GPU和CPU的代碼將被分離,GPU代碼被編譯成GPU計算的機器碼,而CPU的C代碼輸出由標準的C編譯器進行編譯。因此一個完整的CUDA軟件開發(fā)環(huán)境還需要有一個面向CPU的C編譯器。CUDA可以支持多種運行在Windows XP和Linux操作系統(tǒng)下的C開發(fā)系統(tǒng)諸如Microsoft Visual C++等。右圖是NVIDIA C編譯器結構。
其中,EDG將CPU和GPU的代碼分離;Open64生成GPU PTX (Parallel Thread eXecution)匯編碼。CUDA運行需要CUDA runtime driver的支持,而Profiler則可以提供GPU和CPU kernel調(diào)用和內(nèi)存拷貝的時序分析,從而對性能進行評估并且發(fā)現(xiàn)潛在的性能上的問題。
除了編譯器外,NVIDIA提供了一些非常實用的函數(shù)庫。目前有兩個數(shù)字計算庫包含在已經(jīng)發(fā)布的軟件包里面,分別是CUDA FFT和CUDA BLAS子程序庫。CUDA FFT是快速傅立葉變換(Fast Fourier Transform, FFT)的子程序庫,快速傅立葉變換是信號處理之類應用的基本算法。BLAS是基本線性代數(shù)的子程序庫,提供了高效率的線性代數(shù)計算子程序。CUDA FFT和BLAS都是針對GPU高度優(yōu)化的高性能數(shù)學函數(shù)庫,在CUDA程序中可以方便調(diào)用,節(jié)省大量的代碼編寫時間。
CUDA所有軟件包都可以從NVIDIA公司的網(wǎng)站上免費下載。NVIDIA建立了一個專門針對CUDA的名為CUDA Zone社區(qū),網(wǎng)址是 http://www.nvidia.com/object/cuda_home.html。它包含各種程序、文檔的下載,并且有幾個針對開發(fā)者的論壇,里面有專人為各位開發(fā)者進行服務,解答各種疑問。今后中文化的CUDA Zone也將開通,可以提供中文的CUDA資料下載服務并且直接使用中文對開發(fā)者進行服務。 #p#page_title#e#
要使用CUDA進行GPU計算的開發(fā)工作,需要下載相應的軟件和編程指南。所有CUDA相關的軟件都包含在兩個軟件包中,分別是:
● CUDA Toolkit
CUDA Toolkit是CUDA的核心軟件包,它包含有:編譯器 (NVCC C編譯器)、CUDA FFT和BLAS庫、Profiler(分析器)、Debugger、CUDA runtime driver以及編程的手冊等。目前CUDA的版本是1.1,支持Linux和Windows XP。在C語言開發(fā)工具方面,支持Microsoft Visual C++ 7.1和8.0。未來的CUDA版本將會支持Vista、新一代的C語言開發(fā)工具以及支持雙精度。
● CUDA SDK
CUDA SDK提供了許多的CUDA實例,這些實例包含有源代碼,因此開發(fā)者可以從這些事例中獲得CUDA編程的經(jīng)驗,而且這些實例的代碼也可以直接用于程序的開發(fā)中。SDK里面的實例涵蓋了CUDA應用的許多方面,在源代碼中有詳細的注釋,對于開發(fā)者來說是很有用的參考資料。