La version 6 de CUDA annoncée hier par Nvidia doit faciliter la programmation des supercalculateurs, des serveurs, des PC et, dans une moindre mesure, des smartphones. Les outils sous-jacents de cette version de CUDA vont permettre aux programmeurs de mieux répartir les charges de traitement entre CPU et GPU, en fonction de leur nature, de façon à accélérer les applications. CUDA 6 supporte la mémoire unifiée : cette fonction de gestion avancée rend la mémoire GPU aussi facilement accessible que la mémoire CPU. Jusque-là, il fallait déplacer les données à traiter du processeur vers le processeur graphique et ramener à nouveau les données vers le CPU, et mobiliser deux flux de données. Grâce à la mémoire unifiée, le développeur n'aura plus à se préoccuper de savoir quel type de données sera pris en charge par le processeur graphique. La fonction de gestion de mémoire décidera s'il est préférable d'orienter les données vers le CPU ou vers le GPU. « Par voie de conséquence, les programmeurs auront aussi moins de lignes de code à écrire pour contrôler la destination des données », a déclaré Sumit Gupta, directeur général des produits Tesla Accelerated Computing chez Nvidia. « Le développeur n'a pas à se demander quel processeur - GPU ou CPU - affecter à telle tâche parce que cela ne dépend plus de la programmation, mais des caractéristiques de CUDA », a déclaré Dan Olds, analyste principal chez Gabriel Consulting Group. « Cet ajout à CUDA est une évolution, mais pas une révolution », a ajouté l'analyste. « Par exemple, les GPU sont souvent utilisés dans les serveurs pour la virtualisation de bureau. En automatisant la prise en charge mémoire, on peut accélérer le déploiement des instances OS via les machines virtuelles », a expliqué Dan Olds.

HSA veut également mieux faire travailler CPU et GPU

La fonction de mémoire unifiée de CUDA fait à peu près la même chose que la spécification HUMA de la Fondation HSA (Heterogeneous System Architecture) fondée l'an dernier par Advanced Micro Devices et différents fondeurs dont ARM, Qualcomm et autres, mais dont Nvidia n'est pas membre. La spécification HSA définit une architecture de système hétérogène capable de partager les différents types de mémoire d'un système. Elle permet aux programmeurs d'écrire des applications sans se préoccuper de savoir si le code est pris en charge par telle ou telle ressource mémoire. La spécification s'accorde également avec l'objectif de Nvidia de faire en sorte que CPU et GPU deviennent une ressource partagée au niveau du hardware. Le futur processeur mobile Tegra 6 de Nvidia, nom de code Parker, sera capable de mutualiser la mémoire du CPU et celle du processeur graphique dans les terminaux, les serveurs et les PC, ce qui permettra, entre autres, d'accroître la mémoire adressable disponible pour les applications. Actuellement, GPU et CPU travaillent chacun de leur côté. La fonction de mémoire unifiée de CUDA 6 devrait atténuer les choses au niveau de la couche logicielle jusqu'à ce que la fonction soit implémentée dans de futurs matériels.

Des supercalculateurs parmi les plus rapides du monde utilisent des GPU comme coprocesseurs pour accélérer le processus de traitement. La dernière mise à jour 5.5 de CUDA avait apporté le support pour les processeurs ARM. CUDA 6 a également amélioré les bibliothèques susceptibles d'accélérer les calculs sur les processeurs graphiques.