53 votes

Quelle est la différence entre cuda et tensor cores ?

Je suis totalement novice en ce qui concerne les termes liés à l'informatique HPC, mais je viens de voir que EC2 a lancé son nouveau type d'instance sur AWS qui est alimenté par le nouveau Nvidia Tesla V100, qui possède deux types de "cœurs" : Cuda Cores (5 120) et Tensor Cores (640). Quelle est la différence entre les deux ?

74voto

Artur Points 496

Aujourd'hui, seuls les Tesla V100 et Titan V disposent de cœurs tenseurs. Les deux GPU ont 5120 cœurs cuda où chaque cœur peut effectuer jusqu'à 1 opération de multiplication-accumulation en simple précision (par exemple, dans fp32 : x += y * z) par horloge GPU (par exemple, la fréquence PCIe du Tesla V100 est de 1.38Gz).

Chaque noyau tensoriel effectue des opérations sur de petites matrices de taille 4x4. Chaque noyau tensoriel peut effectuer 1 opération de multiplication-accumulation de matrice par 1 horloge GPU. Il multiplie deux matrices fp16 4x4 et ajoute le produit de la multiplication de la matrice fp32 (taille : 4x4) à l'accumulateur (qui est aussi une matrice fp32 4x4).

Il est appelé précision mixte car les matrices d'entrée sont des matrices fp16 mais le résultat de la multiplication et l'accumulateur sont des matrices fp32.

Le nom correct serait probablement 4x4 matrix cores, mais l'équipe marketing de NVIDIA a décidé d'utiliser "tensor cores".

16 votes

Il est temps de mettre à jour cette réponse - L'architecture Turing de Nvidia vient d'être publié

24voto

Mike159 Points 45

Les GPU ont toujours été bons pour l'apprentissage automatique. Les cœurs de GPU ont été conçus à l'origine pour le calcul physique et graphique, qui implique des opérations matricielles. Les tâches informatiques générales ne nécessitent pas beaucoup d'opérations matricielles, et les CPU sont donc beaucoup plus lents dans ce domaine. La physique et les graphiques sont également beaucoup plus faciles à paralléliser que les tâches de calcul général, ce qui explique le nombre élevé de cœurs.

En raison de la nature très matricielle de l'apprentissage automatique (réseaux neuronaux), les GPU étaient parfaitement adaptés. Les cœurs tensoriels sont simplement plus spécialisés dans les types de calculs impliqués dans les logiciels d'apprentissage automatique (tels que Tensorflow).

Nvidia a écrit un blog détaillé aquí qui explique de manière beaucoup plus détaillée le fonctionnement des cœurs Tensor et l'amélioration des performances par rapport aux cœurs CUDA.

7voto

Cœurs CUDA :

Effectue une multiplication d'une seule valeur par horloge du GPU.

1 x 1 per GPU clock

Cœurs TENSOR :

Effectue une multiplication de matrice par horloge de GPU

[1 1 1       [1 1 1
 1 1 1   x    1 1 1    per GPU clock
 1 1 1]       1 1 1]

Pour être plus précis, le cœur TENSOR effectue le calcul de plusieurs cœurs CUDA en même temps.

1voto

pranshu vinayak Points 100

Les cœurs Tensor utilisent beaucoup moins de puissance de calcul au détriment de la précision que les cœurs Cuda, mais cette perte de précision n'a pas beaucoup d'effet sur le résultat final.

C'est pourquoi, pour les modèles d'apprentissage automatique, les cœurs tenseurs sont plus efficaces pour réduire les coûts sans trop modifier le résultat.

Google lui-même utilise les Tensor Processing Units pour google translate.

14 votes

Réponse trompeuse. Le TPU de Google et le Tensor Core de Nvidia n'ont rien en commun.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X