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 