[讨论] 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