2016-05-14 28 views
0

在OpenCL中,有可能由多個GPU組成的系統隱式劃分作業,而程序員不明確劃分工作負載?
例如說我有一個由1個SM192核心GPU組成的GPU,並運行一個矩陣乘法,這個算法正常工作。現在我添加了另一個相同的GPU,並且OpenCL使用GPU來計算它的矩陣乘法,而不是程序員將工作負載分配給每個GPU。多GPU的隱式工作

回答

1

我不認爲OpenCL可以自動做到這一點(至少在1.2),但有一些OpenCL包裝可以自動處理多個計算設備。我沒有使用OpenCL CodeBench,但他們聲稱他們有多個計算設備的負載平衡。

+0

那麼在這兩塊GPU卡上各有1個SM,系統總共會識別出2個SM存在於系統中? – pradyot

0

你可以只統一設備的記憶,並且只能使用opencl及更高版本的2.0。

內核在命令隊列中排隊,並且它們使用(並綁定到)單個設備創建。所以他們只能在單個設備上工作。但是多個命令隊列可以在可以利用隱式緩衝區同步的通用上下文中服務。

拆分工作不能隱式完成,因爲它在運行時無法知道哪個工作項訪問哪個內存地址。

一旦你編寫了一個可用的單設備封裝器,添加多GPU支持並不麻煩。