cuda: как распределяется общая память на банке? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть понимание банков, ширины банка и банковского конфликта.Но я не понимаю, как несколько распределенных статически распределенной памяти распределяются по банкам.

Если предположить: 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]
}

Наконец, порядок объявления меняет расположение разделяемой памяти?

...