2010-04-15 52 views
22

我正在研究如何使用GPU來處理流數據。我有兩個選擇,但不能決定走哪條路?OpenCL或CUDA要走哪條路?

我的指標分析如下:

  1. 易於使用的(好API)
  2. 社區和文檔
  3. 性能
  4. 未來

我會在C代碼和Linux下的C++。

+1

另請參閱:http://stackoverflow.com/questions/2384930 – 2010-04-16 06:31:16

回答

36

的OpenCL

  • 從你的產品代碼接口
  • 便攜式不同的圖形硬件之間
  • 有限的操作預先製備,但快捷方式

CUDA

  • 單獨的語言(CUDA C)
  • nVidia的硬件僅
  • 在代碼(在一個類似C語言編碼)
  • 很多分析和調試工具幾乎完全控制

底line - OpenCL是便攜式的,CUDA只是nVidia。然而,作爲一門獨立的語言,CUDA功能更強大,並且擁有許多非常好的工具。

  1. 使用簡單 - OpenCL是更容易使用開箱即用,但一旦你安裝了CUDA編碼環境這幾乎就像在C.編碼
  2. 社區和文檔 - 都有廣泛的文檔和示例,但是我認爲CUDA更好。
  3. 性能 - CUDA允許更好的控制,因此可以更好地進行微調以獲得更高的性能。
  4. 未來 - 很難說真的。
+9

實際上,使用OpenCL還有一個優點,它可以並行處理CPU中的任務。 – systemsfault 2010-04-15 12:11:12

+0

@holydiver,有效點,但你問關於GPU :) – 2010-04-15 12:17:53

+4

@holydiver,在這種精神下,你可以說Windows和MacOS X都沒有光明的未來:> – 2010-04-15 12:46:25

17

我個人的經驗是:

  1. API:OpenCL的有稍微複雜的API。不過大多數時候你會花時間編寫內核代碼,這裏兩者幾乎完全相同。

  2. 社區:CUDA有一個更大的社區,然後OpenCL直到現在,但這可能會即將推出。

  3. 文檔:兩者都有很好的文檔記錄。

  4. 性能:我們取得了這樣的經驗,即OpenCL驅動程序尚未完全優化。

  5. 未來:未來在於OpenCL,因爲它是一個開放標準,不限於供應商或特定硬件!

這個評估是從2010年開始的,所以可能已經過時了。

6

除非您有明確的理由使用CUDA,否則一路OpenCL。 OpenCL除了在GPU上運行之外,還可以在像Intel i7這樣的多核上運行良好。通過使用OpenCL,您可以運行在從Droid手機到全球最大的超級計算機Blue Waters的IBM Power7計算節點的更廣泛的硬件上,該計算機應該在明年上線。