atomicAdd e funções relacionadas
Operações de leitura-modificação-escrita implementadas pelo hardware.
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. ✅
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
- Condições de corrida na GPU
- atomicAdd e funções relacionadas
- Construa um histograma
- Operações atômicas personalizadas com atomicCAS