Aula 13: A Hierarquia de Memória
Uma GPU tem vários tipos de memória que se diferenciam em velocidade, escopo e tempo de vida. Registers são a memória mais rápida: toda variável local simples num kernel fica num register, privado a uma única thread e existindo apenas enquanto a thread corre. Shared memory, declarada com __shared__,
Pense numa cozinha: registers são suas mãos — as mais rápidas, mas só suas e só por um instante. Shared memory é a bancada partilhada de uma equipa na cozinha — rápida e acessível para toda a equipa, mas não para uma equipa em outra cozinha. Global memory é a geladeira gigante no depósito — enorme e atende a todos, mas a caminhada até lá é lenta. Constant memory é o quadro de receitas na parede que todo mundo lê mas ninguém muda.
- registers
- A memória mais rápida, privada a uma única thread. Toda variável local simples num kernel fica aqui e existe apenas enquanto a thread corre.
- shared memory
- Memória on-chip declarada __shared__, partilhada por todas as threads do mesmo block. Bem mais rápida que global, mas não atravessa blocks.
- global memory
- A DRAM do device: grande, lenta, acessível por todo o grid e persiste entre lançamentos. É para cá que os dados são copiados a partir do host.
- constant memory
- Memória read-only declarada __constant__ e armazenada em cache. Excelente quando todas as threads leem o mesmo valor.