Leçon 32 : Streams et concurrence
Un stream CUDA est une file d'opérations qui s'exécutent dans l'ordre où elles lui ont été envoyées. La règle clé : les opérations du même stream se sérialisent (elles s'exécutent dans l'ordre), mais les opérations de streams différents peuvent se chevaucher dans le temps. C'est ce qui débloque la g
Un stream, c'est comme une file de caisse : les clients d'une file attendent l'un après l'autre. Ouvre deux files (deux streams) et deux clients sont servis en même temps. Si tout le monde s'entasse dans une seule file, il n'y a pas de concurrence.
- stream
- Une file d'opérations GPU qui s'exécutent dans l'ordre d'envoi. Les opérations du même stream se sérialisent ; celles de streams différents peuvent se chevaucher.
- stream par défaut (stream 0)
- Le stream où vont les opérations quand aucun n'est spécifié. Normalement synchronisateur et empêche le chevauchement si tout y passe.
- cudaMemcpyAsync
- Une copie mémoire non bloquante qui reçoit un stream. Permet à une copie de se chevaucher avec le calcul quand elle est utilisée avec de la mémoire pinned.
- chevauchement (overlap)
- Exécuter différentes opérations en même temps — par exemple, une copie sur un stream pendant que le calcul tourne sur un autre — pour réduire le temps total.