FAQ CUDAConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 43, dernière mise à jour : 4 septembre 2018 

 
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 divisé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écutés comme des petits groupes de threads, appelés warps. La taille d'un warp est de 32 threads, et tous les threads d'un warp sont exécutés simultanément.

Créé le 29 juin 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 29 juin 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 de données sur le périphérique sont très rapides).

Créé le 29 juin 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 variable statique

Pas de variable statique

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 29 juin 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 29 juin 2009  par Thibaut Cuvelier
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009-2017 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.