Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sortie de CUDA 10
L'API de calcul sur processeur graphique de NVIDIA, avec la possibilité de définir ses calculs comme un graphe de dépendances

Le , par dourouc05

62PARTAGES

14  0 
]Dans le mois de l’annonce de CUDA 10, NVIDIA lance effectivement la nouvelle version de son API de calcul sur processeur graphique. Outre la gestion de la nouvelle architecture Turing, cette version 10 apporte bon nombre de nouveautés, partiellement déjà annoncées.

Une grande nouveauté de CUDA 10 facilitera l’expression de programmes de calcul compliqués, où certaines opérations ne peuvent être lancées que quand d’autres sont terminées : par exemple, on ne peut copier les résultats d’un calcul sur le processeur central que quand il a fini de s’exécuter sur la carte graphique. CUDA disposait déjà de la notion de flux, mais elle n’autorisait pas une grande flexibilité : le processeur central doit toujours gérer l’ordonnancement des tâches, par exemple. Lancer un noyau de calcul prend toujours un certain temps, non négligeable quand le noyau est assez petit.

L’idée des graphes de calcul est donc d’indiquer à CUDA les tâches à exécuter et leurs dépendances, de telle sorte que la carte graphique ou le pilote puisse décider, sans attendre l’application, des tâches à exécuter par la suite. Dans le cas de noyaux très rapides à l’exécution dans un processus plus long, les coûts de lancement sont en grande partie éliminés. Également, CUDA peut réordonner les tâches afin d’améliorer les temps d’exécution, notamment en réduisant les mouvements de données : la carte graphique sait quand des données seront réutilisées, par exemple.
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
cudaGraphCreate(&graph);
cudaGraphAddNode(graph, kernel_a, {}, ...);
cudaGraphAddNode(graph, kernel_b, { kernel_a }, ...);
cudaGraphAddNode(graph, kernel_c, { kernel_a }, ...);
cudaGraphAddNode(graph, kernel_d, { kernel_b, kernel_c }, ...);

cudaGraphInstantiate(&instance, graph);

for(int i = 0; i < 100; i++)
      cudaGraphLaunch(instance, stream);

Une API spécifique permet de mélanger un code à base de flux et de graphe, en enregistrant les flux et en indiquant les moments où les flux doivent s’attendre.

Source : CUDA 10 Features Revealed: Turing, CUDA Graphs and More.

Et vous ?

Qu'en pensez-vous ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Matthieu76
Membre éclairé https://www.developpez.com
Le 01/10/2018 à 10:12
Ça a l'air vraiment cool ce système de graph, ça me donne presque envie de me remettre au CUDA, malheureusement je n'ai pas le temps ...
En tout cas cela semble beaucoup plus simple pour tout ce qui est calculs de graph, réseaux de neurones, et autres algorithmes. D'autant plus que la plupart des algos peuvent être représenter sous forme de graph.
0  0 
Avatar de BPStA
Futur Membre du Club https://www.developpez.com
Le 10/10/2018 à 12:41
Bonjour,

J'utilise Visual studio 2015 et CUDA. Passer à Visual Studio 2017 community et CUDA, annoncé récemment comme enfin possible, est tout sauf simple. Je n'ai pas encore réussi à les faire fonctionner ensemble. Existe-t-il une note détaillée d'installation ?
0  0 
Avatar de Matthieu76
Membre éclairé https://www.developpez.com
Le 11/10/2018 à 12:57
Je ne sais pas trop mais au début j'avais eu des problème d’installation, j'avais du repasser à MSVC2015. C'était il y a un peu plus d'un an et à l'époque j'utilisait QtCreator comme IDE. Je suis dispo pour d'aider si tu veux. C'est quoi ton problème exactement ?
0  0