2013-03-08 4 views
0

Je suis en train d'entrer dans la programmation GPU pour une partie de mon travail de simulation, et j'ai suivi ce tutoriel:Quelqu'un pourrait-il m'expliquer l'architecture nVidia GPU?

http://www.drdobbs.com/parallel/cuda-supercomputing-for-the-masses-part/208401741

Cependant, je reçois la terminologie confuse et visiter la documentation de nVidia me confusion plus loin.

Ces termes: le streaming multiprocesseurs, fils, funes, blocs, grille, occupation, shaders

sont accablants me un peu.

Ceci est ma compréhension très approximative:

Un GPU est divisé en multiprocesseurs (peut-être comme deux d'entre eux). Chaque multiprocesseur est divisé en warps, qui sont divisés en blocs, qui sont divisés en threads. Je ne sais pas ... J'aimerais avoir un diagramme. Est-ce que quelqu'un peut m'aider?

EDIT: Laissez-moi vous expliquer pourquoi je pose cette question. Supposons que j'essaie de comprendre ce qu'est un "warp". Je Google "CUDA Warp". La première chose qui arrive est http://developer.download.nvidia.com/CUDA/training/cuda_webinars_WarpsAndOccupancy.pdf. Donc, je défiler vers le bas et il dit:

Une grille est composée de blocs qui sont complètement indépendants

D'accord, je comprends.

Un bloc est composé de fils qui peuvent communiquer au sein leur propre bloc

D'accord ...

32 fils forment une chaîne

Maintenant, je suis perdu. 32 threads forment une chaîne? Tous les threads doivent-ils être dans le même bloc? Pourquoi avons-nous arbitrairement étiqueté 32 threads un "warp"? Puis-je appeler 12 threads une "sacoche"? Donc, si un bloc peut contenir 20 threads, cela signifie-t-il que j'ai besoin de 2 blocs pour contenir un warp? Vous pouvez voir d'où vient ma confusion. Tout ce que je recherche dépend de la connaissance d'autres termes, donc c'est un peu comme essayer d'apprendre une langue en lisant le dictionnaire - tout est circulaire.

+0

En quoi consistent les demandes de fermeture? Comment puis-je modifier cela pour l'empêcher de se fermer? – Nick

+0

Je ne sais pas si votre question devrait être fermée ou non, mais pourquoi ne pas essayer de lire les documents CUDA (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html)? Il explique tout ce que vous demandez. Cela donne l'impression que vous n'avez pas fait beaucoup de recherche avant de demander. En outre, l'article de Dr. Dobbs était une bonne ressource, mais il est un peu daté maintenant – alrikai

+0

Ces choses sont datées si vite ... Je pense que j'ai trouvé cela à partir de la question Stack Overflow de quelqu'un d'autre. – Nick

Répondre

6

Expliquer quelque chose comme CUDA ou une architecture GPU dans le format unique de question/réponse SO n'est pas vraiment réalisable. Les questions qui appellent de longs discours sont souvent fermées.

Les défis auxquels vous faites face sont compréhensibles. Parfois, vous avez besoin d'une introduction plus ordonnée à un sujet que ce que vous obtiendriez juste par des termes googling.

NVIDIA dispose de plusieurs ressources disponibles:

Pour nommer quelques-uns. Laissez-moi vous suggérer de commencer par les webinaires d'introduction et avancés. GPU Computing utilisant CUDA C - Introduction (2010) Une introduction aux bases de l'informatique GPU à l'aide de CUDA C. Les concepts seront illustrés si vous avez l'intention de faire beaucoup de codage GPU, il sera bien dépensé 2 heures:

avec des visites guidées d'échantillons de code. GPU Computing utilisant CUDA C - Advanced 1 (2010) Techniques d'optimisation de premier niveau telles que l'optimisation de la mémoire globale et l'utilisation du processeur. Les concepts seront illustrés à l'aide d'exemples de codes réels

Le fait que ces produits datent de 3 ans n'aura aucune importance pour les questions que vous avez. Et vous êtes certainement le bienvenu pour parcourir les webinaires pour les versions plus récentes - il y en a beaucoup.