atomicAdd y funciones similares
Operaciones de lectura-modificación-escritura implementadas por hardware.
atomicAdd y funciones similares es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CUDA Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CUDA Academy incluye 4 lecciones en total.
Un único paso indivisible
Una operación atómica lee, modifica y escribe un valor como un único paso que ningún otro hilo puede interrumpir. Así se elimina la carrera. ⚛️
Conozca atomicAdd
atomicAdd recibe un puntero y un valor, realiza la suma de forma segura y devuelve el valor anterior. Muchos hilos pueden acceder a la misma dirección sin perder actualizaciones.
atomicAdd(total, 1);Cómo corregir el contador con carreras
Sustituya el incremento normal por atomicAdd y el recuento será correcto siempre, independientemente del número de hilos que se ejecuten.
__global__ void count(int* total) {
atomicAdd(total, 1);
}El valor devuelto es útil
atomicAdd devuelve el valor que había antes de realizar la suma. Ese valor anterior es una posición única que puede utilizar como índice o número de turno.
int slot = atomicAdd(counter, 1);Toda una familia
atomicAdd tiene muchos compañeros: atomicSub, atomicMax, atomicMin, atomicExch, atomicAnd, atomicOr y atomicXor funcionan de la misma manera atómica.
Intercambiar un valor
atomicExch almacena un valor nuevo y devuelve el anterior en un solo paso. Resulta útil para adquirir indicadores o recuperar de forma segura un estado anterior.
int prev = atomicExch(flag, 1);Máximo y mínimo atómicos
atomicMax actualiza el destino únicamente si su valor es mayor. Es perfecto para encontrar un máximo global entre todos los hilos sin carreras.
atomicMax(best, myValue);Tipos compatibles
Las operaciones atómicas admiten int, unsigned y, en hardware más reciente, también float y double. Compruebe siempre que su tipo y su arquitectura sean compatibles con la llamada que desea realizar.
Las operaciones atómicas tienen un coste
Las operaciones atómicas serializan los hilos que apuntan a la misma dirección. Una gran contención en una única posición se convierte en un cuello de botella, así que utilícelas solo cuando sea necesario.
Distribuya la carga
Reduzca la contención haciendo que los hilos actualicen direcciones distintas y combinando después los resultados. Menos colisiones permiten que las operaciones atómicas sigan siendo rápidas.
Operaciones atómicas frente a reducciones
Para sumar arrays enormes, una reducción en árbol suele superar a una gran cantidad de operaciones atómicas. Utilice operaciones atómicas cuando las actualizaciones sean dispersas o irregulares.
Comprobación rápida
Compruebe cuánto domina el comportamiento de atomicAdd.
Resumen: atomicAdd y sus compañeros
Ha conocido la familia de operaciones atómicas, ha corregido el contador con carreras y ha aprendido que las operaciones atómicas devuelven el valor anterior, pero tienen un coste de tiempo cuando hay contención. ✅
Aprende C++ con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «atomicAdd y funciones similares» es gratis?
Sí — el texto completo de «atomicAdd y funciones similares» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CUDA Academy, actualiza a CoddyKit PRO. El curso de CUDA Academy incluye 4 lecciones en total.
¿Qué aprenderé en «atomicAdd y funciones similares»?
Operaciones de lectura-modificación-escritura implementadas por hardware. Practicas CUDA Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CUDA Academy?
No se requiere experiencia previa. CUDA Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «atomicAdd y funciones similares»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CUDA Academy?
Sí. Cada lección de CUDA Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Condiciones de carrera en la GPU
- atomicAdd y funciones similares
- Construir un histograma
- Atómicos personalizados con atomicCAS