Crear y usar streams
Emita colas de trabajo independientes.
Crear y usar streams 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.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
Independent Work Queues
A non-default stream is your own work queue. Two streams run independently, so the GPU can make progress on both at once. 🧵
The Stream Handle
A stream lives in a cudaStream_t handle. You create it once, pass it to your calls, and destroy it when you are done.
cudaStream_t stream;Creating a Stream
Call cudaStreamCreate to make a fresh stream. It allocates the queue the driver uses to schedule that stream's work.
cudaStreamCreate(&stream);Launching a Kernel in a Stream
A kernel's launch config has a fourth argument: shared memory size, then the stream. Pass your stream to queue the kernel there.
kernel<<<grid, block, 0, stream>>>(d_data);Two Streams, Two Tasks
Put one job on streamA and another on streamB. With no dependency between them, the GPU is free to run both concurrently.
kA<<<g, b, 0, streamA>>>(a);
kB<<<g, b, 0, streamB>>>(d);Async by Nature
Stream calls are asynchronous: the host returns immediately and keeps going. The GPU works through the queue on its own time.
Waiting on One Stream
Use cudaStreamSynchronize to block the host until just that stream finishes, instead of waiting on the whole device.
cudaStreamSynchronize(stream);Checking Without Blocking
Want a peek? cudaStreamQuery returns cudaSuccess if the stream is done and cudaErrorNotReady if it is still busy, without stalling you.
cudaStreamQuery(stream);Cleaning Up
When a stream is no longer needed, release it with cudaStreamDestroy. Pending work still completes before the handle is freed.
cudaStreamDestroy(stream);Non-Blocking Streams
Create a stream with the cudaStreamNonBlocking flag so it does not implicitly synchronize with the legacy default stream.
cudaStreamCreateWithFlags(&s, cudaStreamNonBlocking);More Streams, More Overlap
Spreading independent chunks over several streams lets the scheduler keep the engines fed. Beyond a few, returns diminish as hardware fills up.
Quick Check
How do you queue a kernel into a specific stream?
Recap
You can now create streams, launch kernels in them, sync or query, and destroy them. Independent streams unlock real concurrency. ✨
Preguntas frecuentes
¿La lección «Crear y usar streams» es gratis?
Sí — el texto completo de «Crear y usar streams» 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 «Crear y usar streams»?
Emita colas de trabajo independientes. 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 «Crear y usar streams»?
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