Les GPU sont de plus en plus utilisés pour des tâches non graphiques telles que les calculs de risque, les calculs de dynamique des fluides et l’analyse sismique. Qu’est-ce qui nous empêche d’adopter des appareils pilotés par GPU?
La question
Le lecteur SuperUser Ell se tient au courant des actualités technologiques et se demande pourquoi nous n’utilisons pas plus de systèmes basés sur GPU:
Il me semble que ces jours-ci, de nombreux calculs sont effectués sur le GPU. Évidemment, les graphiques y sont créés, mais en utilisant CUDA et autres, l’IA, les algorithmes de hachage (pensez Bitcoins) et d’autres sont également effectués sur le GPU. Pourquoi ne pouvons-nous pas simplement nous débarrasser du CPU et utiliser le GPU seul? Qu’est-ce qui rend le GPU tellement plus rapide que le CPU?
Pourquoi en effet? Qu’est-ce qui rend le CPU unique?
La réponse
Le contributeur SuperUser DragonLord offre un aperçu bien pris en charge des différences entre les GPU et les CPU:
TL; DR réponse: Les GPU ont beaucoup plus de cœurs de processeur que de processeurs, mais comme chaque cœur de GPU fonctionne beaucoup plus lentement qu’un cœur de processeur et ne possède pas les fonctionnalités nécessaires pour les systèmes d’exploitation modernes, ils ne sont pas appropriés pour effectuer la plupart des traitements dans l’informatique quotidienne. Ils sont les plus adaptés aux opérations intensives en calcul telles que le traitement vidéo et les simulations physiques.
La réponse détaillée: GPGPU est encore un concept relativement nouveau. Les GPU étaient initialement utilisés pour le rendu des graphiques uniquement; à mesure que la technologie progressait, le grand nombre de cœurs dans les GPU par rapport aux CPU a été exploité en développant des capacités de calcul pour les GPU afin qu’ils puissent traiter simultanément de nombreux flux de données parallèles, quelles que soient ces données. Alors que les GPU peuvent avoir des centaines, voire des milliers de processeurs de flux, ils fonctionnent chacun plus lentement qu’un cœur de processeur et ont moins de fonctionnalités (même s’ils sontTuring terminé et peut être programmé pour exécuter n’importe quel programme qu’une CPU peut exécuter). Les fonctionnalités absentes des GPU incluent les interruptions et la mémoire virtuelle, qui sont nécessaires pour implémenter un système d’exploitation moderne.
En d’autres termes, les processeurs et les GPU ont des architectures très différentes qui les rendent mieux adaptés à différentes tâches. Un GPU peut gérer de grandes quantités de données dans de nombreux flux, en effectuant des opérations relativement simples sur eux, mais est mal adapté à un traitement lourd ou complexe sur un ou quelques flux de données. Un processeur est beaucoup plus rapide par cœur (en termes d’instructions par seconde) et peut effectuer plus facilement des opérations complexes sur un ou plusieurs flux de données, mais ne peut pas gérer efficacement plusieurs flux simultanément.
En conséquence, les GPU ne sont pas adaptés pour gérer des tâches qui ne bénéficient pas de manière significative ou ne peuvent pas être parallélisées, y compris de nombreuses applications grand public courantes telles que les traitements de texte. De plus, les GPU utilisent une architecture fondamentalement différente; il faudrait programmer une application spécifiquement pour un GPU pour que cela fonctionne, et des techniques très différentes sont nécessaires pour programmer les GPU. Ces différentes techniques incluent de nouveaux langages de programmation, des modifications de langages existants et de nouveaux paradigmes de programmation qui sont mieux adaptés pour exprimer un calcul comme une opération parallèle à effectuer par de nombreux processeurs de flux. Pour plus d’informations sur les techniques nécessaires à la programmation des GPU, consultez les articles Wikipédia sur traitement de flux et traitement en parallèle.
Les GPU modernes sont capables d’effectuer des opérations vectorielles et de l’arithmétique à virgule flottante, avec les dernières cartes capables de manipuler des nombres à virgule flottante double précision. Les cadres tels que CUDA et OpenCL permettent d’écrire des programmes pour les GPU, et la nature des GPU les rend les plus adaptés aux opérations hautement parallélisables, comme dans le calcul scientifique, où une série de cartes de calcul GPU spécialisées peut être un remplacement viable pour un petit calcul du cluster comme dans Supercalculateurs personnels NVIDIA Tesla. Les consommateurs disposant de GPU modernes et expérimentés avec Folding @ home peuvent les utiliser pour contribuer avec Clients GPU, qui peut effectuer des simulations de repliement des protéines à des vitesses très élevées et contribuer à plus de travail au projet (assurez-vous de lire le FAQ d’abord, en particulier ceux liés aux GPU). Les GPU peuvent également permettre une meilleure simulation physique dans les jeux vidéo utilisant PhysX, accélérer le codage et le décodage vidéo et effectuer d’autres tâches gourmandes en calcul. Ce sont ces types de tâches que les GPU sont les plus aptes à exécuter.
AMD est le pionnier d’une conception de processeur appelée Unité de traitement accéléré (APU) qui combine des cœurs de processeur x86 conventionnels avec des GPU. Cela pourrait permettre aux composants CPU et GPU de fonctionner ensemble et d’améliorer les performances sur les systèmes avec un espace limité pour des composants séparés. Au fur et à mesure que la technologie progresse, nous verrons un degré croissant de convergence de ces éléments autrefois séparés. Cependant, de nombreuses tâches effectuées par les systèmes d’exploitation et les applications PC sont toujours mieux adaptées aux processeurs, et beaucoup de travail est nécessaire pour accélérer un programme à l’aide d’un GPU. Étant donné que de nombreux logiciels existants utilisent l’architecture x86 et que les GPU nécessitent des techniques de programmation différentes et manquent de plusieurs fonctionnalités importantes nécessaires aux systèmes d’exploitation, une transition générale du processeur au GPU pour le calcul quotidien est extrêmement difficile.
Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.