2011-05-17 101 views
23

我開始了一個需要一些複雜數據處理的瀏覽器項目。 當使用GPU加速時,我使用的算法速度提高了50-100倍。GPU加速數學瀏覽器

我可以在瀏覽器中使用JavaScript,Flash或其他技術。 有什麼方法可以訪問GPU來加速我的數學處理?

+1

WebGL?這是GPU加速。 – Raynos 2011-05-17 19:10:21

+1

看起來像閃存GPU加速處理_by flash_ - 您無法向其發送任意計算請求。 :(http://www.kaourantin.net/2008/05/what-does-gpu-acceleration-mean.html – peteorpeter 2011-05-17 19:21:36

+0

Python怎麼樣?讓Python運行在網頁上是可行的,你可以導入一個Python-GPU庫例如Copperhead或PyCUDA,並在該庫中實現您的算法 – solvingPuzzles 2012-12-29 05:09:29

回答

25

您可以開始嘗試Khronos的WebCL,儘管這仍處於起步階段。像IE,Chrome和Opera這樣的大公司目前還沒有明確的支持計劃,微軟甚至沒有提供任何WebGL支持計劃。這就是說,除了基於WebGL着色器的GPGPU方法之外,WebCL可能是您計算的最佳選擇。 WebCL本質上是一組到OpenCL的JavaScript綁定。因此,發展最有可能與OpenCL的發展密切相關。

雖然如說,對WebCL支持,因爲這一刻沒有標準,也不普遍,目前有以下可用資源:

  • Khronos組織具有官方網站here
  • 諾基亞研究部報告其在their dedicated site上的實驗,其中包括FireFox的WebCL擴展(目前只有第18版)。致力於此擴展的開發人員還在https://twitter.com/NokiaWebCL上有Twitter。
  • 三星用Web瀏覽器測試Safari瀏覽器的實驗是available here
  • 摩托羅拉有一個OpenCL的基於NodeJS的實現available here
  • Mozilla本身似乎已經變得活躍了,他們自己的WebCL developments,儘管目前確切的狀態對我來說是未知的。

我最近纔開始玩這個遊戲,但是現在還不能提出超出「相當有趣」的建議。

+1

+1 for WebCL這正是您想要的,一個可靠的JS API for GPU Acceleration – Raynos 2011-05-17 19:42:45

+1

+1非常好,他正在尋找的東西;刪除了我的答案,儘管這確實使用了FireFox擴展,這是我建議必須完成的。 – Chad 2011-05-17 20:15:29

+1

WebCL的支持現在是什麼樣的? – Stefnotch 2016-10-09 14:31:59

0

取決於你想要做什麼,但我相信它可能是更容易運行在服務器上的GPU的計算,讓他們返回給瀏覽器客戶端

0

看到有人拉這會很有趣用Flash和Javascript關閉。這完全取決於你必須多頻繁地進行計算。

如果您只需執行一次迭代計算(實質上是一次「渲染」過程或一次繪製調用),則您可以像設置Flash中的任何Stage3D項目一樣設置VertexShader3D和FragmentShader3D,並且然後從該渲染的BitmapData返回結果:

//You probably want this to be the same dimensions as your context3D dimensions: 
_context3D.drawToBitmapData(yourBitmapDataDestination); 

然後,您可以將信息傳遞給Javascript。我不確定BitmapData是否可以直接傳遞,但我相當積極,您必須首先序列化數據(作爲數組或字符串等)。你必須看看如何使用ExternalInterface類在Flash和Javascript之間進行通信。

一旦你在JavaScript中得到了你的嘎吱嘎嘎的數字,就不管你用這些值做什麼!

如果您正在尋求一個需要「每幀」執行的進程的解決方案,那麼Flash,GPU和JavaScript之間的信息交換可能並不是最佳的(如遊戲循環,幀)。

注意:對不完整的答案抱歉,但我主要只是想引導您進入一個可能的解決方案,如果您仍然在考慮使用Flash作爲您的GPU訪問點。

1

由於這個老問題是我在這個主題上的熱門搜索熱門,所以我想我會提到一些進一步的探索使我轉向了gpu.js,它將WebGL封裝在實用功能中。

編輯:...並跳過GitHub問題等從那裏導致我也weblas以及。我還沒有比較這兩個,但將這個答案轉換爲社區wiki,以防某些具有這些經驗的人看到了這一點,並且需要添加內容。