IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

CUDA Discussion :

Le GT300 supportera le C++ nativement ! [News]


Sujet :

CUDA

  1. #1
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut Le GT300 supportera le C++ nativement !
    Comme vous le savez, le mois de septembre a vu l'apparition de la nouvelle carte d'AMD, la Radeon HD5870. La plupart des sites spécialisés l'ont déjà testé, et malgré les remarques de certains qui étaient déçus des performances (notamment sur Clubic.com), je trouve que cette carte est vraiment performante. Grosso modo, elle fait jeu égal avec la HD4870X2 alors qu'il s'agit d'une carte mono-GPU. Les performances ont donc doublées d'une génération à l'autre, ce qui est vraiment pas mal, je trouve. En attendant, je prédis que la carte à succès sera sans nul doute la HD 5850, comme c'était le cas sur la génération précédente.

    Reste à connaître la réponse de NVIDIA à AMD, en l'occurrence le GT300. Il semble que le caméléon ait suivi la stratégie de la génération précédente, en sortant un GPU monstrueux mais qui va encore une fois coûter bien plus cher que l'équivalent d'AMD. J'avoue ne pas comprendre exactement cette stratégie. Ma Radeon HD3870 fait un boulot admirable, même sur les jeux actuels, je ne vois pas dans quels cas quelqu'un pourrait être tenté à débourser beaucoup plus pour une GT300 alors que la HD5850 offrira des performances excellentes !

    Tout ça pour dire que quelques informations ont commencées à filtrées concernant le GT300, et c'est particulièrement intéressant, puisque visiblement, le GT300 supportera nativement... le C++ !

    Fermi architecture natively supports C [CUDA], C++, DirectCompute, DirectX 11, Fortran, OpenCL, OpenGL 3.1 and OpenGL 3.2. Now, you’ve read that correctly – Fermi comes with a support for native execution of C++. For the first time in history, a GPU can run C++ code with no major issues or performance penalties and when you add Fortran or C to that, it is easy to see that GPGPU-wise, NVIDIA did a huge job.
    Reste à savoir dans quelles proportions ce "support" fonctionnera. Sera t-il possible d'écrire des classes, des boucles... et faire en sorte que tout soit exécuté directement sur le GPU ?

    Dans tous les cas, si cela s'avère vrai, on peut se demander quel peut-être l'avenir d'OpenCL et CUDA ? Qu'en pensez-vous ?

    EDIT : source http://www.nvidia.com/content/PDF/fe...Whitepaper.pdf

  2. #2
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    Une question peut être un peu bête : OpenCl c'est quoi la différence avec OpenGL ?
    Le fait que OpenCl soit plus proche de C ?
    j'ai cru lire aussi que c'était fait par nvidia ?

    désolé pour ces questions un peu noob peut être ^^

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    nVidia fait CUDA. OpenCL est portable sur les cartes AMD et nVidia (mais je crois qu'une bonne partie est basée sur CUDA quand même).

    La différence entre OpenGL et OpenCL est qu'OpenCL facilite le GPGPU. OpenGL s'utilise dans un contexte purement graphique. Tu peux faire du GPGPU avec OpenGL en passant par les shaders mais c'est peu pratique. OpenCL permet de développer des programmes proches du C exécutés sur ta carte graphique, directement dans ton application, sans la contrainte associée à l'utilisation des shaders.

  4. #4
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    hum ok merci, donc avec OpenCl on est plus "bas niveau" par rapport à la carte graphique. et donc plus performant ?

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Oui tu es un peu plus bas niveau. Pas spécialement plus performant, je crois même un peu moins (à confirmer), mais disons que tu gagnes vraiment en possibilités.

    J'ai pas encore trop pu m'y plonger, mais la programmation GPU est assez compliqué, notamment au niveau de la gestion de la mémoire si tu veux des performances décentes.

    Lorsque ces langages (OpenCL, CUDA) n'existaient pas, pour faire de la programmation GPGPU on procédait souvent ainsi :

    - On envoyait les données dans tes textures.
    - On exécutait des shaders qui effectuait des calculs pour chacune des données en dessinant un quad et en enregistrant les résultats dans d'autres textures.
    - On récupérait les données écrites dans d'autres textures.

    Comme tu peux le voir, texture/shader... tout ceci est très orienté "affichage graphique" et ce n'était pas forcément adapté aux types de calcul effectués. Avec ces langages, ce concept de shader/texture disparait au profit de calculs bien plus génériques, mais en contrepartie il revient au développeur de gérer correctement la mémoire, et ça c'est vraiment pas facile :/.

  6. #6
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    Hummm ok !
    Merci pour toutes ces précisions.

    je pense que c'est très intéressant mais pas encore accessible pour moi tout ça. En tout cas je suis content d'avoir pu en discuter un peu ^^

  7. #7
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    Parfaitement bien résumé Bakura

    Une petite subtilité avec DX10 qui a changé quand même pas mal de choses pour le GPGPU: au lieu du mode de programmation DX9 (exposé par Bakura), on peut utiliser dans DX10 des "stream outputs" permettant de faire circuler de façon arbitraire des données dans des unités flottantes non seulement totalement à l'intérieur du GPU (ce qui évite le goulet d'étranglement PCIe), mais aussi sans passer par des textures (ce qui permet de travailler directement sur des structures bien plus générales que ce qui nous est imposé par les formats de pixels). Par contre, les Geometry Shaders (ou "GS", qui sont nécessaires à l'utilisation des stream outputs) ont tout un tas de contraintes. Ces contraintes sont paradoxalement plus gênantes pour les applications graphiques que pour les applications générales, ce qui fait que les utilisateurs les plus agressifs des GS sont dans le monde du GPGPU. Malgré tout, les GS restent "orientés fragments", même si on se place cette fois directement au niveau intéressant en GPGPU, à savoir des vertex (définissables de façon très souple et donc bien adaptés à des données arbitraires nécessaires en GPGPU), et non pas au niveau des pixels comme avec le modèle DX9.

    Je suis impatient d'examiner ce que NVidia mijote. Où se trouve la découpe SIMD/MIMD? (j'imagine qu'à l'intérieur d'un même "shader cluster" on est en SIMD... ou non?). Si on parle de compilation C++ directement en instructions GPU, comment la seule bibliothèque C++ véritablement innovatrice pour le HPC many-cores, à savoir TBB, sera-t-elle supportée par Intel sur ces GT300, puisque cela en ferait alors un projet très dangereux pour Larrabee?

  8. #8
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je suis impatient d'examiner ce que NVidia mijote. Où se trouve la découpe SIMD/MIMD? (j'imagine qu'à l'intérieur d'un même "shader cluster" on est en SIMD... ou non?). Si on parle de compilation C++ directement en instructions GPU, comment la seule bibliothèque C++ véritablement innovatrice pour le HPC many-cores, à savoir TBB, sera-t-elle supportée par Intel sur ces GT300, puisque cela en ferait alors un projet très dangereux pour Larrabee?
    Oui, de toute façon Larrabee j'y crois moyen... Il va avoir le cul entre deux chaises. Le raytracing pourrait en tirer parti mais j'ai l'impression qu'il y a beaucoup de recherches sur le raytracing sur GPU conventionnels et qu'on devrait arriver à quelque chose de bien dans ce domaine.

    J'y connais pas grand chose en programmation GPU, et je n'ai aucune idée de la découpe SIMD/MIMD. A suivre ^^. En tout cas c'est très excitant. Et on se met à rêver que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (int i = 0 ; i != 5000 ; ++i)
        Function ();
    Soit automatiquement exécuté sur le GPU, sans aucune autre gestion de notre part .

  9. #9
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Quelle est la source de ton quote ?

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 928
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 928
    Points : 220 601
    Points
    220 601
    Billets dans le blog
    128
    Par défaut
    Ce serait bien que tous les newsers du forum je veux dire, rajoute systématiquement la source du début de la conversation. Juste pour que l'on puisse se faire notre propre idée de la qualité de la source et aussi pour chercher un peu plus loin.

    En tout cas, s'il il n'y a plus besoin de CUDA ou autre bibliothèque qui nécessite de l'apprentissage avec leur C++ ça serait cool. Attendons de voir la suite

  11. #11
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Ce serait bien que tous les newsers du forum je veux dire, rajoute systématiquement la source du début de la conversation. Juste pour que l'on puisse se faire notre propre idée de la qualité de la source et aussi pour chercher un peu plus loin.

    En tout cas, s'il il n'y a plus besoin de CUDA ou autre bibliothèque qui nécessite de l'apprentissage avec leur C++ ça serait cool. Attendons de voir la suite
    CUDA permet deja de faire presque tout le C++ il manque juste :
    • le polymorphisme
    • les appels recursifs


    Je pense donc que ce sera simplement la prochaine version de CUDA qui enlevera simplement ces limites, il faudra tout de meme bien comprendre l'architecture des GPUs et les acces memoires, mais c'est normal, n'oublions pas que nous parlons de HPC.

    D'ailleurs on peut lire sur le site de NVIDIA (http://www.nvidia.com/object/fermi_architecture.html):

    THE NEXT GENERATION CUDA ARCHITECTURE, CODE NAMED FERMI
    THE SOUL OF A SUPERCOMPUTER IN THE BODY OF A GPU

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Citation Envoyé par TanEk Voir le message
    • le polymorphisme
    • les appels recursifs
    La metaprogramation (je suis un grand fan).
    Les foncteurs (Je vois pas bien l'intérêt sur GPU mais sait-on jamais, quelqu'un de plus créatif que moi pourrait en faire usage).

    Sinon, il y a des pointeurs de fonctions/fonctions virtuelles en CUDA ?

    Ceci dit, pour revenir au sujet, ça semble prometteur ce truc la (bien plus que larabee et sa grande absence à l'IDF). Je suis impatient de voir les premiers usages qui en seront fait (sparse voxel octree ?).

  13. #13
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Citation Envoyé par deadalnix Voir le message
    La metaprogramation (je suis un grand fan).
    Les foncteurs (Je vois pas bien l'intérêt sur GPU mais sait-on jamais, quelqu'un de plus créatif que moi pourrait en faire usage).

    Sinon, il y a des pointeurs de fonctions/fonctions virtuelles en CUDA ?
    J'aurai du etre plus general: aucun pointeur de fonction (donc pas de polymorphisme qui est base sur ca). Sinon t'es sur pour la meta-prog ? CUDA gerait bien les template il y a un bon petit moment (je les avais utilise en decembre).

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Si tu les as utilisées, il doit bien les gérer. Je suis loin d'être un spécialiste CUDA, alors j'ai bien pu me tromper.

    En tout cas, il manque pas mal de choses quand même

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548

  16. #16
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    On commence à en savoir plus... en première lecture, pour le GPGPU qui m'intéresse professionnellement, la plus grosse nouveauté est la possibilité d'avoir plusieurs programmes (qu'ils appellent "kernels") exécutables en même temps, contrairement aux G80/GT200. C'est quelque chose qui ne gène pas en application graphiques, mais était particulièrement pénalisant pour les problèmes plus généraux.
    Si on ajoute à ça l'ECC, le modèle mémoire uniforme, etc, c'est vraiment un truc sensationnel pour le HPC!! Reste à savoir si c'est bien pour les jeux... Moi, je m'en fous

Discussions similaires

  1. [JNI] passage d'un tableau à 2 dimensions à une méthod nativ
    Par mmathieu dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 09/02/2007, 19h52
  2. base se données xml native??
    Par samsih dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 12/09/2005, 09h35
  3. native exécutable
    Par mouna201 dans le forum JBuilder
    Réponses: 1
    Dernier message: 06/09/2005, 16h03
  4. [BDE] Plus rien dans Configuration/Drivers/Native
    Par Harry dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/02/2005, 17h15
  5. installation native windows xp
    Par Mathusalem dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 11/02/2005, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo