我在寫一個多GPU並行算法。我面臨的一個問題是如果我將一個cl_mem推入多個設備並讓它們同時運行相同的內核,會發生什麼情況。內核將更改傳遞給設備的內存。OpenCL:發送相同的cl_mem到多個設備
編碼和調試OpenCL代碼非常耗時。所以在開始之前,我想從同行的Stackoverflow用戶那裏得到一些建議 - 我想知道在以下兩種情況下做這種事情的結果(例如,在執行過程中是否會出現異常?數據是否同步?當CL_MEM_COPY_HOST_PTR使用由該cl_mem指向相同的內存區域得到正確複製到設備等):
- 存儲與CL_MEM_COPY_HOST_PTR
- 創建的內存與CL_MEM_USE_HOST_PTR
它說:「一個命令隊列中的共享資源被其他命令隊列使用時修改共享資源的結果未定義。」這實際上就是我正在做的 - 在多個GPU上更改一個cl_mem。因此,程序開始運行一分鐘左右後,我會得到隨機藍屏...非常奇怪。 – aaronqli
當多個設備上的多個命令隊列寫入同一個內存緩衝區但在此緩衝區的不同區域時,情況如何呢? – MiKom
這是未定義的。如果我沒有記錯的話,就在同一附錄中提到。 –