CUDA

常見問題(FAQ)

CUDA是什麼?

CUDA是平行運算架構在GPU中的名稱。 提供了CUDA架構編程的全套工具包,其中包括編譯器、調試器、分析器、庫以及開發者交付運用CUDA架構的生產質量產品所需的其它信息。 CUDA架構也支持C和Fortran等標準語言,以及OpenCL和DirectCompute等用於GPU計算的API。

使用CUDA的性能提升如何?

這要取決於具體問題在該架構上的映射情況。 對於數據並行應用,提速10倍到200倍不等。

有關使用CUDA加速應用程序的示例,請查看「CUDA專區」網頁@ www.nvidia.com.tw/cuda

CUDA支持哪些操作系統?

CUDA支持Windows XP、Windows Vista、Windows 7、Linux和OS X。 這些操作系統的32位和64位版本都支持。

哪些應用支持CUDA?

一些消費類應用示例

  • Badaboom – 視頻編碼
  • MotionDSP – vReveal(視頻增強 – 降噪、提高解析度、穩定圖像)
  • ArcSoft – SimHD (提升到高清)
  • CyberLink– PowerDirector 7(編碼、視頻過濾)
  • Pegasys – TMPGEnc 4.0 Xpress(視頻過濾,包括降噪、銳化)
  • SETI@home(分析搜尋外星人的無線電望遠鏡信號)

對於遊戲玩家而言,《鏡之邊緣》、《聖域2》以及《雪域危機》等遊戲可以用CUDA來進行PhysX遊戲加速

CUDA是一種編程語言嗎?

CUDA是我們用於GPU計算的架構,能在GPU上運行標準C語言。 為實現這一點,定義了一套通用計算指令集 (PTX) 和一小部分C語言擴展集,從而讓開發者充分利用我們GPU中強大的平行運算能力。 Portland Group 為CUDA架構上的Fortran提供支持,而其它一些公司則為Java、Python、.NET等其它語言提供支持。

我們用術語「CUDA C」,來描述開發者指定GPU上要執行的功能、GPU內存如何使用、應用程序如何使用GPU的並行處理功能所使用的語言和一小部分擴展集。

的C語言編譯器是使用Edison Design Group C語言分析器及Open64編譯器構建的,並且它進行了擴展以支持CUDA C擴展。 很多CPU公司在他們的編譯器中都廣泛使用EDG分析器和Open64編譯器。

GPU編程難嗎?

這實際上就是重要代碼的並行處理難不難的問題。 無論是對於CPU還是對於GPU,並行處理的行業難題都在於確定哪些算法佔用了大量的計算時間(關鍵路徑),並且只移植這些將擴展的算法。

CUDA架構大大減輕了手動管理並行機制的負擔。 為CUDA架構編寫的算法實際上就是可以在多個不同處理器上同步運行的串行算法,常常稱之為「內核」。 GPU通過在GPU中的多個處理器上啟動成千上萬個實例,來提取該內核並對它執行並行處理。 由於大多數算法是作為串行算法啟動的,因此移植程序到CUDA架構不費吹灰之力, 就和使用CUDA C將一個循環轉換為一個CUDA內核一樣簡單。 您不必像對待現代多核CPU一樣,將整個程序完全重構為多線程程序。

OpenCL和DirectCompute在CUDA架構所使用的編程模式方面極其相似,很多開發者認為這種編程模式比並行處理的其它方法更容易獲得出色、可擴展的性能。

現在有學生可以學的GPU計算課程嗎?

在伊利諾伊大學上了第一堂計算課程的12個月內,就有300多所大學、學院和學校開設使用CUDA SDK和工具包的並行編程課程。 另外,還有1000多所大學開設了一般性的並行編程課程,為學習如何對其專攻領域的算法應用並行處理的學生傳授基礎知識。 這是幾十年來計算機科學教學領域發生的最大轉變之一。

有關提供CUDA架構編程課程的學校的完整地圖和名單

支持OpenCL或DirectCompute嗎?

當然 - 我們支持所有標準API。 在GDC 09上,展示了用我們的C語言編程環境以及API、OpenCL、DirectCompute編寫的程序示例。 OpenCL是在GPU上開發的,而在十二月份舉行的亞洲SIGGRAPH大會上率先展示了在GPU上運行的OpenCL應用程序。 2009年8月,針對戰略開發商發佈了OpenCL驅動程序。 同時也是在其GPU中率先提供DirectCompute支持的公司。

如需瞭解更多信息,敬請訪問http://www.nvidia.com.tw/object/cuda_opencl_new_cn.html and http://www.nvidia.com.tw/object/cuda_directcompute_cn.html

CUDA與OpenCL有何關聯?

OpenCL及其它編程界面都是受CUDA C編程模式的啟發。 OpenCL、DirectCompute、CUDA C 和Portland Group的CUDA Fortran擴展都是使用相似的理念來將並行應用程序移植到GPU上。

推薦開發者使用的語言有哪些? 是OpenCL、CUDA C,還是CUDA FORTRAN或DirectCompute? 為什麼現在有了OpenCL有些開發者還是堅持使用CUDA C? 它對開發者有什麼好處?

這要歸結於個人喜好。 開發者喜歡使用他們最感得心應手的編程界面,也就是能支持他們慣用的開發環境、庫以及操作系統的編程界面。

由於和CUDA架構支持以上所有語言,因此選擇哪種語言完全在於開發者本人。 開發者對編程環境的選擇基於這幾個典型的問題:要開始編碼的時間、現在所使用的編程語言、需要支持的操作系統、需要實施的其它代碼或庫、供應商技術支持、開發者使用的傳統代碼等等。

隨著其它語言和API的支持逐漸成熟,開發者可以根據需要來移植代碼,因為很多編程理念都是相似的。 現今CPU的開發就是這樣,沒人強迫開發者使用C、C++、C#、Java – 而是由開發者自行選擇,而最終開發者都會受益,因為他們的選擇空間非常大。