Décembre 2003 | ||||||
---|---|---|---|---|---|---|
L | M | M | J | V | S | D |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Une GeFFX pour remplacer le P4 ?
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
- - Pentium 4 3.2 GHz : 6.4 GFlops
- GeForce FX 5950 Ultra : 7.6 GFlops
- Radeon 9800XT : 13.2 GFlops
- - Pentium 4 3.2 GHz : 6.4 GFlops
- GeForce FX 5950 Ultra : 1.9 GFlops
- Radeon 9800XT : 3.3 GFlops
- - Pentium 4 3.2 GHz : 6.4 GFlops
- GeForce FX 5950 Ultra : 0.95 GFlops
- Radeon 9800XT : 3.3 GFlops
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).