Nouvelles

Nouvelles

Pourquoi le GPU peut être utilisé pour accélérer le calcul en IA ou apprentissage automatique (puissance de calcul parallèle)

2022年06月21日

Pourquoi GPU

En fait, les calculs sur le GPU par rapport au CPU ne sont pas "bons", mais "rapides".

Les calculs sont des calculs, les mathématiques sont les mêmes, 1 1 avec n'importe quel calcul est égal à 2, le calcul des réseaux de neurones sur le CPU est également possible, le calcul des réseaux de neurones dans l'application d'effet réel est également très bon, mais la vitesse sera très lente.

Pousser le GPU

Le nom complet du GPU est un processeur graphique, le GPU, comme son nom l'indique, est conçu pour fonctionner avec des graphiques.

Avant d'afficher une image sur un écran d'ordinateur, il passe par un certain nombre de processus, et ce processus a son propre nom "rendu". Autrefois, les ordinateurs n'avaient pas de GPU, donc le rendu était effectué par le CPU. Essentiellement, l'opération de rendu consiste à effectuer une série de calculs graphiques, mais ces calculs prennent souvent beaucoup de temps et prennent une partie importante du temps du processeur central. Mais le CPU doit faire face à de nombreuses autres tâches informatiques. Par conséquent, un processeur-GPU a été développé spécifiquement pour effectuer des opérations graphiques afin de libérer le processeur central des calculs graphiques lourds.

Puisque le GPU a été conçu spécifiquement pour le rendu, il ne peut effectuer que des opérations qui impliquent le rendu.

Le processus de rendu est, en particulier, le calcul des positions géométriques des points et des couleurs, qui sont calculées mathématiquement en multipliant des vecteurs à quatre dimensions et des matrices de transformation, de sorte que le GPU est créé en tant que processeur spécialisé adapté pour effectuer de telles opérations. Pourquoi spécialisée? Parce qu'il y a beaucoup de choses qu'il ne peut pas faire.

Le CPU est un processeur à usage général, mais avec de faibles performances dans des domaines spécialisés. L'ingénierie est un compromis: si l'un est fort, l'autre est faible. À l'avenir, les jeux, la conception 3D pour les exigences de rendu deviennent de plus en plus élevés, les performances du GPU de plus en plus forte. Théoriquement, les performances de calcul sont des dizaines à des centaines de fois supérieures à celles d'un CPU.

Les gens pensaient, puisque le GPU est si fort, alors lors de l'utilisation du GPU pour effectuer des calculs non comparés à la CPU, la vitesse peut être considérablement augmentée? C'est ainsi qu'est apparu le concept de GPGPU (general purpose GPU, GPU for general purpose computing). Mais, comme nous l'avons dit, les GPU sont spécifiquement conçus pour le rendu des images, et ils ne conviennent que pour ces opérations. Heureusement, il existe des opérations très similaires à celles auxquelles les GPU sont destinés et qui peuvent être accélérées par les GPU, comme l'apprentissage en profondeur.

Un type de techniques d'apprentissage profond réussies s'appelle les réseaux de neurones convolutifs de CNN, qui sont mathématiquement une combinaison de nombreuses opérations de convolution et opérations matricielles que certains moyens mathématiques peuvent également être effectués avec des opérations matricielles. Ces opérations sont les mêmes opérations matricielles que les GPU avec de tels points graphiques pourraient effectuer. Ainsi, l'apprentissage en profondeur peut être accéléré par GPU.

Auparavant, le concept de GPGPU (General Purpose GPU) n'était pas très pertinent, et les GPU étaient destinés au rendu graphique. Si vous souhaitez utiliser le GPU pour l'informatique, vous devez suivre pleinement l'architecture matérielle du GPU. Maintenant que les GPU sont de plus en plus populaires, les fabricants développent et publient des GPU en tenant compte des besoins du monde de l'informatique. Par exemple, lorsque NVIDIA a publié cette année le M40 et P100, il a été dit qu'ils sont "conçus pour être en apprentissage en profondeur", bien sûr, en fait, le concept de spéculation dans ce composant est plus, mais au moins, nous voyons que les fabricants se concentrent de plus en plus sur l'informatique sur le GPU à usage général.

Deuxièmement, la différence entre GPGPU et GPU.

Le GPU a été créé pour résoudre le problème de l'efficacité du rendu graphique, mais au fur et à mesure que la technologie progresse, les GPU deviennent plus puissants, surtout après les shaders (cela nous permet de programmer sur les GPU), les GPU peuvent faire de plus en plus, ne se limitant plus à la zone graphique. Mais aussi certaines personnes ont pris l'initiative d'étendre leurs capacités à d'autres domaines qui nécessitent plus de calcul, ce que le GPU (General Purpose) est. But) GPU.

Troisièmement, pourquoi rapidement.

Disons que vous utilisez le programme Meitu xx pour ajouter un effet de flou à l'image, le CPU fera ceci:

En utilisant une petite fenêtre d'opérateurs de filtre de flou, il commence à traiter à partir du coin supérieur gauche de l'image et se déplace de gauche à droite et en arrière jusqu'à ce que l'image entière soit traitée. Comme le processeur ne comporte qu'un ou plusieurs cœurs, l'exécution d'une telle arithmétique est réduite au passage du début à la fin.

Mais il y aura des lecteurs intelligents qui constateront que chaque fenêtre dans le processus de traitement d'une image, indépendamment les uns des autres, n'a aucune relation. Alors, n'est-il pas plus rapide de traiter plusieurs fenêtres de filtrage en même temps? Nous avons donc des GPU, et un GPU typique a des centaines de cœurs, ce qui signifie que nous pouvons avoir des centaines de fenêtres de filtrage qui traitent cette image en même temps.

Ainsi, les GPU ont été conçus à l'origine pour ce type de rendu d'images graphiques, et la nature de ce type de travail est qu'il peut être distribué, et chaque unité informatique est plus indépendante l'une de l'autre, et il n'y a pas beaucoup de corrélation entre eux. Certains algorithmes d'apprentissage automatique, tels que les algorithmes génétiques, les réseaux de neurones, etc., sont également distribués et indépendants localement (par exemple, un lien d'un réseau de neurones est calculé simultanément avec l'autre lien, et il n'y a pas de dépendance les uns des autres), Qui peut être accéléré en utilisant un grand nombre de petits noyaux simultanément.


---------
Copyright: Ceci est un article original du blogueur CSDN "xihuanyuye", selon le contrat de copyright BY-SA CC 4.0, veuillez vous référer à la source originale et à cette déclaration.
Lien original: https://blog.csdn.net/xihuanyuye/article/details/81178352


Nouvelles recommandées

Recherche globale