Aula 32: Streams e Concorrência
Um stream em CUDA é uma fila de operações que executam na ordem em que foram enviadas a ele. A regra principal: operações no mesmo stream se serializam (correm em ordem), mas operações em streams diferentes podem se sobrepor no tempo. É isso que libera o grande ganho de velocidade: enquanto a GPU co
Um stream é como um caixa de supermercado: os clientes numa fila esperam a vez, um depois do outro. Abra dois caixas (dois streams) e dois clientes são atendidos ao mesmo tempo. Se todo mundo se amontoa num só caixa, não há concorrência.
- stream
- Uma fila de operações de GPU executadas na ordem de envio. Operações no mesmo stream se serializam; em streams diferentes elas podem se sobrepor.
- stream padrão (stream 0)
- O stream para onde as operações vão quando nenhum é especificado. Ele costuma ser sincronizador e impede a sobreposição se tudo passar por ele.
- cudaMemcpyAsync
- Uma cópia de memória não bloqueante que recebe um stream. Permite que uma cópia se sobreponha ao cálculo quando usada com memória pinned.
- sobreposição (overlap)
- Executar operações diferentes ao mesmo tempo — por exemplo, uma cópia num stream enquanto o cálculo corre em outro — para reduzir o tempo total.