為什麼Google選擇CUDA而不是OpenCL作為TensorFlow的後端?

時間 2021-05-06 23:39:45

1樓:saturnman

主要是利益問題,OPENCL如果相容各種異構裝置,要同時高效能利用裝置的效能,那麼必然是天量的裝置相關識別和優化,簡直是費力不討好,甚至裝置購買成本都沒辦法搞定。CUDA就好多了,只有英偉達自己家的產品,他們會細緻優化不斷配合不同版本硬體和驅動程式。個人嚴重不看好OPENCL,但是這個是能達到通用性也還不錯,就是說可以達到能用,但是要高水平利用硬體效能,同時保證穩定性,幾乎永遠無法完成。

最近明星專案TVM不錯,如果機器學習相關的任務。至少在機器學習領域覺得非常有前途,設計架構很有遠見。

2樓:不欠你這貪驢什麼

答案來自:https://www.

zhihu.com/question/54697898/answer/511439484因為2023年,由史丹福大學伊恩巴克(Ian Buck)領導的乙個研究小組公布了Brook模型,這是第乙個被廣泛採用的用資料並行結構擴充套件C的程式設計模型。Buck後來加入英偉達,並於2023年領導CUDA的推出,這是首個針對GPU的通用計算的商業解決方案。

在 MacOS 10.14 的更新文件中,蘋果表示使用 OpenGL 和 OpenCL 構建的應用可以繼續在 macOS 10.14 中執行,但這些遺留技術在 macOS 10.

14 中不推薦使用。現在使用 OpenGL 的遊戲和應用應轉向 Metal 。 同樣,使用 OpenCL 進行計算任務的應用也應該採用 Metal 和 Metal Performance Shaders 。

蘋果的 OpenGL Stack 多年來一直沒有更新,已嚴重落後於 Khronos Group 的 OpenGL 4.x 。

3樓:立黨

因為科研工作者不指望自己的東西能相容多少不同的裝置,能在成千上萬個作業系統和硬體上給大家跑。

他們只希望自己的電腦上跑順溜兒了,別出太多么蛾子,效能第一,可靠性第一,快一點兒把結果跑出來就好了。

反正顯示卡也不是自己掏錢買的,多花點兒錢不心疼。但是為了貪便宜而選了OpenCL,遇上個不靠譜的顯示卡廠商給你留個bug或者效能上的坑,堵心和浪費的時間可是自己的。

然後前面100個人選擇了CUDA,那麼你git clone乙個框架,有很大概率上是用的cuda和cudnn而不是opencl,那麼你自然也就繼續用cuda了。

說白了就一句話:花錢買舒心。

4樓:rhett

不說什麼深層次的, 單看cuda 的API命名, 你就知道什麼叫一目了然了。反觀opencl, 不查文件完全不知道函式是幹嗎的。另外,文件也不咋地。

GPU這個東西,還是要軟硬結合,硬體設計新的特性,軟體馬上跟上。你看V100新搞的 tensor core, cuda9 馬上就支援了。這軟硬結合齊頭並進的速度,會讓你覺得很靠譜。

5樓:

這個問題如果是,為什麼Google不用CUDA而是使用open cl做深度學習,那答案絕對是商業原因。

Google眼紅核彈廠都眼紅到自己造TPU了,他怎麼可能會因為商業原因去用CUDA。

6樓:enpeng xu

從driver的performance和quality兩方面,nv的cuda無疑都是完勝opencl,至少現在而言,跨平台並不那麼重要,速度才是第一位的。

cuda10 2怎麼選擇tensorflow gpu

Stefen 你怎麼選擇gpu和你現在cuda其實關係不是太大我想你肯定裝了Anaconda了吧那就為你的程式建乙個新的環境如果程式中是需要tensorflow gpu 1.13.1 以我為例那你就在環境中輸入 conda install tensorflow gpu 1.13.1 他就會為你的環境...

Google 為什麼不提供 Google 的介面給微軟?

目前Google 的API 是比較有限的,只能獲取資訊 https Note The Google API currently provides read only access to public data而微博的的API 是比較全面的 http 首頁。應該是微軟不願意放出Windows 8 後被...

CUDA中為什麼要有Grid的概念?

最主要的原因是,由於硬體設計的原因,乙個block裡能容納的thread數目有限 到目前為止,CC7.5,這個數目都是1024 對於大多數應用來說,僅僅1024個thread肯定是不夠的,所以要在block上面再加一層thread結構。針對你的問題,為什麼要把blocks組成Grid?為什麼不呢,自...