Actualité informatique du 26-12-2003

Flux XML des news Flux XML avec la liste des 20 dernières actualités.

Une GeFFX pour remplacer le P4 ?

Publié le 26/12/2003 à 12:21 par
Imprimer

Une équipe de recherche de l'université de Stanford a publié il y a quelques jours les prémices d'un langage de programmation qui permet de répartir "facilement" certaines tâches entre le CPU et le GPU. Ici, il n'est plus question de rendu 3D mais d'utiliser le GPU pour d'autres calculs. La puissance de calcul des GPUs devenant de plus en plus importante, il est logique de se demander si elle ne pourrait pas servir à autre chose qu'à affiner les courbes de Lara Croft.

Ce langage, BrookGPU, permet de spécifier quelle partie du code doit être calculée par le GPU et quelle autre partie doit être traitée normalement par le CPU. Le GPU agit donc ici comme une sorte de co-processeur ou plus précisément comme une unité vectorielle (comme le SSE) supplémentaire.

Directement après l'annonce de la concrétisation de ce langage, les gros titres ont fusés : "Votre GPU va remplacer votre CPU !", "Une GeForce FX vaut un Pentium 4 10 GHz !"… Tout ceci n'est bien entendu pas vraiment correct et n'est rien d'autre qu'un effet d'annonce autour de ce projet de recherche de l'université de Stanford (projet sponsorisé par NVIDIA, au passage). Un GPU ne peut pas remplacer un CPU car il ne peut faire qu'un nombre très limité de tâches alors qu'un CPU est polyvalent. Tout ce que le GPU peut faire c'est seconder le CPU en prenant en charge une partie du code qui peut profiter d'un traitement vectoriel. Il est donc tentant de vouloir comparer la puissance théorique de l'unité vectorielle d'un Pentium 4 à celle délivrée par le GPU (ou plutôt par les pipelines du GPU) :

    - Pentium 4 3.2 GHz : 6.4 GFlops
    - GeForce FX 5950 Ultra : 22.8 GFlops
    - Radeon 9800XT : 26.4 GFlops
Bien que ces chiffres laissent rêveur, ils ne représentent rien d'autre qu'une puissance maximale théorique. Si nous prenons un calcul élémentaire identique sur les 3, les puissances deviennent :

    - Pentium 4 3.2 GHz : 6.4 GFlops
    - GeForce FX 5950 Ultra : 7.6 GFlops
    - Radeon 9800XT : 13.2 GFlops
Un autre élément entre ensuite en compte : l'accès au données. Il devra normalement se faire via la lecture d'une texture. C'est d'ailleurs l'occasion de rappeler qu'une texture n'est rien d'autre qu'un tableau de données ! Ces données peuvent être des couleurs mais aussi bien d'autres choses. L'accès à ces données ne pouvant être distincts pour les 4 éléments de chaque pipeline d'un GPU, il faudra souvent ne traiter qu'un élément à la fois. En 3D cela reviendrait à ne pas pouvoir calculer toutes les couleurs en même temps. En terme de puissance, cela revient à la diviser par 4 :

    - Pentium 4 3.2 GHz : 6.4 GFlops
    - GeForce FX 5950 Ultra : 1.9 GFlops
    - Radeon 9800XT : 3.3 GFlops
Imaginons maintenant que le calcul demande 4 opérations et imaginons également que 8 registres soient utilisés (comme c'est le cas sur un CPU). La GeForce peut profiter de ses multiples unités de calcul mais est pénalisée par les 8 registres (les développeurs de BrookGPU avaient évoqué ce détail dans leur documentation de juillet  mais l'ont effacé dans la version de décembre ) :

    - Pentium 4 3.2 GHz : 6.4 GFlops
    - GeForce FX 5950 Ultra : 0.95 GFlops
    - Radeon 9800XT : 3.3 GFlops
Du coup, le Pentium 4 a beaucoup moins à rougir face aux GPUs. Bien entendu ceci n'est qu'une approche basique du problème car le tout est bien plus complexe que cela. Elle permet simplement de relativiser quelques gros titres qui ont fait la une ces derniers jours.

Concrètement, il y a encore beaucoup de limitations dans l'utilisation d'un GPU pour qu'il puisse seconder le CPU. La Radeon peut par exemple être directement écartée car elle ne supporte pas le FP32. Les GeForce FX retrouvent les mêmes limitations que dans les Pixel Shader 2.0 actuels. Les développeurs de BrookGPU ont d'ailleurs dû développer une version NVOGL (OpenGL avec extensions NVIDIA) spécialement pour les GeForce FX car elles ne gèrent pas les formats de données floating point dans DirectX.

Autrement dit, les ingénieurs de NVIDIA et ATI devront encore travailler un petit peu avant que ceci ne soit réellement utilisable. Car se servir d'un GPU actuel pour du calcul général revient un petit peu à essayer de s'éclairer grâce au courant tiré d'une pomme de terre. Ceci dit, l'évolution des GPUs étant fulgurante, il n'est pas trop tôt pour commencer à y travailler. Pour avoir quelques chose d'utilisable lors de la sortie des NV50 et R500 ? Nous pouvons même imaginer que ceci pourrait permettre dans le futur à ATI et NVIDIA de proposer leurs puces sur des marchés très différents.

Si vous désirez en savoir plus sur ce sujet, nous ne pouvons que vous recommander la lecture, que nous avions déjà trouvée très intéressante lors de sa publication au mois de mai, des travaux de Matthew Trentacoste  (étudiant/chercheur en sciences informatiques).

Top articles