PDC 08 - Parallel Programming for Managed Developers with Visual Studio 2010

J'ai finalement opté pour cette session sur le développement parallèle avec Visual Studio 2010, donnée par Daniel Moth travaillant que la plateforme « Parallel Computing » chez Microsoft.

N'importe quelle application qui n'a pas été pensée pour ça pourra être mise sur une machine possédant autant de cœurs qu'on voudra, elle ne sera pas plus performante. Le besoin de paralléliser n'est plus un luxe, cela devient une obligation avec les machines possédant de plus en plus de processeurs.

Tout ce qui a été fait au niveau de la concurrence est au niveau des librairies, rien n'a été changé au niveau du langage.

Pour optimiser on pense toujours au parallelisme, mais une petite démonstration nous montre que le partitionnement d'un calcul doit être correctement géré. Trop de threads peuvent arriver à des comportements non voulus (OutOfMemory). L'idée dans un premier temps, est déjà de ne pas utiliser plus de threads que de processeurs.

Les nouveautés en termes de performances dans le Thread Pool :

  • Les tâches créées par une tâche dans un worker thread sont maintenant empilée dans une queue locale (méthode ContinueWith, à laquelle on peut préciser la condition suivant laquelle on veut que la tâche soit exécutée après la première, par exemple uniquement lors d'un succès)
  • Si un worker process n'a pas de tâches à exécuter, il ira voir dans la queue principale, et sinon, ira « voler » des tâches sur la queue locale d'une autre worker thread.

On évite ainsi de la contention et on améliore l'utilisation des worker threads.

Nous avons également beaucoup de contrôle sur l'arrêt d'une tâche (on peut savoir pour quelle raison elle à été annulée).

Une tâche générique apparaît : Future<T> qui permet de stocker une valeur retour de la méthode exécutée par la tâche. Le type de retour est bien entendu celui qu'on précise en tant que « T ».

Le nouveau debugger contient une fenêtre « Parallel Tasks qui permet de connaître la liste des tâches. Il contient également une fenêtre Parallel Stacks qui permet d'avoir une vision graphique des « chemins » dans le code pris par les différentes tâches. On pourra par exemple voir que sur 4 threads, 1 est passé par la méthode « A » et 3 autres sont passés par la méthode « B ». Je trouve ça ENORME.

Daniel enchaîne avec le parallélisme structuré. L'idée est de dire que vous avez un bloc de code que vous voulez paralléliser, mais vous ne voulez pas repenser ce code. C'est là qu'entre en jeu Parallel.Foreach, qui permet de demander l'exécution d'une boucle foreach en parallèle sans avoir à vous préoccuper de la gestion de threads et des tâches.

La session se termine :

… sur le Parallélisme de données déclaratif : PLINQ (Parallel LINQ-to-Objects). Comment rendre une requête parallèle ? En ajoutant .AsParallel() dans la close « in » de la requête. Comment ca marche ? Il s'agit en fait d'une conversion vers l'objet ParallelEnumerable qui exécute la requête sous forme de tâches parallèles.

… et sur une annonce de la transformation vers « public » des structures de synchronisation du framework, on pourra enfin les personnaliser selon nos besoins ! 

Au final, cette session est la meilleure que j'ai vue à la PDC, surtout en termes de qualité speaker. Humour, code et nouveautés étaient au rendez-vous. J

.Dispose();

Publié mercredi 29 octobre 2008 19:27 par Etienne Margraff
Classé sous
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires


Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01