CUDA Academy · Aula

O que é uma transação de memória

Linhas de cache e segmentos de 32 e 128 bytes.

Aula 1 de 413 etapas

O que é uma transação de memória é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CUDA Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CUDA Academy inclui 4 aulas no total.

A memória vem em blocos

A GPU nunca busca um único byte isoladamente. Ela move a memória em blocos de tamanho fixo chamados transações de memória, mesmo que o senhor tenha solicitado apenas um valor.

O warp faz o pedido em conjunto

Um warp de 32 threads emite suas cargas ao mesmo tempo. O hardware reúne as 32 solicitações e tenta atendê-las com o menor número possível de transações.

Linhas de cache e segmentos

A memória global é dividida em segmentos alinhados, normalmente com 32 ou 128 bytes. Cada transação carrega um segmento inteiro, nunca uma parte dele.

Por que 128 bytes são importantes

Uma linha de 128 bytes contém exatamente 32 números de ponto flutuante de quatro bytes. Isso corresponde a um valor para cada thread de um warp, portanto um warp organizado pode ser atendido por uma única transação.

// 32 threads x 4-byte float = 128 bytes = one line

O alinhamento é fundamental

Os segmentos começam em endereços fixos e alinhados. Se seus dados começarem no meio de um segmento, um único warp poderá atravessar duas linhas e exigir uma transação extra.

Pagando pelos bytes que o senhor ignora

Se um warp acessar apenas alguns bytes de uma linha de 128 bytes, a GPU ainda moverá os 128 bytes. Os bytes não utilizados são largura de banda desperdiçada, pela qual o senhor pagou mesmo assim.

Contando as transações

O desempenho muitas vezes se resume a um número: quantas transações um warp precisa. Menos transações significam menos dados lidos e uma conclusão mais rápida.

O melhor caso

Quando 32 threads leem 32 números de ponto flutuante vizinhos a partir de um endereço alinhado, a GPU responde com uma linha limpa de 128 bytes. Essa é a transação única ideal.

float v = data[blockIdx.x * blockDim.x + threadIdx.x];

O pior caso

Se cada thread buscar um valor distante dos valores das vizinhas, o warp poderá disparar até 32 transações separadas, trazendo 32 linhas inteiras para um uso mínimo.

A largura de banda é o limite

A maioria dos kernels é limitada pela velocidade com que move a memória, não pela matemática. Reduzir a quantidade de transações aumenta diretamente sua largura de banda efetiva. 🚀

Prepare o terreno

Agora o senhor conhece a unidade de custo: a transação do tamanho de um segmento. Todo truque de coalescência apresentado a seguir trata, na verdade, de agrupar os warps no menor número possível dessas transações.

Verificação rápida

Teste sua compreensão do tamanho das transações.

Recapitulação

O senhor aprendeu que a GPU move a memória em segmentos fixos e que um warp é atendido pelo menor número de transações possível. Menos transações, kernel mais rápido. 🎉

Grátis para começar

Aprenda C++ com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “O que é uma transação de memória” é grátis?

Sim — o texto completo de “O que é uma transação de memória” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CUDA Academy, atualize para CoddyKit PRO. O curso de CUDA Academy inclui 4 aulas no total.

O que vou aprender em “O que é uma transação de memória”?

Linhas de cache e segmentos de 32 e 128 bytes. Você pratica CUDA Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar CUDA Academy?

Nenhuma experiência prévia é necessária. CUDA Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “O que é uma transação de memória”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de CUDA Academy?

Sim. Cada aula de CUDA Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O que é uma transação de memória
  2. Leituras coalescidas versus entrelaçadas
  3. Estrutura de vetores versus vetor de estruturas
  4. Meça a largura de banda efetiva
← Voltar para CUDA Academy