Informatique Une carte graphique en PLS

Le minaw

Désobfuscateur à propergol
25 Juillet 2015
881
254
197
In a material world
github.com
Pour compléter un peu ce qu'a dit Robin, la structure physique des GPU est conçue pour effectuer des opérations massivement parallèle.

En gros mettons qu'on ait deux listes de 1000 nombres à multiplier entre eux un à un (en gros, on cherche une troisième liste de 1000 nombres contenant le produit du premier de la première liste par le premier de la seconde liste, du second de la première par le second de la deuxième, etc)

Un processeur classique va aller charger la première paire, calculer le produit, la mettre dans la liste de sortie, et répéter mille fois cette opération pour les mille paires à calculer. On sent bien que ça va prendre du temps, surtout si la liste fait plus de mille nombres ou que les opérations sont plus complexes qu'un simple produit de Hadmard (qui est en fait le nom du truc que j'ai grossièrement utilisé comme exemple ici)

Un GPU va pouvoir effectuer la multiplication "en une seule fois". Il faut un peu visualiser ça comme une sorte d'énorme usine avec plein de chaînes de montage en parallèle, qui effectuent toutes la même opération au même moment, mais pas sur les mêmes données).
Ces chaînes de montage ne peuvent pas être contrôlées indépendamment les unes des autres, et ont une performance moyenne. Ça les rend pas très efficaces pour faire une tâche complexe en continu, mais extrêmement efficaces pour faire un nombre énorme de tâches simples en même temps.

Après, pour aller avec tout ça, les GPUs sont munis de mémoires particulièrement bien étudiées qui permettent de mettre a profit cette architecture parallèle. L'idée est d'implémenter sur silicium tout le bazar nécessaire au calcul parallèle / multidimensionnel, c'est à dire que la mémoire des GPUs fonctionne plutôt comme des tableaux de dimensions variables contenant des éléments que comme une mémoire classique qui contient juste des listes unidimensionnelles d'éléments (après y'a des optims dans les 2 cas sur des sujets d'adressage, de continuité, de lecture séquentielle et tout mais en gros c'est l'idée).

Tout ceci rend les GPU extrêmement performants pour les domaine suivants (suivant les problèmes et les algos en jeu, la performance peut en gros aller de x10 à x10000)

Le calcul matriciel de de manière plus générale, l'algèbre linéaire
Le DSP entre autres par le calcul de transformée de Fourier
L'analyse de données automatisée
Le deep learning / l'IA
Le hachage / toutes sortes d'applications en crypto (et donc le minage de cryptomonnaies aussi)
Les statistiques
Le traitement d'image
Le rendu 3D
La compression / décompression et donc le codage / décodage de toutes sortes de flux
...encore plein d'autres que j'oublie
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 815
156
3 000
347
26
Alsace
www.minecraftforgefrance.fr
La compression / décompression et donc le codage / décodage de toutes sortes de flux
Le décodage / encodage de vidéo ou d'image est géré par un circuit dédié du GPU et non par ses unités de calculs habituelles.
C'est pour ça qu'il est possible de jouer à un jeu tout en encodant de la vidéo sans perte de performance significatif.
 

Le minaw

Désobfuscateur à propergol
25 Juillet 2015
881
254
197
In a material world
github.com
En effet, ces ASICs surclassent aujourd'hui largement ce que peut faire un GPU traditionnel (et ce avec un coût extrêmement intéressant).

Toutefois, avant que nvenc, VCE et compagnie fassent leur apparition, les gpus permettaient déjà d'accélérer certains codecs. Certains ont même été conçus spécialement pour ça (comme DXV3).
 
  • J'aime
Reactions: robin4002

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr
Bonjour,

Ah, ok. C'est si nul que ça ?
(Je ne refuse pas de le faire).
J'ai un i5 6300HQ et une GTX 960M. Est-ce que c'est rentable (ou utile?) de le faire ? (Je demande car pour moi c'est un très bon processeur mais une CG terriblement nul).
 

Le minaw

Désobfuscateur à propergol
25 Juillet 2015
881
254
197
In a material world
github.com
Est-ce que c'est rentable (ou utile?) de le faire ?
Non. Ce qui sépare ton CPU de ton GPU dans le domaine du rendu 3D, ce n'est pas une, deux trois ou même dix fois la performance, c'est plusieurs ordres de magnitude (plusieurs puissances de dix).

Si on pouvait faire de l'accélération logicielle de manière satisfaisante, on le ferait.

edit: et d'ailleurs sur certains domaines précis on le fait
 

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr
Bonjour,

Ah, d'accord (je savais pas que c'était si important).
zero: tant mieux pour toi, perso parfois j'ai des problèmes.
 
Dernière édition: