У меня есть понимание банков, ширины банка и банковского конфликта.Но я не понимаю, как несколько распределенных статически распределенной памяти распределяются по банкам.
Если предположить: 4 байта ширины банка 32 банка sizeof (int) == 4 байта
Тогда как бы shared1 и shared2 были бы распределены по банкам ?Будет ли общий ресурс 2 размещен сразу после следующего общего ресурса 1 (т.е. последнее значение общего ресурса 1 хранится в банке 0, а первое значение общего ресурса 2 хранится в банке 1)?или будет дополнен конец shared1 (т.е. последнее значение shared1 хранится в банке 0, а банки 1 ~ 31 дополняются, а shared 2 начинается с банка 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]
}
Наконец, порядок объявления меняет расположение разделяемой памяти?