2014-10-30 47 views
0

對於全局內存中的數組X,我需要在每個內核執行中寫入兩個值。在OpenCL中改善內存訪問時間

X[p]=mul1+mul2; 
X[p+a]=mul1-mul2; 

這裏'a'的範圍可以從0到很高的值。我觀察到這兩個寫法在很大程度上減緩了我的內核。

  1. 什麼是提高OpenCL內存寫入性能的最佳方法?
  2. 合併內存寫入可能只適用於內核內寫入?
+0

'p'值是線程相關的,'a'是內核常量嗎? – GaTTaCa 2014-11-03 11:04:15

+0

是的,p取決於線程ID和a是一個常量。 – 2014-11-03 17:04:13

+0

你這樣做的方式非常優化。唯一能夠以有意義的方式幫助你的事情是使用具有更快內存的設備。 – mfa 2014-11-04 16:22:35

回答

0

假設p與您的線程ID是線性相關的,您正在做的事情是正確的。您可以嘗試將X+a作爲第二個參數傳遞給您的內核,以執行Y[p]=mul1-mul2;而不是X[p+a]=mul1-mul2;,但我懷疑它確實會更快。 關於你的第二個問題,如果你正在考慮有兩個內核,一個執行加法,另一個是減法並且同時啓動它們,你不能確定它們將並行運行。我再次懷疑它最終會更快。