[討論] Cuda Share Memory使用時機

作者: pauliaia   2014-09-16 03:04:07
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加速的本質弄錯了??
請賜教
作者: mike0227 (我又小看了那複雜的世界)   2014-09-17 00:06:00
顧名思義 最大用途是在Threads間share但還是有些沒有reuse的會用到shared memory像是register不夠用 或是memory access pattern不好把他先照順序搬一份到shared memory當cache用

Links booklink

Contact Us: admin [ a t ] ucptt.com