Essentiellement, les GPU du début des années 2000 ont été conçus pour produire une couleur pour chaque pixel de l'écran à l'aide d'unités arithmétiques programmables appelées pixel shaders.
Mais comme l’arithmétique effectuée sur les couleurs et les textures d’entrée était entièrement contrôlée par le programmeur, les chercheurs ont observé que ces « couleurs » d’entrée pouvaient en réalité être n’importe quelle donnée.
Il y avait de sérieuses limitations :
- sur la façon et l'endroit où le programmeur pouvait écrire les résultats dans la mémoire, de sorte que les algorithmes nécessitant la possibilité d'écrire dans des emplacements arbitraires
de la mémoire (dispersion) ne pouvaient pas fonctionner sur un GPU.
-De plus, il faut savoir comment le GPU traiterait les données à virgule flottante.
CUDA
En novembre 2006, NVIDIA a dévoilé le premier GPU DirectX 10 : le GeForce 8800 GTX qui a également été le premier GPU à être construit avec l'architecture CUDA de NVIDIA.
Cette architecture comprenait plusieurs nouveaux composants conçus strictement pour le calcul GPU et visait à atténuer bon nombre des limitations qui empêchaient
les processeurs graphiques précédents d'être légitimement utiles pour le calcul à usage général.
2-1. L’architecture CUDA L'architecture CUDA permet à chaque unité arithmétique et logique (ALU) de la puce d'être utilisée par un programme destiné à effectuer des calculs à usage général.
NVIDIA souhaitait que cette nouvelle famille de processeurs graphiques soit utilisée pour le calcul général ces ALU ont été conçues pour:
- se conformer aux exigences de l'IEEE en matière d'arithmétique à virgule flottante simple précision.
- utiliser un jeu d'instructions adapté au calcul général plutôt qu'à un usage spécifique graphique.
- De plus, les unités d'exécution du GPU étaient autorisées à accéder arbitrairement en lecture et en écriture à la mémoire ainsi qu'à accéder à un cache géré par logiciel appelé mémoire partagée.
Toutes ces fonctionnalités de l'architecture CUDA ont été ajoutées afin de créer un GPU qui excellerait en calcul en plus de bien fonctionner dans les tâches graphiques traditionnelles.
2-2. Utilisation de CUDA Quelques mois après le lancement de la GeForce 8800 GTX, NVIDIA a rendu public un compilateur pour ce langage,
CUDA C qui est devenu le premier langage spécialement conçu pour faciliter le calcul général sur GPU.
En plus de créer un langage pour écrire du code pour le GPU, NVIDIA fournit également un pilote matériel spécialisé pour exploiter les capacités de calcul massives de l'architecture CUDA.
Les utilisateurs ne sont plus tenus de connaître les interfaces de programmation graphique OpenGL ou DirectX, ni de forcer leur problème à ressembler à une tâche de l’infographie.
2-3. Applications de CUDA Depuis ses débuts début 2007, diverses industries et applications ont bénéficié beaucoup de succès en choisissant de construire des applications en CUDA C.
Ce qui suit ne représente que quelques-unes des applications utilisants avec succès CUDA C et l’architecture CUDA :
1) L’imagerie médicale : TechniScan a développé une méthode d'imagerie(ultrason- sans rayonnement X) échographique tri-dimensionnelle prometteuse,
mais sa solution n'a pas été mise en pratique pour une raison très simple : les limitations de calcul.
En termes simples, la conversion des données échographiques collectées en imagerie tri-dimensionnelle nécessitait un calcul considéré comme extrêmement long et coûteux pour une utilisation pratique.
L'introduction du premier GPU de NVIDIA basé sur l'architecture CUDA ainsi que son langage de programmation CUDA C ont fourni une plate-forme sur laquelle TechniScan a pu transformer les rêves de ses fondateurs en réalité.
Le système d’imagerie par ultrasons Svara (2010) de TechniScan utilise des ondes ultrasonores pour l’imagerie. Il s'appuie sur deux processeurs NVIDIA Tesla C1060 afin de traiter les 35 Go de données générées par un scan de 15 minutes.
2) La dynamique des fluides Le mouvement étonnamment complexe de l’air et des fluides autour de ces appareils (rotors) ne peut pas être modélisé efficacement par des formulations simples,
les simulations précises s’avèrent beaucoup trop coûteuses en calcul pour être réalistes.
L'Université de Cambridge menait une recherche active sur le calcul parallèle avancé. Le Dr Graham Pullan et le Dr Tobias Brandvik du « groupe multi-coeur » ont identifié le potentiel de l'architecture CUDA de NVIDIA
pour accélérer les calculs de la dynamique des fluides à des niveaux sans précédent. Les composants clés des agents de nettoyage sont appelés Tensioactif « surfactants »,
Les molécules de tensioactifs déterminent la capacité nettoyante et la texture des détergents et des shampoings, mais elles sont considérées comme étant le composant le plus dévastateur pour l’environnement des produits de nettoyage.
Ces molécules se fixent sur la saleté puis se mélangent à l'eau afin que les tensioactifs puissent être rincés avec la saleté.
Mesurer la valeur nettoyante d’un nouveau tensioactif nécessiterait des tests approfondis en laboratoire impliquant de nombreuses combinaisons de matériaux et d’impuretés à nettoyer.
Ce processus peut être très lent et coûteux. Les chercheurs de l’université de Temple(USA) ont utilisé le logiciel de simulation GPU-accelerated Highly Optimized Object Oriented Many-particle Dynamics (HOOMD)
écrit par le laboratoire Ames du ministère de l'Énergie.