2016-01-15 17 views

回答

1

好的,這個問題真的很模糊。讓我告訴你關於OpenCL的一個非常基本的事實。當您在同一平臺上使用異構設備時,OpenCL將非常有用。即在單個物理芯片上的不同設備,如FPGA的GPU DSP。在這種情況下,您可以通過使用單一語言編寫代碼來利用每個器件的處理能力和計算能力,而不是使用不同語言編程每個芯片,而OpenGL負責編輯各種器件。現在你要求的是網絡上智能設備之間的超級計算機。你可以使用OpenCL嗎?在理論上是的,你可以假設你寫了一個驅動程序,以某種方式無線地ping你的設備併發送一個內核來執行,但即使你真的這樣做了,即使在同一個平臺上,數據傳輸的成本也是非常高的,僅在數據量較大時才使用GPU/FPGA,並且將數據DMA傳輸到設備所需的時間爲< =實際計算的時間。即爲了從您的設備獲得最佳性能,您需要確保數據傳輸時間到您的設備< =計算所需的時間。如果這些基本標準不滿足,那麼不​​妨使用主機CPU進行計算。

現在看看你的情況,你想將OpenCL內核轉儲到通過非確定性網絡物理連接的設備,所以即使在最好的情況下,將數據傳輸到遠程設備也會符合要求幾秒鐘,而你的計算時間將僅僅是毫秒。因此,如果您在3g/4g網絡上有10部手機,並且所有這些手機都連接到主機處理器,並且假設您設法編寫這些驅動程序以使所有這些無線設備都可以檢測爲OpenCL設備,如果您確實可以說高斯過濾器,那麼您將圖像分段發送到這些設備所花費的時間將比手臂處理器執行計算本身所花費的時間指數地高。

總而言之,你想做的事情可能是可能的,但這樣做是對時間資源和能量的絕對浪費。即使你真的做到了,在性能,計算能力等方面也沒有多大的好處。想一想。

相關問題