Developpez.com

Une très vaste base de connaissances en informatique avec
plus de 100 FAQ et 10 000 réponses à vos questions

Microsoft ouvre aux autres compilateurs C++ AMP
La spécification pour la conception d'applications parallèles C++ utilisant le GPU

Le , par Hinault Romaric, Responsable .NET
Mise à jour du 07/02/2012, par Hinault Romaric

Comme Microsoft l’avait promis lors de la présentation de C++ AMP, l’éditeur a publié le cahier des charges de la spécification afin que les autres éditeurs de compilateur C++ puissent l’utiliser.

Pour rappel, C++ AMP (Accelerated Massive Parallelism) est une nouvelle technologie conçue pour aider les développeurs C++ dans la conception d'applications parallèles utilisant le GPU. C++ AMP s’appuie sur les bibliothèques de programmation d'applications multimédia DirectX et facilite le développement en exploitant la puissance du matériel massivement parallèle (GPU et APU).

C++ AMP permet donc de combler les attentes des développeurs qui ont de plus en plus besoin de tirer parti de la puissance des GPU dans leurs applications. La technologie a été développée tout d’abord pour Visual Studio 2011, et un aperçu est déjà disponible avec la Developper Preview de l’environnement de développement publiée en septembre dernier.

La technologie a été mise au point en partenariat avec NVIDIA et AMD. Les ingénieurs de Microsoft ont réduit au minimum le nombre de changements dans le code. C++ AMP comporte quelques restrictions qui sont nécessaires lors de l’exécution du code sur plusieurs processeurs. Il dispose également d’un certain nombre de fonctionnalités supplémentaires comme les types de tableaux multidimensionnels et le support du transfert de mémoire synchrone.

La spécification publiée sous une licence Open Specification Promise (OPS) par Microsof lors de la conférence GoingNative C++ 2012, peut désormais être utilisée par d’autres responsables de compilateur C++ comme Embarcadero, Intel ou encore la Free Software Foundation, tout en étant à l’abri de toute revendication de droits de brevets par l’éditeur.

L’implémentation de C++ AMP dans Visual Studio 11 utilise DirectCompute pour générer le byte code qui sera interprété par le GPU. Les éditeurs de compilateur C++ pourront utiliser d’autres interfaces comme CUDA de Nvidia.

L’éditeur travaille par ailleurs avec le comité de normalisation du C++, afin de faire adopter les idées derrières C++ AMP dans le noyau du langage.

Source : Microsoft

C++ AMP : le nouvel outil de Microsoft
Pour la conception d'applications parallèles en C++ utilisant la puissance du GPU

Microsoft a annoncé lors de la conférence Fusion Sommet d’AMD, une nouvelle technologie conçue pour aider les développeurs C++ dans la conception d'applications parallèles utilisant le GPU (Graphics Processing Unit).

La technologie baptisée C++ Accelerated Massive Parallelism (C++ AMP) est construite en C++ moderne, et s’appuie sur les bibliothèques de programmation d'applications multimédia DirectX. C++ AMP permettra de faciliter la programmation en exploitant la puissance du matériel massivement parallèle (GPU et APU).

C++ AMP sera fourni avec une bibliothèque STL-like, qui pourra être utilisée en faisant appel à amp.h dans un code C++. Les développeurs n’auront pas besoin d’apprendre une nouvelle syntaxe.

La portabilité est également un point essentiel dans C++ AMP. Les applications utilisant cette technologie pourront être utilisées sur un large éventail de matériels de n’importe quel fournisseur. La première version sera centrée sur le GPU, mais Microsoft prévoit dans le futur, d'étendre la technologie pour exploiter les architectures multi-cœurs et le Cloud.

C++ AMP sera proposée comme spécification ouverte. Microsoft prévoit de mettre le cahier de charge de cette technologie à la disposition des autres éditeurs de compilateur C++ pour qu’ils puissent l’utiliser.

L'outil sera intégré dans la prochaine version du compilateur Visual C++. Et il sera totalement pris en charge (édition, build, débogage, profiling, etc.) dans la prochaine version de Visual Studio.

Source : Microsoft

Et vous ?

Que pensez-vous de la volonté de Microsoft de sortir un nouvel outil pour la programmation parallèle : bienvenue ou vous avez déjà ce qu'il vous faut ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de stardeath stardeath - Membre expert http://www.developpez.com
le 16/06/2011 à 18:05
faudrait peut être pas oublier que cuda, c'est nvidia only, que la prise en charge d'opencl dépend du constructeur (comme opengl) et qu'opengl sent le moisi à plein nez parce que certains contributeurs ne veulent pas remettre en cause la compatibilité de leurs applis.

microsoft avec directx a réussi à mettre en place un système indépendant du bon vouloir des constructeurs, a osé remettre son api à zéro avec directx 10, pour obtenir une api de qualité où on ne se pose pas la question de l'utilisation d'extensions propriétaires.

que microsoft mette son nez la dedans est plutôt une bonne chose, on peut espérer avoir un ensemble de fonctionnalités que l'on pourra utiliser les yeux fermés sans se soucier du constructeurs du matos dont on dispose.
Avatar de yabb85 yabb85 - Membre à l'essai http://www.developpez.com
le 16/06/2011 à 19:16
Le gros problème d'OpenGL était surtout GL, et comme SGI a végété pendant des années pendant ce temps GL n'a pas avancé et openGL non plus (OpenGL 4.1 a bien rattrapé le retard). OpenCL n'as pas ce soucis en étant dépendant d'un groupement d'industrie dés le départ et non d'une seul entreprise.
Avatar de Traroth2 Traroth2 - Expert éminent http://www.developpez.com
le 22/06/2011 à 14:30
Citation Envoyé par stardeath  Voir le message
faudrait peut être pas oublier que cuda, c'est nvidia only, que la prise en charge d'opencl dépend du constructeur (comme opengl) et qu'opengl sent le moisi à plein nez parce que certains contributeurs ne veulent pas remettre en cause la compatibilité de leurs applis.

microsoft avec directx a réussi à mettre en place un système indépendant du bon vouloir des constructeurs, a osé remettre son api à zéro avec directx 10, pour obtenir une api de qualité où on ne se pose pas la question de l'utilisation d'extensions propriétaires.

que microsoft mette son nez la dedans est plutôt une bonne chose, on peut espérer avoir un ensemble de fonctionnalités que l'on pourra utiliser les yeux fermés sans se soucier du constructeurs du matos dont on dispose.

Parce que tu crois que si les fabricants de GPU ne les rendaient pas compatible DirectX, DirectX aurait le moindre intérêt ? C'est avec DirectX que tu te rends dépendant d'un seul fournisseur, Microsoft.

OpenGL est implémenté par plusieurs fabricants de puces, utilisé dans de nombreux OS et son évolution est dirigé par une fondation indépendante, le Khronos Group.
Avatar de Hinault Romaric Hinault Romaric - Responsable .NET http://www.developpez.com
le 07/02/2012 à 12:58
Microsoft ouvre la spécification C++ AMP aux autres compilateurs
pour la conception d'applications parallèles en C++ utilisant la puissance du GPU

Mise à jour du 07/02/2012, par Hinault Romaric

Comme Microsoft l’avait promis lors de la présentation de C++ AMP, l’éditeur a publié le cahier de charge de la spécification afin que les autres éditeurs de compilateur C++ puissent l’utiliser.

Pour rappel, C++ AMP (Accelerated Massive Parallelism) est une nouvelle technologie conçue pour aider les développeurs C++ dans la conception d'applications parallèles utilisant le GPU. C++ AMP s’appuie sur les bibliothèques de programmation d'applications multimédia DirectX et facilite le développement en exploitant la puissance du matériel massivement parallèle (GPU et APU).

C++ AMP permet donc de combler les attentes des développeurs qui ont de plus en plus besoin de tirer parti de la puissance des GPU dans leurs applications. La technologie a été développée tout d’abord pour Visual Studio 2011, et un aperçu est déjà disponible avec la Developper Preview de l’environnement de développement publiée en septembre dernier.

La technologie a été mise au point en partenariat avec NVIDIA et AMD. Les ingénieurs de Microsoft ont réduit au minimum le nombre de changements dans le code. C++ AMP comporte quelques restrictions qui sont nécessaires lors de l’exécution du code sur plusieurs processeurs. Il dispose également d’un certain nombre de fonctionnalités supplémentaires comme les types de tableaux multidimensionnels et le support du transfert de mémoire synchrone.

La spécification publiée sous une licence Open Specification Promise (OPS) par Microsof lors de la conférence GoingNative C++ 2012, peut désormais être utilisée par d’autres responsables de compilateur C++ comme Embarcadero, Intel ou encore la Free Software Foundation, tout en étant à l’abri de toute revendication de droits de brevets par l’éditeur.

L’implémentation de C++ AMP dans Visual Studio 11 utilise DirectCompute pour générer le byte code qui sera interprété par le GPU. Les éditeurs de compilateur C++ pourront utiliser d’autres interfaces comme CUDA de Nvidia.

L’éditeur travaille par ailleurs avec le comité de normalisation du C++, afin de faire adopter les idées derrières C++ AMP dans le noyau du langage.

Source : Microsoft
Avatar de 0x90_op 0x90_op - Nouveau Candidat au Club http://www.developpez.com
le 07/02/2012 à 13:16
Je n'ai jamais développé autours des GPU mais je pense que ça va être du pain béni pour les développeurs de virus. Ils vont pouvoir développer quelque chose autours du GPU avec visual studio (qui simplifie la programmation sous Windows). Reste a voir si les antivirus et Windows sont capable de gérer les applications GPU. Les rootkits risquent d'être très puissant dans le cas contraire.
Avatar de Freem Freem - Membre émérite http://www.developpez.com
le 07/02/2012 à 13:17
Ca a l'air plutôt intéressant, et en plus les spec sont ouvertes, ce qui veut dire qu'on aura des implémentations libres, c'est que du bonheur.

Y'a plus qu'a voir comment qu'on s'en sert (et a attendre un peu pour les non windowsiens) pour le coup

Et si en plus ils arrivent a faire intégrer une telle techno au C++ pour le prochain standard (bon, en 10 ans, on a le temps de voir venir remarquez xD) ce serait excellent...
Y'a pas a dire, ces derniers temps MS monte dans mon estime (bien que j'aie du mal avec leurs nouvelles IHM, mais ça, les goûts et les couleurs...)...
MS qui se met a faire des standards et a bosser avec les autres, on dirait qu'ils sont retombés en "enfance" quand ils ont pris la main sur le marché du PC contre apple (ils ne bossent plus avec IBM ici, mais avec nvidia et amd)

[edit]
@0x90_op
le troll : tu sors.
Quoique, je devrais dire: le boulet, tu sors. Ca change rien aux virus ça, et en plus, ça ne sera pas limité a windows (ben oui, spec libre, donc sûrement porté)
Avatar de jmnicolas jmnicolas - Membre éprouvé http://www.developpez.com
le 07/02/2012 à 14:20
C++ AMP permet donc de combler les attentes des développeurs qui ont de plus en plus besoin de tirer parti de la puissance des GPU dans leurs applications.

Malgré tout le battage médiatique autour de la parallélisation, je suis pas sûr qu'il y ait beaucoup de développements concernés.
Avatar de Freem Freem - Membre émérite http://www.developpez.com
le 07/02/2012 à 15:07
Citation Envoyé par jmnicolas  Voir le message
Malgré tout le battage médiatique autour de la parallélisation, je suis pas sûr qu'il y ait beaucoup de développements concernés.

Hum... pour la parallélisation en général, tout ce qui fait une vérification derrière le dos de l'utilisateur je dirai, donc IDE naturellement, mais aussi traitement de texte (vérification orthographique).
Logiciels utilisant la compression (ça inclue même les traitements de texte de nos jours, vue la propension à toujours passer par un xml, qui est ensuite compressé... cf docx).
Logiciels de traitement d'images et jeux.
Bases de données, je suis prêt à le parier (mais sans preuve toutefois).
Et sûrement pleins d'autres cas que je ne vois pas.

Pour le cas du GPU seulement, c'est simple, tout ce qui emploie le traitement d'image (détection d'objet, retouche photo automatique...) ou des calculs mathématiques pointus (pas d'exemple en tête).
Et si je pense à compiz-fusion, le fameux bureau 3D qui tourne sous X, il permet de faire faire les calculs relatifs à l'IHM par le GPU. Ca permet d'économiser des ressources CPU il paraît (je dis "il paraît" parce que je n'ai pas vraiment eu de preuve de l'intérêt du GPU pour les perfs. Excepté pour utiliser des effets qui ne sont que de la poudre aux yeux - feu, fondus, ce genre de trucs - , naturellement. L'affichage du cube peut-être?).

Ce qui est certain pour moi, c'est que la parallélisation permet de bien accélérer les logiciels qui s'en servent, et en réfléchissant, je pense qu'on peut l'appliquer à énormément d'applications. Bien que parfois le coût de développement supérieur et le faible gain en terme de performances le rend inutile je suppose.
Autre chose, il semble que les processeurs ne vont plus augmenter leur cadence brute, mais leur nombre de coeurs. C'est la que la parallélisation entre en jeu pour donner de la puissance. Si on peut en plus squatter les cycles du GPU et de l'APU plus facilement, ce sera des gains de puissance "toujours ça de pris".

Après, je suis pas un expert de la question, mais je dirai que cette librairie(?) en permettant a plus de gens d'utiliser facilement la parallélisation pourrait faire apparaître d'autres usages (plus ou moins) judicieux.
Avatar de gangsoleil gangsoleil - Modérateur http://www.developpez.com
le 07/02/2012 à 15:56
Bonjour,

Effectivement, aujourd'hui, on vend du parallelisme a tout va, en expliquant que c'est vachement mieux qu'avant.

Mais dans la vrai vie, des qu'on developpe un peu, on se rend compte que c'est plus complexe que ca.

Du parallelisme CPU et GPU ? Youpi, mais pour la plupart des applications, ca sert a quoi ?

Mettre ca dans la norme ? Mais bien sur, surchargeons une norme qui est deja tellement complexe que certains pans de celle-ci semblent reserves a l'elite de l'elite des excellents developpeurs C++ (regardez-la, elle vaut le coup).

Alors oui, le GPU a le vent en poupe aujourd'hui, de meme que le green computing, le cloud, ... Bref, encore pleins de buzz-word pour montrer que tout le monde il est beau, tout le monde il est gentil.

PS : En tant que developpeur d'applications systemes, je n'ai jamais vu d'applications lambda qui demandaient plus de 6 ou 8 threads (et encore, c'etait pour de l'optimisation massivement parallele).
PPS : Bien sur, en calcul parallele, c'est autre chose, mais c'est un domaine tellement particulier que je ne suis pas certain qu'ils se reposent sur une implementation dans le compilateur.
PPPS : Ah si, il y a les paralleliseurs de code, tres utilises par les physiciens, qui pourraient tirer parti de ce genre d'implementation. Dommage qu'ils generent du Fortran.
Avatar de Jojo K-ri Jojo K-ri - Membre régulier http://www.developpez.com
le 07/02/2012 à 19:14
ça pourra servir à booster la plupart des projets de calcul en grid computing/distributed computing.
(genre les X@home comme seti@home pour ceux qui connaissent pas...)
ça servira donc à booster la science.

Faites don de votre temps de processeur inutile à la science, installez BOINC

une liste (non-exhaustive) des projets existants :
http://en.wikipedia.org/wiki/List_of...uting_projects
Avatar de TNT89 TNT89 - Membre confirmé http://www.developpez.com
le 07/02/2012 à 20:20
Citation Envoyé par Hinault Romaric  Voir le message
Et vous ?
Que pensez-vous de la volonté de Microsoft de sortir un nouvel outil pour la programmation parallèle : bienvenue ou vous avez déjà ce qu'il vous faut ?

Non, c'est simplement une interface qui ne sert à rien.

Dans le désordre de ce que j'ai pu lire :

Citation Envoyé par Firwen  Voir le message
Les sections GPU de CUDA sont fortement similaire à celle d'openCL et ont un peu prés les même limitations ( mémoire, typages, non-récursive,..), elles ne sont pas C++, elles se rapprochent du C ou de la synthaxe d'OpenCL.

Les sections de code CUDA (pour le GPU) sont C (objet et metaprogrammation template, ce qui est très savoureux dans le deuxième cas d'ailleurs).

Citation Envoyé par jmnicolas  Voir le message
Malgré tout le battage médiatique autour de la parallélisation, je suis pas sûr qu'il y ait beaucoup de développements concernés.

Pour des applications scientifiques, si, énormément même. Je travaille dans un domaine où la FFT est le point névralgique de tous les calculs et ce qu'apporte le GPGPU est tout simplement incroyable.

Citation Envoyé par Freem  Voir le message
Et si je pense à compiz-fusion, le fameux bureau 3D qui tourne sous X, il permet de faire faire les calculs relatifs à l'IHM par le GPU.

Enfin ca n'a pas grand-chose à voir avec du GPGPU (pour Genereral Pur pose) car Compiz n'utilise que la partie graphique, pour le rendu.

Citation Envoyé par Jojo K-ri  Voir le message
ça servira donc à booster la science.

Malheureusement, si l'on considère cette interface, non je ne pense pas. Tout simplement et de mon expérience, j'ai déjà du mal à faire passer le message de ce que l'on fait vraiment avec GPU (CUDA/GLSL principalement) a mes collègues physiciens, de la façon dont on gère la programmation et pourquoi ça n'est pas un simple "deroulement de boucle" dans la plupart de nos applications. De plus, la majorité d'entre eux ne connaît que le C. Enfin, cet outil ne propose qu'une interface que je trouve pour ma part très obscure quant à la gestion fine de la mémoire, des échanges CPU/GPU, etc. comme certains l'aient déjà dit. Bref, rien de très attrayant pour selon mon point de vue.

Le moment où cela devient comique, c'est de savoir que Microsoft voudrait pousser l'adoption dans le standard.
  1. Adoption d'une interface très jeune par rapport aux autres protagonistes.
  2. Adoption d'une interface qui n'est pas reconnue et utilisee par une seule plateforme et un seul groupe.
  3. Adoption d'une interface spécifique au hardware de certaines machines seulement dans un standard de langage de programmation.

J'ai une très forte envie de citer une accroche de réclame :
...et la marmotte met le petit chocolat dans le papier d'alu...
Offres d'emploi IT
Développeur web front-end
Tiller Systems - Ile de France - Paris (75000)
Lead développeur php - symfony 2
Belle start up - Ile de France - Paris (75000)
DBA Administrateur de production TERADATA
ONE CUBE - Languedoc Roussillon - Montpellier (34000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil