Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Liens connexes

Dépêche modérée par

Développeur : Cg et la programmation du GPU

Posté par Bruno (page perso, ). Modéré le 19 mars 2004.
Matériel
La version 1.2 du kit de développement en Cg (C Graphique) proposé par nVidia a été mis en ligne en février 2004. Le langage Cg se présente comme un langage de haut niveau type OpenGL, ajoutant une couche d'abstraction entre l'utilisateur et le code machine de la puce graphique. Il permet de programmer directement des shaders dans le GPU (Graphics Processing Unit).

La nouveauté, c'est que des chercheurs détournent l'utilisation première des GPU et utilisent leur puissance de calcul pour effectuer des calculs scientifiques.

Ainsi les opérations sur les matrices, domaine dans lequel les GPU graphiques excellent, sont considérablement accélérés. Alors qu'un processeur AMD Athlon 1800+ pointe en théorie à 1.5 GFlops, un processeur Quadro FX 2000 à 400 MHz fournira 12.8 GFlops. Le gain de temps est plus qu'appréciable.

Malheureusement, le toolkit nVidia n'est ni Open Source, ni libre. En revanche, la spécification du langage Cg est ouverte. Le tout est disponible sous GNU/Linux, Mac OS X et Windows.

> Lire la dépêche (21 commentaires, moyenne: 2,8).  

Le constructeur de processeurs graphiques ATI propose également un langage de programmation graphique équivalent, le RenderMonkey, mais qui n'est disponible que sur la plateforme de Redmond. Dommage...

À ma connaissance, aucune bibliothèque de mathématique (type GSL, Lapack, ..) ne propose d'utiliser la carte graphique pour externaliser certaines opérations. À cela plusieurs raisons : le fait que chaque fabricant crée son propre langage propriétaire, les problèmes de licence liés au modèle propriétaire autour de ces langages, et un gain de temps certes important, mais qui ne s'applique qu'au cas par cas à certaines opérations.

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Re: Cg et la programmation du GPU

Posté par Christophe Fergeau () le 19/03/2004 à 13:02. (lien). Évalué à 2.

Le problème avec ces chiffres de GFlop, c'est que les cartes graphiques fonctionnent essentiellement en mode simd, ie pour atteindre les 12GFlops il faut appliquer la même opération sur plusieurs entiers en même temps, beaucoup d'algos ne se prêtent pas à ce traitement.
Un autre point qui me titille, c'est les communications entre carte graphique et processeur pour envoyer/récupérer les données, a priori via le bus agp actuel, c'est très lent (ça devrait s'améliorer avec le pci express), est-ce qu'on perd pas une grosse partie des gains obtenus lors du calcul à cause de ce transfert ?

Re: Cg et la programmation du GPU

Posté par corn () le 19/03/2004 à 13:03. (lien). Évalué à 3.

Puisqu'on veut jouer avec les TM et autres, autant les mettre là où il faut (en s'inspirant de nvidia.com et amd.com) :
s/nVidia™/NVIDIA/
s/AMD™ Athlon™/AMD Athlon™/

Re: Cg et la programmation du GPU

Posté par MsK` () le 19/03/2004 à 13:03. (lien). Évalué à 1.

Y'a pas de toolkit Cg libre ? ( ie fait par la communauté opensource, un peu comme avec java. C'EST PAS UN TROLL :p )

--
\_o<~~~~

Re: Cg et la programmation du GPU

Posté par PloufPlouf (Jabber id, page perso, ) le 19/03/2004 à 13:06. (lien). Évalué à 3.

est ce que cela ne pose pas des problemes de precisison ?

jsuis nul en math, mais j'imagine qu'on a pas besoin d'etre aussi precis dans le rendu d'une frame UT2004 que dans un calcule scientifique...

hein ?

Des flops par seconde ?

Posté par Salagnac () le 19/03/2004 à 13:09. (lien). Évalué à 7.

un "flops" c'est deja une unite "par seconde" : floating-point operations per second
http://en.wikipedia.org/wiki/FLOPS(...)

plop !

Re: Cg et la programmation du GPU

Posté par tuan kuranes (page perso, ) le 19/03/2004 à 13:37. (lien). Évalué à 8.

A la base, programmer les GPU se fait en assembleur dedié... CG et rendermonkey offrent des fonctions surtout orientées vers la 3d et le traitement d'image. (Vertex et Pixels)

Dans le cas d'utilisation "hors-3d" des capacités du GPU, il faudrait de toute facon créer un language adapté, avec des routines asm spécifiques.

Dans le monde du libre voici le "métalanguage" libre pour les GPU

http://sourceforge.net/projects/libsh/(...)

Sinon, Ogre3d offre un "wrapper" libre qui permets d'utiliser les capacités des GPU sous linux tres facilement ( http://www.ogre3d.org/(...) (qq demos sont incluses))

Quelques démos impressionnantes précompilées avec sources :

http://esprit.campus.luth.se/~humus/3D/index.php(...)

(attention, nécessite drivers proprio et carte 3d solide (min ATI 9600 et Geforce FX))

La spécification opengl 2.0 devrait proposer un language unifié pour les GPU (1.0, 2.0 et 3.0). (oriente image et 3d), mais c'est pas pour aujourd'hui.

Ca me rappelle l'utilisation des DSP programmables des cartes son dans un projet de calcul numérique ou de crypto... mais je ne me souviens plus le nom ni le pourquoi....

Re: Cg et la programmation du GPU

Posté par __caffeine__ () le 19/03/2004 à 14:02. (lien). Évalué à 6.

Là, on a un truc qui risque de poser problème dans quelques années. Je m'explique: la création de jeux vidéos et d'applis graphiques commence à reposer de plus en plus sur l'utilisation de "shader programs", écrits par exemple en Cg pour les cartes nvidia (ou directement en assembleur) et compilés avec les outils dédiés pour que ça aille vite (et pas appelés par des fonctions genre glVertexProgramARB).
Le problème est que pour l'instant on ne dispose d'aucun compilateur libre pour faire ces choses, et sans les specs des puces on ira pas bien loin. C'est dommage parce que le libre propose maintenant des moteurs de jeu 3D qui tiennent bien la route (ogre, crystal space...), suffisament AMHA pour concurrencer des moteurs proprios aux licences horriblement chères, mais si au moment de la sortie d'OpenGL 2.0 on a pas rajouté un backend à gcc pour les shaders languages, on va se retrouver le bec dans l'eau et obligé de se rabattre sur des solutions propriétaires. Ca me gênera pas pour mon projet de clône de nethack en python, mais ça risque d'être dommageable pour la pénétration du libre dans le jeu vidéo...

Re: Cg et la programmation du GPU

Posté par jerome bagattin () le 20/03/2004 à 02:25. (lien). Évalué à 1.

Ca peu etre interessant sur un cluster de Xbox :-)

Revenir en haut de page