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

FAQ CUDA

FAQ CUDAConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 66, dernière mise à jour : 14 juin 2021 

 
OuvrirSommaireCUDASpécificités de la programmation

CUDA suit, à peu près, le modèle de la parallélisation des données. Chaque thread exécute donc la même opération sur divers éléments des données en parallèle.

Les données sont divisisées dans une grille à une ou deux dimensions de blocs.

Les threads d'un même bloc peuvent communiquer grâce à la mémoire partagée.

Chaque bloc peut avoir une, deux ou trois dimensions, et contenir jusqu'à 512 threads, sur le matériel actuel.

Les blocs de threads sont exécutes comme des petits groupes de threads, appelés warps. La taille d'un warp est de 32 thread, et tous les threads d'un warp sont exécutés simultanément.

Créé le 2 juillet 2009  par Thibaut Cuvelier

En général, lors de l'appel à un kernel, on lui précise les emplacements des données à traiter et les emplacements des données une fois traitées.

Dès que les calculs sont effectués, l'hôte récupère les données traitées de ce second emplacement mémoire par une fonction de copie.

Créé le 2 juillet 2009  par Thibaut Cuvelier

Pas encore.

Il est cependant possible de copier les résultats de la mémoire globale vers la texture (les transferts du périphériques vers le périphériques sont très rapides).

Créé le 2 juillet 2009  par Thibaut Cuvelier

Un qualificateur de kernel permet de spécifier l'endroit où il sera exécuté (sur le GPU ou sur le CPU).

Il en existe trois : __global__, __device__ et __host__.

__global__ __device__ __host__
Exécuté sur le périphérique Exécuté sur le périphérique Exécuté sur l'hôte
Appelable de l'hôte Appelable du périphérique Appelable de l'hôte
Pas de récursion Pas de récursion Récursion possible
Pas de variables statiques Pas de variables statiques Variables statiques possibles
Pas de liste de paramètres variable Pas de liste de paramètres variable Liste de paramètres variable possible
Ne peut rien retourner Ne peut rien retourner Peut retourner une valeur
Appel asynchrone Appel synchrone Appel synchrone
Créé le 2 juillet 2009  par Thibaut Cuvelier

Lien : Appel (a)synchrone

Les textures à une dimension sont limitées à 8000 éléments.

Les textures à deux dimensions sont limitées à 64.000 éléments sur 32.000 éléments.

Les textures à trois dimensions sont limitées à la dimension de 2048 x 2048 x 2048.

Évidemment, ces limites sont tronquées pour respecter les limites de la mémoire du GPU.

Créé le 2 juillet 2009  par Thibaut Cuvelier

Copyright © 2009 Thibaut Cuvelier. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.