CUDA Academy · Lección

atomicAdd y funciones similares

Operaciones de lectura-modificación-escritura implementadas por hardware.

Lección 2 de 413 pasos

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. ✅

Gratis para empezar

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

  1. Condiciones de carrera en la GPU
  2. atomicAdd y funciones similares
  3. Construir un histograma
  4. Atómicos personalizados con atomicCAS
← Volver a CUDA Academy