Lección 32: Streams y concurrencia
Un stream de CUDA es una cola de operaciones que se ejecutan en el orden en que se le enviaron. La regla clave: las operaciones en el mismo stream se serializan (corren en orden), pero las operaciones en distintos streams pueden solaparse en el tiempo. Eso es lo que desbloquea la gran aceleración: m
Un stream es como una fila de caja: los clientes de una fila esperan uno tras otro. Abre dos filas (dos streams) y dos clientes son atendidos a la vez. Si todos se amontonan en una sola fila, no hay concurrencia.
- stream
- Una cola de operaciones de GPU que se ejecutan en el orden de envío. Las operaciones en el mismo stream se serializan; en distintos streams pueden solaparse.
- stream por defecto (stream 0)
- El stream al que van las operaciones cuando no se especifica ninguno. Normalmente es sincronizador y evita el solapamiento si todo pasa por él.
- cudaMemcpyAsync
- Una copia de memoria no bloqueante que recibe un stream. Permite que una copia se solape con el cómputo cuando se usa con memoria pinned.
- solapamiento (overlap)
- Ejecutar distintas operaciones al mismo tiempo — por ejemplo, una copia en un stream mientras el cómputo corre en otro — para reducir el tiempo total.