什么是GPU计算?
GPU(圖形處理器)計算使用 GPU(圖形處理器)來執行通用科學與工程計算。
GPU(圖形處理器)計算模型在一個異構計算模型中同時使用了 CPU 和 GPU(圖形處理器)。應用程序的順序部分在 CPU 上運行,計算密集型部分在 GPU(圖形處理器)上運行。雖然應用程序使用了 GPU(圖形處理器)的卓越性能來提升運行性能,但對用戶而言,他們所能感知到的將僅僅是運行速度更快的應用程序。

應用程序開發人員將需要修改其應用程序中的計算密集型內核,並將其關聯到 GPU(圖形處理器)。應用程序的其它部分將仍然依賴於 CPU 進行處理。將一項功能關聯到 GPU(圖形處理器)需要重寫功能,以在其中支持並行處理,同時添加“C”關鍵字以在應用程序和 GPU(圖形處理器)之間往返傳輸數據。
GPU(圖形處理器)計算得到了 NVIDIA®(英偉達™)被稱作 CUDA 架構的 GPU(圖形處理器)大規模並行架構的支持。CUDA 架構由 100 多個處理器內核組成,這些內核能夠協作運行來處理應用程序中的數據集。
Tesla 10 系列 GPU(圖形處理器)是第二代 CUDA 架構,包含有專為科學應用程序優化的特性,如 IEEE 標準雙精度浮點硬件支持、以分佈於 GPU(圖形處理器)中的共享內存形式存在的本地數據高速緩存、以及結合內存訪問等。
Jack Dongarra 教授
田納西大學創新計算實驗室主任
GPU(圖形處理器)計算的發展歷史
圖形芯片最初用作固定功能圖形管線。隨著時間的推移,這些圖形芯片的可編程性日益增加,在此基礎之上 NVIDIA®(英偉達™)推出了第一款 GPU(圖形處理器)。1999-2000 年間,計算機科學家,與諸如醫療成像和電磁等領域的研究人員,開始使用 GPU(圖形處理器)來運行通用計算應用程序。他們發現 GPU(圖形處理器)具備的卓越浮點性能可為眾多科學應用程序帶來顯著的性能提升。這一發現掀起了被稱作 GPGPU(GPU(圖形處理器)通用計算)的浪潮。
此處需要解決的問題為 GPGPU 要求使用圖形編程語言來對 GPU(圖形處理器)進行編程,如 OpenGL 和 Cg 等。開發人員需要使其科學應用程序看起來像圖形應用程序,並將其關聯到需要繪製三角形和多邊形的問題。這一方法限制了 GPU(圖形處理器)的卓越性能在科學領域的充分發揮。
NVIDIA®(英偉達™)認識到了讓更多科學群體使用這一卓越性能的強大優勢,決定投資來修改 GPU(圖形處理器),使其能夠完全可編程以支持科學應用程序,同時還添加了對於諸如 C 和 C++ 等高級語言的支持。此舉最終推動誕生了面向 GPU(圖形處理器)的 CUDA 架構。
CUDA 並行架構與編程模型
CUDA 並行硬件架構伴隨有 CUDA 並行編程模型。該模型提供了一個抽象集合,能夠支持實現精細和粗放級別的數據與任務並行處理。編程人員可以選擇使用高級語言(如 C、C++ 和 Fortran)或驅動程序 API(如 OpenCL™ 和 DirectX-11 Compute)來實現並行處理。

NVIDIA®(英偉達™)率先提供支持的語言為 C 語言。一系列面向 CUDA 的 C 語言軟件開發工具支持基於 C 語言,使用最小的關鍵字或擴展集合來對 GPU(圖形處理器)進行編程。對於 Fortran 和 OpenCL 等語言的支持將很快推出。
CUDA 並行編程模型可支持編程人員將問題劃分為粗放子問題,以並行方式獨立解決。之後編程人員再對子問題進行精細並行處理,以便所有子問題能夠以並行方式協作解決。
OpenCL是Apple公司的註冊商標,經Khronos Group公司許可使用。