什麼是 CUDA?

作者 Mark Ebersole

你或許沒有意識到,其實 GPU 能做的遠遠多於電玩和科學研究。事實上,你的日常生活很有可能正被 GPU 計算所影響。

手機應用軟體依賴執行 GPU 的雲端伺服器。店家使用 GPU 分析零售和網路數據。網站利用 GPU 以更準確地放置廣告。工程師在計算機輔助工程應用軟體上仰賴它們。使用 GPU 加速運算的範圍正持續以驚人的速度不斷擴大。

它不再只是高性能計算 (HPC) 社群獨享的東西。享用它的好處正逐漸成為主流。

儘管擁有這樣廣泛並且不斷擴增的重要性,當我到全美各地教導研究人員和學生們關於 GPU 加速的好處,我經常被問到這個問題:「什麼是 CUDA?」

大多數人把 CUDA 誤認為一種語言,或可能是一種應用程式介面 (API) 。它並不是。

它遠不止如此。CUDA 是一種平行編程的模型和架構,讓使用 GPU 進行一般計算變得簡單而優雅。開發人員仍舊使用熟悉的 C、C++、Fortran,或其他正不斷擴充的清單上有的支援語法,並以少數幾個基本關鍵字的形式結合這些語言的擴充方法。

這些關鍵字讓開發人員表達大量的平行處理,並指示編譯器到應用程序對應到 GPU 的部分。

下面是一個簡單的範例程式碼,先以一般的「C」撰寫,然後是「C 加上 CUDA 擴充方法」。

學習如何使用 CUDA 撰寫平行程式模型是很容易的。我們在 CUDA 開發者園地網站上有線上研討會 (webinars) 和自學練習。

除了 toolkits for C、C++ 及 Fortran 工具箱之外,還有大量針對 GPU 和其他的編程方法,如基於 OpenACC 指令的編譯器最佳化的函式庫。

來試試看。別忘了讓我們知道你如何使用 CUDA 改進你的工作。