FAQ CUDAConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 43, dernière mise à jour : 6 juillet 2017 

 
OuvrirSommaireCUDACUDA Vocabulaire

Un thread est une instance d'un kernel.

Les threads selon CUDA sont prévus pour être beaucoup plus nombreux que dans d'autres environnements. En effet, un thread GPU effectue des calculs plus précis qu'un CPU, et toujours en parallèle (un thread est prévu pour être exécuté un grand nombre de fois en parallèle, dans une grille).

La conception des threads dérive de celle de la parallélisation des données. En effet, un thread est une portion de code qui s'occupe d'une partie des données, tous les threads ensemble s'occupent de toutes les données parallèles.

Créé le 29 juin 2009  par Thibaut Cuvelier

Lien : Kernel
Lien : Grille
Lien : Les données parallèles

Une grille est un ensemble bidimensionnel de threads.

La grille est aussi un principe découlant de la parallélisation des données : il s'agit d'une subdivision de la tâche totale à effectuer.

Pour CUDA, une grille ressemble à une image : chaque thread de la grille équivaut à un pixel de l'image, à un point dans le repère cartésien du plan formé par l'image.

Cette subdivision est la plus générale admise par CUDA.

Cette notion peut être utilisée pour dérouler deux boucles imbriquées : au lieu de faire varier deux variables, comme i et j, on fait varier la position dans la grille.

Créé le 29 juin 2009  par Thibaut Cuvelier

Lien : Thread

Un bloc est un ensemble tridimensionnel de grilles.

Un bloc peut être comparé à une image en trois dimensions, où chaque point représente une grille, un ensemble de calculs à effectuer.

Il s'agit d'une subdivision découlant du principe de parallélisation des données.

On peut utiliser cette notion pour dérouler trois boucles imbriquées : au lieu de faire varier trois variables, comme i, j et k, on fait varier la position dans le bloc.

Un bloc sera exécuté toujours sur le même multiprocesseur. Ce n'est pas pour autant que tous les threads d'un bloc peuvent communiquer sans problème ! Il faut encore qu'ils soient dans le même warp. Ainsi, ils seront exécutés en même temps.

Créé le 29 juin 2009  par Thibaut Cuvelier

Lien : Grille
Lien : Multiprocesseur de flux

Un warp est un groupe de 32 threads, qui seront de manière certaine exécutés en deux groupes de 16 threads subséquents, ces demi-warps étant exécutés en même temps.

Ceci fait que, tant que les accès mémoire de ces demi-warps ne se font pas dans les mêmes banques mémoire, il n'y aura pas de conflit. Deux demi-warps n'entreront jamais en conflit de mémoire, ni deux warps.

Créé le 29 juin 2009  par Thibaut Cuvelier

Lien : Thread
Lien : Banque mémoire

Une banque mémoire est une subdivision de la mémoire globale. Chaque banque a une taille d'un mot (32 bits), et une bande passante de 32 bits : chaque banque peut être lue en un seul cycle.

Une même banque ne peut être accédée qu'en un seul endroit en un cycle. Si plusieurs threads essayent d'accéder à la même adresse mémoire, il n'y aura pas de conflit. Si plusieurs threads lisent à des adresses différentes tombant dans la même banque, il y aura conflit, et les threads seront exécutés dans des cycles différents, d'où une perte, parfois énorme, de performances.

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 et 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.