Solapar copias y cálculos
Oculte las transferencias detrás de los kernels.
Solapar copias y cálculos es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 4 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.
La idea principal
Las mejoras de velocidad reales se obtienen haciendo dos cosas a la vez: copiar un fragmento de datos mientras la GPU calcula sobre otro. 🔀
Motores de hardware independientes
Una GPU tiene motores de copia y unidades de cálculo independientes. El solapamiento funciona porque pueden ejecutarse realmente en paralelo, no solo turnarse.
Se necesita memoria fijada
Las copias asíncronas necesitan memoria del host fijada mediante cudaMallocHost. Un malloc paginable normal fuerza una copia bloqueante que no puede solaparse.
cudaMallocHost(&h_data, bytes);Copias asíncronas
Use cudaMemcpyAsync con un stream para que la transferencia devuelva el control de inmediato y se incorpore a la cola de ese stream junto con los kernels.
cudaMemcpyAsync(d_in, h_in, bytes, cudaMemcpyHostToDevice, s);Divida el trabajo en fragmentos
Divida el array en partes y asigne a cada una su propio stream. Mientras el stream 0 calcula, el stream 1 ya puede estar copiando.
Copiar, calcular y volver a copiar
Cada fragmento realiza los mismos tres pasos en su stream: cargar la entrada, ejecutar el kernel y descargar la salida, todo sin bloquear el host.
cudaMemcpyAsync(d, h, n, H2D, s);
k<<<g, b, 0, s>>>(d);
cudaMemcpyAsync(h, d, n, D2H, s);Cómo se produce el solapamiento
Como los fragmentos están en streams distintos, la GPU puede copiar el fragmento dos mientras sigue calculando el fragmento uno. La línea de tiempo se llena. 📊
Ocultar el coste de PCIe
Las transferencias ya no se suman al tiempo total; quedan ocultas detrás del cálculo. Idealmente, el tiempo de ejecución se reduce aproximadamente al mayor entre el tiempo de copia y el del kernel.
Vigile el stream predeterminado
Una sola llamada accidental al stream predeterminado en mitad del bucle puede serializar todo de nuevo. Mantenga cada operación asíncrona vinculada a un stream real distinto del predeterminado.
Verifíquelo en un perfilador
Abra Nsight Systems y busque pistas de copia y cálculo que se solapen en el tiempo. Las pistas apiladas y ocupadas indican que la concurrencia es real.
Sincronice al final
Después de emitir todos los fragmentos, llame una vez a cudaDeviceSynchronize para que todos los streams terminen antes de leer los resultados finales en el host.
cudaDeviceSynchronize();Comprobación rápida
¿Qué necesita una transferencia asíncrona para solaparse con el cálculo?
Repaso
Al dividir el trabajo entre streams con memoria fijada y copias asíncronas, oculta las transferencias detrás del cálculo y mantiene la GPU realmente ocupada. 🚀
Preguntas frecuentes
¿La lección «Solapar copias y cálculos» es gratis?
Sí — el texto completo de «Solapar copias y cálculos» 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 «Solapar copias y cálculos»?
Oculte las transferencias detrás de los kernels. 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 4 de 4.
¿Cuánto tiempo toma la lección «Solapar copias y cálculos»?
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
- La trampa del stream predeterminado
- Crear y usar streams
- Eventos para medir y sincronizar
- Solapar copias y cálculos