CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Cuda] Stream

vive_cod4
vive_cod4
Niveau 9
28 décembre 2013 à 09:38:19

Bonjour tout le monde,

J'aurais voulu savoir à quel point les streams peuvent aider à lancer des kernels en parallèle sur le même GPU. Je pense viens que de lancer des copies asynchrones soit efficace, mais qu'en est-il du kernel ?

Je veux dire, est-ce lorsqu'un kernel est lancé, reste-t-il de la place pour d'autres lancements de kernel en même temps ? Ou bien il prend toute la place puis réduit à chaque fois qu'un nouveau stream est lancé ?

Ensuite même question mais avec du multi-GPU : Si on a 10 multi-GPUs et 10 streams kernel, est-ce efficace de mélanger stream/kernel ?

D'une manière générale, combien de stream choisir ? Est-ce comme un CPU mono-thread auquel ça sert à rien d'avoir 2 threads ? Je sais que c'est pas trop comparable l'architecture CPU & GPU, mais c'est pour évoquer mon "doute".

Ce sont des questions générales, mais je m'intéresse particulièrement à du traitement d'image notamment de calculs prenant en compte les voisins du pixel.

Dans la doc cuda 5.5, je trouve ça pour la définition d'un stream, ce qui ne m'aide pas tellement :

Applications manage concurrency through streams. A stream is a sequence of commands
(possibly issued by different host threads) that execute in order. Different streams, on
the other hand, may execute their commands out of order with respect to one another or
concurrently; this behavior is not guaranteed and should therefore not be relied upon for
correctness (e.g., inter-kernel communication is undefined).

Merci :)

papy386
papy386
Niveau 10
28 décembre 2013 à 12:14:17

Bonjour,

Je pense que tu mélange un peut tout.

Un kernel cuda c'est juste une fonction c appelé d'une certaine manière (global ou non) par cude.

Les streams c'est une façon de transférer les instructions ou les données et leur ordres dans le GPU.

Donc tu peut bien faire un kernel avec du stream puisqu'au moment de la compilation de ton kernel il seras streamé dans le gpu.

Tu peut très bien utiliser 10 fonctions (kernel) sur 100 threads. Le nombre dépend surtout du nombre des caractéristique de la carte nvidia sur laquelle tourne le programme.

vive_cod4
vive_cod4
Niveau 9
28 décembre 2013 à 12:49:42

Les streams c'est une façon de lancer plusieurs kernels en parallèle, si je me réfère à

"CUDA supports parallel execution of kernels and
cudaMemCpy with “Streams” "

Ou encore à l'exemple dans la doc :

http://pastebin.com/wfTx85df

Ce que j'essayais de dire c'est que dans le cas où on doit tirer des nombres par exemple, a-t-on meilleur temps de lancer 10 kernel et dans chacun n/10 nombre avec les streams ou tirer une fois n nombre dans 1 kernel ?

vive_cod4
vive_cod4
Niveau 9
28 décembre 2013 à 12:55:21

Et bien sûr faire des copies en parallèle.

Après il se peut que j'ai mal compris ce que tu as voulu dire :)

godrik
godrik
Niveau 30
28 décembre 2013 à 17:52:41

Je n'ai jamais lancer plusieurs kernel en meme temps. Parceque concretement je n'ai jamais eu d'application pour ca. Donc je n'ai pas regarder l'aspect perf de ce truc la. Cela etant dit, avoir plusieurs kernel en meme temps si on a un scheduler intelligent (ce que certainement un gpu n'a pas) ne peut qu'aider les performances. Puisque ca permet de maintenir le gpu plein 100% du temps.

vive_cod4
vive_cod4
Niveau 9
29 décembre 2013 à 10:16:44

Merci de ta réponse godrick. Je vais voir si je fais des petits tests et reviens ici pour expliquer mes conclusions

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment