[討論] Cuda Share Memory使用時機

看板C_and_CPP作者時間11年前 (2014/09/16 03:04), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串1/1
Cuda Share memory大概懂為什麼要用 其一 reuse memory 因為離每個register set 比較近 其二 memory 的連續性 等等 想問說 一維陣列(無reuse的時候) 可以放入到share memory 嗎? 我看到的例子 大多數是 會遇到race condition Cuda實作會將其變成atom operation之類的 要不就是matrix 2D 需要用到整列reuse裝成一個block 跟 blocking切成小塊計算 如果有下列這種1D計算 要如何放入share memory 1.增加不會變慢 or 2.變快為什麼? for(int i=0 ; i<size; i++) a[i]=b[i]*c[i]; 其二是blocking(block cyclic) 基本上是切成小塊個別計算 理論上沒有share memory 怎麼切應該都不會影響到速度吧? 還是我對share memory加速的本質弄錯了?? 請賜教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.199.142 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1410807850.A.66B.html

09/17 00:06, , 1F
顧名思義 最大用途是在Threads間share
09/17 00:06, 1F

09/17 00:07, , 2F
但還是有些沒有reuse的會用到shared memory
09/17 00:07, 2F

09/17 00:09, , 3F
像是register不夠用 或是memory access pattern不好
09/17 00:09, 3F

09/17 00:11, , 4F
把他先照順序搬一份到shared memory當cache用
09/17 00:11, 4F
文章代碼(AID): #1K5pWgPh (C_and_CPP)