[討論] CUDA 計算與記憶體位置問題

看板C_and_CPP作者 (霸王鮮果汁)時間13年前 (2013/01/22 14:11), 編輯推噓0(0010)
留言10則, 7人參與, 最新討論串1/1
請問各位 我有數據資料 data A[60000] data B[60000] data C[60000] data D[60000] 以上裡面有值而我把資料存在__device__中 然後宣告一個cudaMalloc陣列 testE[60000] 如果我需要計算 testE[idx] =((data A[idx]+dataC[idx]+dataD[idx])/dataB[idx]); 以上是我需要運算的過程跟資料量 如果我想改成利用shared memory來加速!! 因為數據過大,shared塞不下 想請問該怎麼做比較好? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.232.219.97

01/22 14:30, , 1F
需要一次放進去嗎?無法分段?
01/22 14:30, 1F

01/22 14:34, , 2F
可分段!!但是這樣不會變慢嗎?
01/22 14:34, 2F

01/22 14:53, , 3F
慢不慢是測了才知道的事情
01/22 14:53, 3F

01/22 16:15, , 4F
真的會比較慢
01/22 16:15, 4F

01/22 17:21, , 5F
跳 tone 問, C++ 裡的 vararray 是不是有做這方面優化?
01/22 17:21, 5F

01/22 22:07, , 6F
這計算挺簡單的 idx會跳嗎?
01/22 22:07, 6F

01/22 22:37, , 7F
如果idx是線性n~m的話shared memory不會有任何加速
01/22 22:37, 7F

01/23 08:41, , 8F
讀/寫只有一次的話shared memory不會有任何加速
01/23 08:41, 8F

01/23 13:53, , 9F
樓上, 這倒不一定, 可以參考精美的cuda transpose 例子
01/23 13:53, 9F

01/25 09:10, , 10F
看了一個GTX280的例子,時間減少不到1%算加速嗎……?
01/25 09:10, 10F
文章代碼(AID): #1G_Yslav (C_and_CPP)