Para NVIDIA (e AMD), GPUS, a memória local é dividida em bancos de memória. Cada banco pode endereçar apenas um conjunto de dados por vez, portanto, se um halfwarp tentar carregar / armazenar dados de / para o mesmo banco, o acesso terá que ser serializado (este é um conflito de banco). Para gt200 gpus existem 16 bancos (32 bancos para fermi), 16 ou 32 bancos para AMD gpus (57xx ou superior: 32, tudo abaixo: 16)), que são intercalados com uma granuidade de 32 bits (portanto, o byte 0-3 está em banco 1, 4-7 no banco 2, ..., 64-69 no banco 1 e assim por diante). Para uma melhor visualização, basicamente se parece com isto:
Bank | 1 | 2 | 3 |...
Address | 0 1 2 3 | 4 5 6 7 | 8 9 10 11 |...
Address | 64 65 66 67 | 68 69 70 71 | 72 73 74 75 |...
...
Portanto, se cada thread em um halfwarp acessa valores sucessivos de 32 bits, não há conflitos de banco. Uma exceção a esta regra (cada thread deve acessar seu próprio banco) são os broadcasts: Se todos os threads acessam o mesmo endereço, o valor é lido apenas uma vez e transmitido a todos os threads (para GT200, tem que ser todos os threads no halfwarp acessando o mesmo endereço, iirc fermi e AMD gpus podem fazer isso para qualquer número de threads acessando o mesmo valor).