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