CUDA Academy · Aula

atomicAdd e funções relacionadas

Operações de leitura-modificação-escrita implementadas pelo hardware.

Aula 2 de 413 etapas

atomicAdd e funções relacionadas é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 2 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.

Uma Etapa Indivisível

Uma operação atômica lê, modifica e escreve um valor como uma única etapa que nenhuma outra linha de execução pode interromper. Isso elimina a corrida. ⚛️

Conheça atomicAdd

atomicAdd recebe um ponteiro e um valor, faz a adição com segurança e retorna o valor antigo. Muitas linhas de execução podem acessar o mesmo endereço sem perder atualizações.

atomicAdd(total, 1);

Corrigindo o Contador com Corrida

Troque o incremento comum por atomicAdd e a contagem ficará correta todas as vezes, independentemente de quantas linhas de execução sejam executadas.

__global__ void count(int* total) {
    atomicAdd(total, 1);
}

O Valor de Retorno É Útil

atomicAdd retorna o valor armazenado antes da sua adição. Esse valor antigo é uma posição exclusiva que você pode usar como índice ou número de senha.

int slot = atomicAdd(counter, 1);

Uma Família Inteira

atomicAdd tem muitos companheiros: atomicSub, atomicMax, atomicMin, atomicExch, atomicAnd, atomicOr e atomicXor funcionam da mesma maneira atômica.

Trocando um Valor

atomicExch armazena um novo valor e retorna o antigo em uma única etapa. É útil para assumir sinalizadores ou obter com segurança um estado anterior.

int prev = atomicExch(flag, 1);

Máximo e Mínimo Atômicos

atomicMax atualiza o destino somente se o seu valor for maior. É perfeito para encontrar um máximo global entre todas as linhas de execução sem corridas.

atomicMax(best, myValue);

Tipos Compatíveis

As operações atômicas abrangem inteiros, valores sem sinal e, em hardwares mais recentes, também números de ponto flutuante e de dupla precisão. Verifique sempre se o seu tipo e a sua arquitetura são compatíveis com a chamada desejada.

As Operações Atômicas Têm um Custo

As operações atômicas serializam as linhas de execução que apontam para o mesmo endereço. A contenção intensa em um único local se torna um gargalo, portanto use-as somente quando necessário.

Distribua a Carga

Reduza a contenção fazendo com que as linhas de execução atualizem endereços diferentes e depois combinem os resultados. Menos colisões significa que as operações atômicas continuam rápidas.

Operações Atômicas versus Reduções

Para somar vetores enormes, uma redução em árvore geralmente supera uma enxurrada de operações atômicas. Recorra às operações atômicas quando as atualizações forem esparsas ou irregulares.

Verificação Rápida

Teste seu domínio do comportamento de atomicAdd.

Recapitulação: atomicAdd e Companheiros

Você conheceu a família de operações atômicas, corrigiu o contador com corrida e aprendeu que as operações atômicas retornam o valor antigo, mas custam tempo sob contenção. ✅

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 “atomicAdd e funções relacionadas” é grátis?

Sim — o texto completo de “atomicAdd e funções relacionadas” é 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 “atomicAdd e funções relacionadas”?

Operações de leitura-modificação-escrita implementadas pelo hardware. 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 2 de 4.

Quanto tempo leva a aula “atomicAdd e funções relacionadas”?

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. Condições de corrida na GPU
  2. atomicAdd e funções relacionadas
  3. Construa um histograma
  4. Operações atômicas personalizadas com atomicCAS
← Voltar para CUDA Academy