IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 !

Tutoriel : Approfondissons CUDA !
Ou les techniques avancées pour le développement sur processeur graphique, par Thibaut Cuvelier

Le , par dourouc05

0PARTAGES

1  0 
Bonjour,

Quelques temps après vous avoir proposé une introduction à C pour CUDA (simplement dit CUDA), voici maintenant un approfondissement de l'extension de NVIDIA au C pour la gestion du GPU via CUDA.

Vous aviez appris simplement les techniques de base de l'utilisation du GPU et les bases matérielles de ce GPU. Vos kernels étaient fonctionnels, mais pas optimisés. Vous connaissiez un peu l'architecture du processeur sur lequel sont exécutées vos kernels, mais pas comment exploiter ces connaissances pour tirer le meilleur du processeur.

Après avoir lu cet article, vous serez plus à même d'utiliser ces connaissances pour mieux utiliser le matériel.

On ne se limitera pas à cela : vous apprendrez aussi à utiliser des bibliothèques se basant sur CUDA. D'une manière plus simple, vous utiliserez aussi efficacement le matériel.

Voici l'article : CUDA approfondi.

Pour ceux qui ont lu l'article, qu'en pensez-vous ? Y a-t-il des choses que vous n'avez pas compris, que vous ne trouvez pas claires ? Avez-vous repéré des erreurs ? Vous pouvez les communiquer ici.

Pour tous : a-t-on besoin d'optimiser ses kernels CUDA ? Dans tous les cas ? Même si cela est utile, est-ce une étape obligée ?
Quelles sont les techniques que vous employez ou prévoyez employer pour optimiser vos applications basées sur CUDA ? Prévoyez-vous d'utiliser en ce but un compilateur Fortran pour CUDA, proposé par PGI ?

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

Avatar de Ange_blond
Membre éprouvé https://www.developpez.com
Le 11/09/2009 à 9:06
Je me disais bien que j'avais mis un article à lire dans mes favoris et que j'avais oublié !
Je n'ai que survoler rapidement ton 1er article, et donc de meme pour le second, mais je prévois (tôt ou tard) de m'essayer à CUDA pour optimiser les calculs couteux pour un projet perso en C++. Je vois CUDA comme un moyen de gagner du temps au niveau des boucles de calcul en les parallelisant autant que possible...

Merci de nous faire profiter de tes connaissances et de prendre le temps (énorme, pour l'avoir fait) de rédiger un article.
0  0 
Avatar de yamashi
Membre habitué https://www.developpez.com
Le 13/09/2009 à 18:02
Salut !

Tout d'abord bon boulot !
Maintenant les critiques
Pour ce qui est de la mémoire tu avances la notion d'accès aux bank mais tu ne parles que d'un tout petit morceau du problème, tu ne parles pas vraiment du coalescing, de la complexité en fonction d'un offset ou d'un stride. Et la shared memory n'est pas toujours le mieux ! Il faut aussi regarder les textures qui sont généralement une très bonne solution.
Tu as introduit l'idée des streams ainsi que de la copie asynchrone mais tu n'as pas précisé qu'il faut de la mémoire pinned ou non-pageable... De même tu introduit cette notion sans parler de l'overlaping qui est pourtant la raison pour laquelle l'asynchrone existe dans CUDA.
Tu ne parles pas de la Zero memory qui est pourtant une bonne solution grâce a la mémoire cohérente...
Dans certains cas tu vas dans les détails alors que dans certains cas une optimisation général peut-être bien plus intéressante que de faire des optimisations sur la mémoire.
Exemple : Bien penser le rapport arithmétique/mémoire.

Je lirais le reste dans la semaine.
Bon boulot !

Pour les questions d'ordre général, oui il faut optimiser parfois en optimisant des trucs tout bête, on obtient 16x plus de performance car il y avait un "16-way bank conflict" et quand on utilise CUDA c'est généralement car on recherche des performances et donc ne pas optimiser est contre cette optique.
0  0 
Avatar de lolo406
Membre à l'essai https://www.developpez.com
Le 15/01/2015 à 8:51
Bonjour,

Je tiens à vous remercier pour ce très bon travail.
J'ai cependant un problème lors du test d'un des bouts de code. Dans le chapitre "VII-E La mémoire", l'écriture du code sous visual studio 2013 m'indique des erreurs. Je joins une capture d'écran :


D'où peut venir cette erreur ?
0  0 
Avatar de stephane.schwenker
Nouveau Candidat au Club https://www.developpez.com
Le 26/11/2017 à 11:58
mettre static const int N = 2;
à la place de #define N(2)
0  0