最近看到國外的報導提到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架構達成的