Accès bas niveau aux GPUs ATI

Publié le 18/08/2006 à 15:41 par
Imprimer

Enoncée vaguement lors du lancement des Radeon X1000 il y a près d'un an, la possibilité d'un accès de bas niveau, c'est-à-dire qui permet d'accéder directement au GPU sans passer par une API telle que Direct3D ou OpenGL, a été dévoilée plus en détail par ATI aux développeurs à l'occasion du SIGGRAPH 2006. Cet accès prend la forme d'une machine virtuelle, nommé DPVM pour Data Parallel Virtual Machine, qui laisse voir le GPU comme une unité de calcul parallèle accompagnée de son contrôleur mémoire et de son système de gestion, en masquant le superflu du GPU destiné uniquement au rendu graphique. Grossièrement seules les unités de pixel shader sont exposées, c'est comme si tout le reste (vertex shader, setup engine etc.) n'existait plus. Le développeur n'a donc plus à se soucier de savoir comment contourner l'utilisation primaire d'un GPU pour s'en servir comme unité de calcul et voit donc uniquement un coprocesseur mathématique.


Une représentation de la DPVM

L'intérêt concerne d'une part les performances puisqu'en parlant directement au hardware les développeurs peuvent optimiser leur code plus facilement voire mettre en place des optimisations qu'il est impossible de réaliser via une API graphique. D'autre part le contrôle sur ce qui se passe augmente considérablement, notamment au niveau de la mémoire puisque ce n'est plus un driver qui se charge de placer automatiquement les données dans des zones mémoires choisies par rapport à certains critères liés a rendu 3D, mais bien le développeur qui a un contrôle presque absolu. Enfin la DPVM permet à ATI de donner aux développeurs l'accès à certaines fonctions des Radeon X1000 qui ne sont pas utilisables dans DirectX9 et OpenGL telles que le scattering qui permet d'écrire en mémoire n'importe quel résultat temporaire.

La DPVM a été implémentée sur base de certains composants bas niveau internes du driver OpenGL d'ATI. Un assembleur/désassembleur a été développé pour cette unité de calcul de manière à pouvoir coder en langage machine mais un compilateur permet également de convertir des shaders écrits en HLSL ou en ASM version PS 3.0.

L'unité de calcul exposée par la DPVM, nommée DPA (Data Parallel Array) processors, est l'unité de calcul des pixel shaders telle qu'on la connaît c'est-à-dire capable de traiter 1 opération vec3 et une opération scalaire en parallèle avec la possibilité d'effectuer des opérations simples sur les entrées via une "mini-ALU". Le format de calcul est proche du flottant simple précision tel que défini par l'IEEE (FP32), mais pas identique puisque la précision de certaines instructions est plus faible et que les arrondis ne sont pas définis. Des simplifications logiques dans le cas d'unités de calcul destinées avant tout au rendu 3D.

Quelle sera l'utilité de ceci ? Difficile à dire. Il s'agit encore d'un projet en phase d'expérimentation et seule une poignée de chercheurs doivent y avoir accès actuellement. On est donc encore loin d'un outil utilisable en production. Néanmoins il est intéressant de voir ATI ouvrir l'accès à ses GPU. Nous sommes tentés de spéculer sur 2 usages possibles de la DPVM :

  • Permettre l'utilisation d'un GPU ATI en tant que coprocesseur sur la plateforme Torrenza d'AMD.

  • Permettre l'utilisation d'une carte graphique actuelle (et donc DX9) pour traiter la physique dans un jeu DX10. Lorsque ATI indiquait que son implémentation de l'accélération de la physique permettrait de recycler une carte graphique actuelle pour traiter la physique nous avions émis de sérieux doute puisque l'API DX10 ne voudra pas entendre parler des cartes DX9. Or la physique telle que présentée actuellement (via Havok FX) repose sur l'utilisation de Direct3D qui est contourné de son usage premier. Afficher un jeu avec une carte DX10 et faire traiter la physique par une carte DX9 sera donc impossible. A moins que la DPVM ne soit utilisée pour accélérer une telle API physique, qui plus est avec de meilleures performances. Mais tout ceci n'est que suppositions. ATI indique en tout cas clairement que la DPVM peut être utilisée en même temps qu'une API 3D et dans un environnement multi-GPU…
  • Vos réactions

    Top articles