TL;DR réponse: Les GPU ont beaucoup plus de cœurs de processeur que les CPU, mais comme chaque cœur de GPU fonctionne beaucoup plus lentement qu'un cœur de CPU et ne possède pas les caractéristiques nécessaires aux systèmes d'exploitation modernes, ils ne sont pas appropriés pour effectuer la plupart des traitements dans l'informatique quotidienne. Ils sont plus adaptés aux opérations de calcul intensif telles que le traitement vidéo et les simulations physiques.
GPGPU est un concept encore relativement nouveau. Les GPU étaient initialement utilisés pour le rendu de graphiques uniquement ; au fur et à mesure que la technologie a progressé, 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. Bien que les GPU puissent avoir des centaines, voire des milliers de processeurs de flux, ils fonctionnent chacun plus lentement qu'un cœur de CPU et ont moins de fonctionnalités (même s'ils sont Turing complete et peuvent être programmés pour exécuter n'importe quel programme qu'un CPU peut exécuter). Parmi les caractéristiques manquantes des GPU, on trouve les interruptions et la mémoire virtuelle, qui sont nécessaires pour mettre en œuvre un système d'exploitation moderne.
En d'autres termes, les CPU et les GPU ont des architectures sensiblement différentes qui les rendent mieux adaptés à différentes tâches. Un GPU peut traiter de grandes quantités de données dans de nombreux flux, en effectuant des opérations relativement simples sur ceux-ci, mais il est mal adapté à un traitement lourd ou complexe sur un seul ou quelques flux de données. Un CPU est beaucoup plus rapide par cœur (en termes d'instructions par seconde) et peut effectuer plus facilement des opérations complexes sur un seul ou quelques flux de données, mais ne peut pas traiter efficacement de nombreux flux simultanément.
En conséquence, les GPU ne sont pas adaptés pour traiter des tâches qui ne bénéficient pas de manière significative ou qui ne peuvent pas être parallélisées, y compris de nombreuses applications grand public courantes telles que les traitements de texte. En outre, les GPU utilisent une architecture fondamentalement différente ; il faudrait programmer une application spécifiquement pour un GPU pour qu'elle fonctionne, et des techniques sensiblement différentes sont nécessaires pour programmer les GPU. Ces différentes techniques comprennent de nouveaux langages de programmation, des modifications des langages existants et de nouveaux paradigmes de programmation qui sont mieux adaptés à l'expression d'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, voir les articles de Wikipedia sur le traitement en continu et le calcul parallèle .
Les GPU modernes sont capables d'effectuer des opérations vectorielles et de l'arithmétique en virgule flottante, avec les dernières cartes capables de manipuler des nombres à virgule flottante de 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 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 remplacer de manière viable une petite grappe de calcul comme dans NVIDIA Tesla Personal Supercomputers . Les consommateurs disposant de GPU modernes et expérimentés dans Folding@home peuvent les utiliser pour contribuer avec les clients GPU , qui peuvent effectuer des simulations de pliage de protéines à très grande vitesse et contribuer davantage au projet (assurez-vous de lire d'abord les FAQ , en particulier celles relatives aux GPU). Les GPU peuvent également permettre une meilleure simulation de la physique dans les jeux vidéo en utilisant PhysX, accélérer le codage et le décodage vidéo et effectuer d'autres tâches de calcul intensives. Ce sont ces types de tâches que les GPU sont les plus aptes à effectuer.
AMD est le pionnier d'une conception de processeur appelée unité de traitement accéléré (APU) qui combine les cœurs de CPU x86 conventionnels avec les GPU. Cette approche permet d'obtenir des performances graphiques largement supérieures à celles des solutions graphiques intégrées aux cartes mères (bien qu'elles ne soient pas comparables aux GPU discrets plus coûteux), et permet d'obtenir un système compact et peu coûteux avec de bonnes performances multimédia sans avoir besoin d'un GPU séparé. Les derniers processeurs Intel offrent également des graphiques intégrés sur puce, bien que les performances concurrentielles des GPU intégrés soient actuellement limitées aux quelques puces équipées de l'Intel Iris Pro Graphics. Au fur et à mesure des progrès technologiques, nous assisterons à un degré croissant de convergence de ces pièces autrefois séparées. AMD envisage un avenir où le CPU et le GPU ne feront qu'un, capable de travailler ensemble de manière transparente sur une même tâche .
Néanmoins, de nombreuses tâches effectuées par les systèmes d'exploitation et les applications PC sont encore mieux adaptées aux CPU, et beaucoup de travail est nécessaire pour accélérer un programme utilisant un GPU. Étant donné qu'un grand nombre de logiciels existants utilisent l'architecture x86, et que les GPU nécessitent des techniques de programmation différentes et qu'il leur manque plusieurs caractéristiques importantes nécessaires aux systèmes d'exploitation, une transition générale du CPU au GPU pour l'informatique de tous les jours est très difficile.