Aula 14: Coalescing de Memória Global — o conceito
Global memory (a DRAM do device) é a maior, mas também a mais lenta memória da GPU, e o hardware a lê em transações de um bloco de endereços contíguo — normalmente 128 bytes de cada vez. Quando todas as 32 threads de um warp acessam endereços consecutivos, por exemplo a[i] com i = o índice global, u
Imagine um regador atendendo 32 mudas. Se as mudas estão em uma fileira bem próxima, uma única despejada molha todas elas. Se cada muda está 32 passos da próxima, você precisa de 32 viagens separadas ao regador para as mesmas 32 mudas — a mesma água, 32 vezes o trabalho.
- coalescing
- Quando threads consecutivas em um warp acessam endereços consecutivos, de modo que o hardware atende a todas elas em uma única transação de memória.
- memory transaction
- Um bloco de endereços contíguo (normalmente 128 bytes) que o hardware lê ou escreve em uma única operação contra global memory.
- stride
- A distância entre os endereços de duas threads vizinhas. Um stride de 1 é contíguo (coalesced); um stride grande espalha os acessos.
- bandwidth
- A quantidade de bytes úteis movidos de ou para a memória por unidade de tempo. Um acesso espalhado desperdiça isso porque cada transação traz bytes desnecessários.