11.7.3 : Utilisation des GPUs
Les GPUs sont très performants pour effectuer des calculs simples à grande échelle, car ils sont massivement parallèles. Cependant ces calculs doivent être suffisamment importants pour que le temps de transfert des données sur le GPU soit amorti, sinon l'accélération du programme sera faible voire inexistante.
Les GPUs sont particulièrement efficaces pour traiter des objets identiques en interaction les uns avec les autres. Le problème à $N$ corps en interaction gravitationnelle qui a théoriquement une complexité en $N^2$ voit sa complexité diminuer en $N$ s'il y a autant de cœurs que de particules sur le GPU.
Il en va de même pour les multiplications de matrices qui ont une complexité en $N^3$ réduite à $N^2$ dans les mêmes conditions d'utilisation que précédemment.
Le domaine du Deep Learning qui est en effervescence actuellement a connu une révolution technique et conceptuelle lorsque les temps d'entraînement de plusieurs centaines de jours se sont réduits à seulement quelques jours avec l'utilisation de GPUs toujours plus performants. Dès lors, l'exploration de nouvelles architectures fut possible à échelle humaine.
De manière plus générale, le traitement d'images, de vidéos et la modélisation ont été lourdement affectés par les GPUs sans qui les temps de calculs seraient beaucoup trop long.
Les GPUs sont mêmes utilisés dans certains hôpitaux pour ajuster des doses de radiations pour des patients en temps réel ou encore filtrer le signal en sortie d'IRM. La petite taille des GPUs, lorsqu'ils sont bien utilisés, peut remplacer des dizaines d'ordinateurs.