一 5 三月 2007
最近看到國外的報導提到NVIDIA推出CUDA的架構, 稍微花點時間看過它的Programming guide, CUDE全名為Compute Unified Device Architecture, 簡單的說就是用繪圖加速卡上的GPU來進行大量的浮點運算, 由於GPU的設計主要是用來處理複雜的3D彩現(rendering), 因此本身對於執行緒的平行處理可以有良好的加速, 而個人電腦裡安裝的CPU則因為要處理不只浮點運算的需求, 還需要處理蠻多流程判斷, 因此先天的限制導致CPU在浮點運算上的加速相對於GPU受限許多
對於CUDA有興趣的讀者可以參考http://developer.nvidia.com/object/cuda.html的介紹, 該網頁也可以下載programming guide和軟體, 根據programming guide一開始就提到GPU和CPU的硬體架構差異, 它也有使用圖表來表示浮點運算的差異, 如果拿Intel Quad Core處理器與Geforce 8800GTX(G80核心)來比較, 前者可以有42GFlops的浮點運算能量, 而後者可以超過300GFlops的運算能量, 根據Chapter5提到的硬體規格來看, 其實G80核心裡面包含了16個運算單元, 而且可以容納上千個執行緒同時執行, 因此可以用比較低的時脈來進行高速運算
如果想要使用CUDA的架構來進行運算可以用C語言來撰寫, 然後搭配CUDA軟體所提供的NVCC編譯器將呼叫CUDA的程式碼編譯成為cubin object code然後再連結成為執行檔, 而且必須深入了解CUDA的平行架構才有辦法使用到它所提供的高速計算, 不過它也有提供BLAS和FFT的一些基本運算功能, 因此如果您單純是想要進行矩陣數值運算或是快速傅立葉轉換, 而且是用C語言來開發可以考慮使用CUDA的架構, 但是也必須具備有NVIDIA的繪圖卡才能執行程式, 從網路上找到的Geforce 8800GTX的報價就將近700美金, 在看過手冊後發現另一個比較大的問題是這個CUDA架構只提供單精準度的函式, 因此如果是想要進行雙精準度的計算, 現階段是無法使用CUDA架構達成的
三月 6th, 2007 at 9:00 am
因為這些數據都是從官方的文件上看到的, 所以實際上到底能夠發揮多少的浮點運算能量還是得要測試過才會知道