Welcome to MSDN Blogs Sign in | Join | Help

Visual Studio Talk Show : Les nouveautés annoncées à la PDC09

Pour conclure la PDC09, accompagné de Grégory Renard, nous avons échangé avec Guy Barrette, pour enregistrer sur place une session Visual Studio Talk Show entièrement consacrée aux nouveautés annoncées à la PDC09. Pendant une bonne heure, nous avons parlé cette PDC09 avec ses grandes annonces en partageant sans tabou nos impressions.

clip_image002

Le postcast est disponible ici.
A bientôt,

Bruno

Bruno Boucard (boucard.bruno@free.fr)

Posted by ericv | 0 Comments

MSDN Magazine de décembre et la parallélisassions des données avec PLINQ

C’est Igor Ostrovsky développeur principal sur l'offre parallèle LINQ, qui nous propose un article sur les patterns parallèles avec PLINQ agrémentés conseils pour éviter les mauvaises surprises.

A lire absolument,

A bientôt,

Bruno

boucard.bruno@free.fr

PDC09: dernier jour

Nous débutons cette dernière journée de la PDC09, par une session parallèle animée par Dana Groff (Senior Program Manager chez Microsoft). Nous avons déjà évoqué le Concurrency Runtime sur ce blog, mais avec la sortie de Windows 7 x64 et de Windows Server R2, celui-ci apporte une nouvelle dimension: l'exploitation des User Mode Scheduled Threads (UMS). En une phrase UMS permet à une application de définir sa politique d'ordonnancement au lieu de laisser le système d'exploitation décidé de lui-même tout en offrant un logique suspension de threads plus efficace et beaucoup moins couteuse. Mais là encore nous en avions parlé sur ce blog.

image

Disponible uniquement en version 64bit, ce nouveau type de thread offre au Concurrency Runtime des opportunités de performances exceptionnelles. Rappelons que les librairies PPL et Agent Asynchrone reposent sur ce moteur d'exécution, mais que la prochaine version des librairies TBB et OpenMP d'Intel Parallèle Studio 2.0 viendra s'appuyer sur le Concurrency Runtime. Si votre système supporte UMS, alors par défaut tous les Schedulers des librairies respectives utilisées dans votre code utiliseront le mode UMS, dans le cas contraire le mode UMS n'est pas activé. Cependant vous pouvez parfaitement contrôler les options de Scheduling de manière programmatique. Notons que Dana, nous a aussi rappelé et démontrer la gestion du Work Stealing du Scheduler et la gestion dynamique du gestionnaire de ressources avec beaucoup de pédagogie.

image

Bref, une superbe session très intéressante que le grand James Reinders (Chief Evangelist and Director of Marketing for Intel’s Software Development Products) à partager avec nous. Une session a regarder sans modération.

La session parallèle suivante s'intitulait "Axum: A .NET Language for Safe and Scalable Concurrency". Visual Studio 2010 est sans aucun doute une version exceptionnelle vis à vis du parallélisme, mais il serait réducteur de ne pas s'intéresser aux technologies parallèle actuellement en incubation comme Axum par exemple. Ce langage orienté rôle propose une offre est très séduisante en bien des points car elle permet d'envisager un monde parallèle à la fois plus simple et plus confortable. En effet, Axum s'inscrit dans les technologies parallèles les moins risquées sur le plan des pièges du parallélisme. C'est donc Nikkas Gustafsson (Software Architect Parallel Computing Platform chez Microsoft) responsable du langage Axum qui nous a fait une superbe présentation, utilisant de belles métaphores afin d'introduire les motivations du langage Axum.

image

Cependant, on ne peut pas entreprendre de programmer Axum sans en connaitre les concepts: Agent, Channel, Domain et Schéma. Un Channel est canal entre deux agents qui peuvent être éventuellement sur deux machines différentes. Un Agent es un composant similaire à un thread mais avec un accès limité à un état partagé mutable. Un Domain est un état partagé par plusieurs Agent. Un Schema est une définition garantissant la sérialisation des messages échangés ...

A travers quelques exemples très simples afin d'illustrer les concepts et la syntaxe d'Axum, nous avons découvert un langage d'avenir qui permettra à de nombreux développeurs de profiter du parallèlisme sans trop de difficultée.

Naturellement, Axum est encore en phase d'incubation mais nous vous conseillons de le télécharger afin de découvrir par vous même ce super langage.

Pour la dernière session parallèle de la journée, nous avons choisi "DirectCompute: Capturing the Teraflop". Aujourd'hui le programmation GPU est déjà une réalité dans de nombreux sociétés (et notamment le monde de la finance). Avec l'arrivé de DirectX 11, il devient possible d'exploiter les cartes graphiques pour paralléliser massivement des traitements sur des GPU. La session animé par Chas. Boyd (Architecte chez Microsoft) à débuté par une comparaison qualitative entre CPU et GPU. Naturellement au regard des performances annoncé par les GPU

image 

Puis nous avons suivi la décomposition du code pour exécuter du code sur la carte graphique depuis l'initialisation de la librairie DirectCompute en passant par l'exécution sur la carte graphique puis en récupérant le resultat des traitements. Techniquement le code est essentiellement en langage C et  en Shader (script d'exécution dont la syntaxe ressemble à du C sans pointeurs).

image

Comme dans la session d'hier nommée "Direct3D11 et le multi-threading", un pipeline de décomposition en plusieurs phases permet de compiler un fichier de type shader de manière optimisé.

Enfin, on apprend en fin de session qu'une version managed de DirectCompute sera bien disponible pour le plus grand bonheur des développeurs .NET. Nous ne manquerons pas de vous prévenir dès que cette version sortira..

Voila qui termine le parcourt parallèle pour cette PDC09.

Les Vidéos de sessions commencent à être lignes sur le site PDC09, c'est donc le moment de les visionner !!!

Enfin, nous reviendrons prochainement sur cette PDC09 car comme nous l'annoncions dans le billet précèdent, nous avons réalisé quelques interviews de gens de Microsoft Corp.

L'équipe DevPara

PDC09: The State of Parallel Programming

Cette session très conceptuelle animé par Burton Smith (Technical Fellow chez Microsoft) a permis de présenter de manière détaillée comment gérer la notion d’état en programmation parallèle.

Les langages orientés messages ou bien les langages fonctionnels n'échappent aux difficultés de la concurrence une fois engagés dans la programmation  parallèle. Pour maintenir les invariants dans un contexte concurrent, l'utilisation de transaction atomique est sans doute la meilleure réponse. Une implémentation du concept de Mémoire Transactionnelle peu être envisagée à condition que le coût d'atomicité et d'isolation reste raisonnable au regard de l'application concernée. En d'autre mot la granularité du code engagé dans une transaction mémoire ne doit pas entrainer un volume de ressources pénalisant pour le bon fonctionnent générale de l'application (en parallélisme c’est la moindre des choses).

Bref une session très intéressante, mais peut être un peu trop théorique, une démonstration aurait sans doute permis d'illustrer une concrétisation de tous ces concepts si importants en programmation parallèle.

L’équipe DevPara

Posted by ericv | 0 Comments
Filed under:

Direct3D11 et le multi-threading

Mots clés Technorati :

3ième journée à la PDC 2009, et comme d’hab à Los Angeles, il a fait un temps magnifique aux alentours de 22 degrés que du bonheur.

Elle a commencée sans surprise, par une session plénière, qui elle nous a réservée un certain nombre de surprises et d’annonces importantes de sorties béta de produit comme Silverligh 4, Office 2010 et d’autres sur lesquels nous ne reviendrons pas dans ce billet, car elles ne concernent pas le développement parallèle. Néanmoins, la plus grande surprise a été l’annonce, de l’offre gratuite d’un Tablet PC multi-touch spéciale Windows 7, pour tous les participants. Attention touchante que notre Bruno à beaucoup apprécié, même si le clavier est qwerty.

Bon revenons à nos moutons, Aujourd’hui, pas beaucoup de sessions dédiées au parallélisme si ce n’est celle de Monsieur Burton Smith qui nous a expliqué de main de maitre pendant une heure, la gestion des états dans la programmation parallèle. Bruno reviendra rapidement dessus dans un prochain billet.

Nous avons ensuite dirigé nos pas vers une session, plutôt dédié aux développeurs de jeux, sur la programmation Graphique 3D à l’aide de l’API Direct3D.

Comme vous le savez Direct3D s’appuie sur l’accélération Hardware donc sur les cartes graphiques qui sont munis d’une multitude de cœurs et qui permet une exécution massivement parallèle.

L’envoi d’instructions, de primitives, se fait via une architecture dite en pipeline, qui permet de traiter les triangles étapes par étapes avant de les fournir à la carte graphique qui les exécutera alors en parallèle.

Image1

Jusqu’à Direct3D10, ce pipeline, n’est pas réentrant, ce qui veut dire qu’un seul thread à un instant T, peux y accéder. En d’autres termes, si vous possédez une machine de course avec un Core I7, 4 cœurs hyper-threadé, cela n’accéléra pas forcément les derniers jeux à la mode.

Avec Direct3D11 cela change, car ils décomposent un certain nombre d’étapes dans le Pipeline, pour permettent la création sur plusieurs threads de listes de commandes et de primitives, avant de les resynchroniser dans le pipeline et de les renvoyer à la carte graphique.

Image2

Avec Direct3D11 apparaît également une nouvelle fonctionnalité, DirectCompute, qui permet de faire du GPGPU à l’aide de Compute Shader. Un shader étant un script, écrit dans un langage proche du C++ le HLSL, qui permet d’effectuer des calculs, des transformations ou autres effets. Mais comme la session aura lieu demain, (ou plutôt tout à l’heure) nous y reviendrons dans un prochain billet.

Mais aujourd’hui nous n’avons pas perdu notre temps, car pour notre grand bonheur, nous avons pues interviewer,  Stephen Toub (Program Manager sur TPL), Rick Molloy (Program Manager sur PPL et les agents) et Boris Jabes (Program Manager sur VC++), qui ont tous bien voulue avec gentillesse répondre à nos questions.

Alors restez à l’écoute car nous publierons très prochainement les versions traduites en français des vidéos des ces interviews.

L’équipe DevPara

Posted by ericv | 0 Comments
Filed under:

Construire des applications Modernes avec Visual C++ 2010

Mots clés Technorati :

Après une session plénière réservée à Azure, ou nous avons vue quand même du code C voir C++ mixé avec la directive _asm, déployé et exécuté dans le cloud !!!! , nous sommes séance tenante, allez voir notre ami Boris Jabes (Senior Program Manager Visual Studio) nous parler des nouveautés de Visual C++ 2010. Alors une fois n’est pas coutume, nous dérogerons à la règle, nous ne vous parlerons pas exclusivement dans ce billet, de code parallèle.

Boris est parti d’une application simple MFC qui affiche des images.

Ce n’est pas l’application la plus révolutionnaire du marché, mais l’intention de Boris était de nous montrer les différentes nouveautés, de l’IDE de Visual Studio, du langage C++, de nouvelles APIs de Windows 7, des MFC en codant à la volée toute ou partie des fonctionnalités de l’application.

Tout d’abord l’application est munie de Rubans qui sont construit à l’aide de l’éditeur de ressources, et d’une barre d’outils prévue à cette effet, alors qu’avec Visual Studio 2008 SP1, il faut les coder à la main.

Le rendu des images est effectué à l’aide de l’API Direct2D de Windows 7, avec des effets d’animations qui rajoute du dynamisme à l’application. En un mot lorsqu’on retaille la fenêtre, les images se déplacent et se positionnent dans la fenêtre avec des effets de transitions afin de s’adapter à la nouvelle taille.

Ensuite, il a souhaité étendre son application afin de retrouver des images directement depuis le Web. A partir de Windows 7 il est désormais facile d’intégrer un service Web au sein de son application C++, à l’aide des Windows Web Services API (WWSAPI). Mais une application connecté sur le Web, n’est pas toujours réactive, voir disponible. Il a donc pris le parti d’utiliser les nouvelles librairies de programmation parallèle PPL (que vous avez l’habitude de côtoyer sur ce blog) pour exécuter des opérations asynchrones non bloquante.

Image1

Vous noterez dans cette image, deux notations un peu particulière issue du standard C++0X qu’implémente le compilateur VC ++ 2010.

Le mot clé auto (pas celui d’origine), qui permet de simplifier la syntaxe de déclaration, car le compilateur fera de l’inférence de type. Et la syntaxe [](){} pour exprimer une lambda expression.

Il en a profité pour nous démontrer toutes les nouveautés de l’IDE qui permettent à un développeur C++ d’être encore plus productif.

- Navigate-to, efficace et performant

Image2

- auto complétion sur #include : La capacité à sélectionner le fichier include dans une liste.

Image3

- Le Class Wizard, et l’extensibilité de l’éditeur, nous avons désormais dans Visual Studio 2010, un gestionnaire d’extension, qui permet d’aller chercher sur le Web des addins complémentaires.

Image4

Il nous a démontré tellement de nouveautés dans Visual Studio 2010 pour les développeurs C++ que nous ne couvrons pas ici, que nous pouvons que vous encourager à visionner la Vidéo de cette session dès sa disponibilité que l’équipe DevPara ne manquera pas de relayer.

 

L’équipe DevPara

Posted by ericv | 0 Comments
Filed under: , ,

PDC09: Patterns of Parallel Programming: A Tutorial on Fundamental Patterns and Practices for Parallelism

Comme chaque année, les festivités de la PDC débutent par une journée d'ateliers thématiques marquants l'actualité Microsoft. Avec la prochaine sortie de Visual Studio 2010, Microsoft se dote d'une réponse technique de premier choix pour retrouver le "Free Lunch" (Herb Sutter 2005 "The Free Lunch Is Over"). Alors, lorsque la PDC09 propose un atelier consacré aux fondamentaux des Patterns Parallèles, l'équipe DevPara ne pouvait pas manquer l'évènement, sachant que la journée débutait par une Introduction animée par Monsieur Herb Sutter (Software Architect chez Microsoft). Sans aucune prétention mais avec beaucoup d'élégance Herb, nous a fait quelques confessions comme par exemple : "Nous serions tous restés bien volontiers en mono-cœur, et moi le premier. Mais les modifications matériels (multi-cœurs) imposent au monde logiciel une révolution non voulue mais incontournable". En d'autres termes, la programmation parallèle est inéluctable ! Oui, la programmation est un art difficile, le vocabulaire est confus et pas toujours très explicite, mais rappelez-vous lorsqu'on parlait d'interface graphique en 1970, de développement objet en 1990, ces notions n'étaient pas forcément comprises de tous.

image 

Le passé nous a montré qu'une technologie mettait du temps à s'imposer dans nos esprits comme une évidence. Aujourd'hui le parallélisme est encore peu connu et sa nature complexe le rend difficilement audible auprès des développeurs métiers. Mais à l'instar des Patterns du GOF, les patterns de la programmation parallèles seront demain reconnus et pratiqués par l'essentiel des développeurs métiers.

La transition avec la session suivante nous a semblée évidente: Présentation des Patterns Parallèle animée par Ade Miller, Development Manager chez Microsoft dans la division patterns & practices group (p&p). La session reprenait largement les propos du fameux livre "Patterns For Parallel Programming".

image

L'éssentiel de la démarche de décomposition parallèle citée dans le livre a été présentée avec détails en y apportant quelques aménagements afin de mieux adhérer à l'offre Microsoft.

image

Mais nous aurons l'occasion de revenir sur ces Patterns Parallèles dans le cadre des prochains TechDays 2010.

Une fois les patterns présentés, la session suivante animé par notre ami Stephen Toub nous a permis d'illustrer l'implémentation des ces Patterns Parallèle principalement en .NET, mais en rappelant si besoin leurs équivalents en C++ (Microsoft & Intel) et même en Java 7.

image

Un grand coup de chapeau à Stephen pour la qualité de sa prestation: implémentation "Live" de l'essentiel des APIs TPL tout en expliquant par l'exemple des sujets pointus comme le "False Sharing" et le "Work Stealing". Bref, une session passionnante à regarder sans modération dès la publication du Webcast :-)

C'est avec une session consacrée aux Patterns Parallels dans le monde HPC animé par Richard Ciapala (Software Design Engineer for the HPC Server Runtime team chez Microsoft) que la journée s'est terminée.

image

Dans les faits, l'animateur a passé pas mal de temps à nous présenter la nouvelles version le HPC Server 2008 beta 1, ce qui nous a parfois fait perdre le fil du sujet, mais il faut bien reconnaitre que passer après Stephen Toub ce n'est pas facile :-)

L'équipe DevPara

Exemples complémentaires pour les développeurs C++ parallèles

Les exemples complémentaires de l'offre parallèle C++ pour Visual Studio 2010 Beta 2 sont disponibles. A l'instar de la même initiative dans l'offre .NET, vous trouverez dans ce packages des éléments importants pour vos développements avec les libraires PPL, Agents et Concurrency Runtime. Donc un package à télécharger absolument si travailler avec l’offre parallèle C++.

A bientôt,

Bruno

boucard.bruno@free.fr

Posted by ericv | 0 Comments

PATTERNS OF PARALLEL PROGRAMMING

Stephen Toub, Senior Program Manager dans l'équipe Parallel Computing Platform (PCP), nous propose une première version d’un document détaillé traitant des designs patterns parallèles en C# 4.0.

Les patterns parallèles sont indispensables pour développer des applications parallèles faciles à maintenir.

Si vous ne connaissez pas ces patterns, je vous engage à lire ce document, car aujourd’hui il n’existe pas beaucoup d’ouvrages sur le sujet, et encore moins illustrés avec du C#.

 

Bonne lecture ;-)

 

Bruno

boucard.bruno@free.fr

BockingCollection Demonstration in Producer-Consumer Scenarios

Depuis quelques temps le site Chanel 9 offre des petits Webcasts consacrés à la programmation parallèle.

Le dernier, animé par Josh Phillips et Stephen Toub, nous permet de nous familiariser avec avec une des nombreuses structures de synchronisation de disponible en .NET 4.0: BlockingCollection<T> dans un cadre de producteur / consommateur

A bientôt,

Bruno

boucard.bruno@free.fr

Posted by ericv | 0 Comments
Filed under: , ,

Complément d’information sur l’offre parallèle Visual Studio 2010 Beta 2

Vous trouverez dans ce billet de Rick Molloy un complément d’information sur l’offre parallèle C++ de Visual Studio 2010 Beta 2.

Du côté de l’offre parallèle .NET, ce second billet permet de compléter les nouveautés apportées dans dans Visual Studio 2010 Beta 2.

A Bientôt

Bruno

boucard.bruno@free.fr

Posted by ericv | 0 Comments

MSDN Magazine d’octobre et l’offre parallèle C++

C’est Rick Molloy Program Manager sur l'offre parallèle C++, qui nous propose un article très didactique sur 4 manières d’introduire l’offre parallèle C++ (Parallel Pattern Library, Asynchronous Agents Library) dans nos applications en se basant sur des petits exemples concrets.

A lire attentivement,

A bientôt,

Bruno

bruno.boucard@free.fr

Prochain Webcast “Le développement parallèle” le 8 décembre 2009

Simon Ferquel, MVP “Client Application Development” s’intéresse depuis quelques temps à programmation parallèle :-)

Il animera un Webcast sur le développement parallèle le 8 décembre 2009.

Il est possible de s’inscrire dès maintenant !!!

A bientôt,

Bruno

boucard.bruno@free.fr

Posted by ericv | 0 Comments

“Samples for Parallel Programming with the .NET Framework 4” compatible avec VS2010 beta 2

Depuis la sortie de Visual Studio 2010 beta 2 nous attendions la mise à jour des exemples .NET 4.0 illustrant l'offre parallèle. Personnellement j'aime beaucoup ce package car il contient de nombreuses illustrations d'extensions qui sont souvent très utiles :-)

A bientôt

Bruno

boucard.bruno@free.fr

Posted by ericv | 0 Comments
Filed under: , , ,
More Posts Next page »
 
Page view tracker