2014年5月9日 星期五

什麼是CUDA?

CUDA簡寫為(Compute Unified Device Architecture,統一計算架構),以下為wiki上的解釋:

由NVIDIA所推出的一種整合技術,是該公司對於GPGPU的正式名稱。透過這個技術,使用者可利用NVIDIA的GeForce 8以後的GPU和較新的Quadro GPU進行計算。亦是首次可以利用GPU作為C-編譯器的開發環境。NVIDIA行銷的時候,往往將編譯器與架構混合推廣,造成混亂。實際上,CUDA可以相容OpenCL或者自家的C-編譯器。無論是CUDA C-語言或是OpenCL,指令最終都會被驅動程式轉換成PTX代碼,交由顯示核心計算。
簡單來講,我習慣把CUDA就看成與OpenCL一樣的地位,基本上CUDA就是個C/C++的extend語法,使用者可以使用一些run time API去直接對GPU做操作,真正底層由nvcc compiler 把CUDA code轉成PTX code, 再由GPU driver將PTX 轉成binary code到GPU 硬體運算單元去執行,因此上面這段wiki最後面有點小錯誤,應該是compiler 轉成PTX code再讓driver去handle底層binary code,因為PTX code只是個pseudo-assembly language噢~

圖一: CUDA Software Stack




沒有留言:

張貼留言