Téléchargez l'application
Tom's Hardware sur l'App Store
Toute l'actu informatique de référence sur votre iPhone
Oui Non

NVIDIA, C++ et GPU

par - source: Tom's Hardware FR

La prochaine carte graphique de NVIDIA, Fermi, sera bien utilisable avec des langages de plus haut niveau que ce que les cartes actuelles proposent, nous en parlions hier. Concrètement, NVIDIA devrait proposer (une fois la carte disponible...) un compilateur C++ for CUDA, à la manière des compilateurs C for CUDA et du récent Fortran for CUDA.

Les raisons de cette amélioration

La première raison, c'est que les développeurs utilisent (à notre époque) beaucoup plus les langages de haut niveau et orientés objet, comme le C++, que les langages C ou Fortran. La seconde, c'est que NVIDIA a amélioré sa puce et pensé le GPU comme un processeur autant que comme une carte d'accélération 3D. Une des nouveautés, qui permet justement de prendre en charge le C++, est le fait que le système unifie la mémoire : avec les cartes précédentes, trois espaces mémoire coexistaient et cette gestion posait des problèmes dans la programmation (notamment dans la gestion des pointeurs). Avec Fermi, NVIDIA a unifié la mémoire et propose une mémoire virtuelle (à la manière des CPU) avec une gestion sur 40 bits (1 To). Cette mémoire unifiée était un des prérequis nécessaires à la prise en charge du C++.

En pratique, la puce ne sera donc pas capable de comprendre n'importe quel code en C++ (ce qui est assez logique) mais permettra aux développeurs de rester sur un langage de haut niveau et devrait donc accélérer les temps de développement. Notons, bien évidemment, que le C pour CUDA et le Fortran pour CUDA restent de la partie, tout comme OpenCL, DxCompute, etc.

Partager:
8
Commentaires
X
Valider

Commentaires
Ajouter un commentaire
spamplemousse 01/10/2009 13:20
Masquer
-1+

Ah oué, de suite c'est quand même différent de "Fermi prendra en charge NATIVEMENT le C++"
Là c'est juste un "bête" compilateur. Rien de révolutionnaire....

Bncjo 01/10/2009 13:25
Masquer
-3+

Ouai rien de révolutionnaire, c'est juste les premiers à le faire....

spamplemousse 01/10/2009 13:57
Masquer
-1+

A faire un compilateur C++.....non, pas vraiment.
Et surtout on est loin de la news d'hier qui annonçait presque ça comme le messie

magellan 01/10/2009 15:13
Masquer
-2+

Voilà qui est autrement plus clair! Donc schématiquement, le compilateur dédié GPU va permettre que les instructions natives C++ soient interprétées à travers les instructions du GPU. Ca devient tout à coup plus clair, moins spectaculaire, mais tout de même intéressant.

J'imagine fort bien des applications type imagerie médicale qui, une fois repassées à la moulinette C++ for GPU, profiterons d'un "boost" de performance grâce à l'usage intensif du GPU.

Toutefois, une question demeure: étant donné qu'un GPU c'est majoritairement des jeux d'instructions très spécialisés graphisme et 3D, cela sous-entend (à mon sens mais je peux comprendre de travers) que certains fonctionnements seront utilisés de manières détournées... donc potentiellement moins performantes.
PS: je souligne le potentiellement, tout dépend de ce que sait faire réellement un GPU!

anonymous 01/10/2009 15:26
Masquer
-0+

Le "cGPU sauce nvidiesque" apporte le support du langage Fortran, C, C++ uniquement par la traduction via CUDA (API en C il semblerait), le tout avec de la pseudo-syntaxe langage objet bien appauvrie pour coller au petit bouzin qui veut devenir CPU.

Si CUDA est transformé en C++, par exemple avec une baguette magique, alors le langage C++ sera possible en intégralité et le CPU deviendrait inutile à terme.

C'est plutôt une évolution, bien que remarquable, avec cette nouvelle architecture MIMD "cGPU" en direction du CPU et pas une révolution.

L'API physX pourra s'exécuter en // avec une API openGL ou Direct3D sur gt300, sans trop de perte grâce au MIMD, contrairement à aujourd'hui avec le gt200.

PS: Ca fait plaisir de voir les forumeurs qui connaissent le sujet dégommer le marketing pour les nvidiots.

zorro3364 01/10/2009 16:41
Masquer
-7+

c'est pénible cette manie de toujours associer langage de haut niveau et processeur! le seul et unique langage propre a chaque processeur est le langage machine!
le propre d'un langage de haut niveau est justement d'être indépendant de la plateforme, aussi bien matérielle que logicielle, ils ont été créés pour ça!
vous confondez langage et API je crois:
un langage c'est une syntaxe, des conventions, une "façon" de coder, etc.
une API,c'est un ensemble de fonctions qui permettent à un programme d'utiliser les ressources qui lui sont offertes par l'os, le matériel (via un driver), un autre programme, etc.
illustration:
le C peut être utilisé sur x86, power pc, motorola, cell, les gpu, etc.
le C peut être utilisé sur unix, linux, windows, mac os, dos, etc.
les API que l'on utilise dans notre programme en C, en BASIC, en FORTRAN, etc, appartiennent à une bibliothèque (library) bien précise (os, driver, sdk quelconque, etc).
une fois compilé, un programme en C n'est utilisable que pour un os (et donc un processeur) bien précis.
bref, comme je le disait hier, parler de support de langage de haut niveau pour un processeur (cpu ou gpu) est un total non sens.

de la même manière, le C est le même langage que le C++ (même syntaxe, mêmes conventions), sauf que ce dernier est orienté objet ("façon" différente de programmer).

SpadVIII 01/10/2009 21:25
Masquer
-0+

De plus, appeler encore le C++ un langage de haut niveau, quand on assiste à une généralisation d'applies écrites en Java/C#, langages qui proposent tout de même un niveau d'abstraction bien supérieur (sans parler d'autres langages plus exotiques mais forcement moins populaires). Même si au final, comme dit, tout fini par l'exécution de code machine.

malfretup 01/10/2009 22:31
Masquer
-1+

zorro3364 :
c'est pénible cette manie de toujours associer langage de haut niveau et processeur! le seul et unique langage propre a chaque processeur est le langage machine!le propre d'un langage de haut niveau est justement d'être indépendant de la plateforme, aussi bien matérielle que logicielle, ils ont été créés pour ça!vous confondez langage et API je crois:un langage c'est une syntaxe, des conventions, une "façon" de coder, etc.une API,c'est un ensemble de fonctions qui permettent à un programme d'utiliser les ressources qui lui sont offertes par l'os, le matériel (via un driver), un autre programme, etc.illustration:le C peut être utilisé sur x86, power pc, motorola, cell, les gpu, etc.le C peut être utilisé sur unix, linux, windows, mac os, dos, etc.les API que l'on utilise dans notre programme en C, en BASIC, en FORTRAN, etc, appartiennent à une bibliothèque (library) bien précise (os, driver, sdk quelconque, etc).une fois compilé, un programme en C n'est utilisable que pour un os (et donc un processeur) bien précis.bref, comme je le disait hier, parler de support de langage de haut niveau pour un processeur (cpu ou gpu) est un total non sens.de la même manière, le C est le même langage que le C++ (même syntaxe, mêmes conventions), sauf que ce dernier est orienté objet ("façon" différente de programmer).


Tu as dit exactement tout ce que je voulais dire...
Je te tire ma révérence

Publicité

Les offres du moment

Newsletters


OK