我了解银行,银行宽度和银行冲突。但是我不理解如何通过存储区来安排多个静态分配的共享内存。
如果我假设: 4字节的银行宽度 32家银行 sizeof(int)== 4个字节
那 shared1 和 shared2 将如何在整个银行中布局?共享2是否将紧接在shared1之后放置(即,shared1的最后一个值存储在存储区0中,shared2的第一个值存储在存储区1中)?还是会填充shared1的末尾(即,shared1的最后一个值存储在bank 0中,并且填充bank 1〜31,并且shared 2从下一行的bank 0开始)?
__device__ void main( void ){
__shared__ int shared1[33];
__shared__ int shared2[31];
...
}
如果在嵌套函数中分配了shared2,这种行为会有所不同吗?:
__device__ void main( void ){
__shared__ int shared1[33];
fun<<1, 1>>();
...
}
__device__ void fun( void ){
__shared__ int shared2[31]
}
最后,声明顺序是否会更改共享内存的布局?