Paré pour la programmation Parallèle ? Démarrez avec Parallel FX !
Par Stève SFARTZ le mercredi 5 décembre 2007, 09:01 - Architecture - Lien permanent
La loi de Moore s'est historiquement matérialisée par l'escalade des niveaux
de fréquence processeur et à la miniaturisation conjointe des composants. En
s'approchant deslimites du rapport fréquence - taille - émission de chaleur,
les constructeurs de puce se sont progressivement tournés vers la
démultiplication des cœurs au sein des processeurs.
Tel que décrit dans "The Many Core Shift", toute l'industrie informatique est
concernée par cette évolution, que la cible soit le particulier (Mobilité, 3D)
ou l'entreprise (algorithmique, modélisation, simulation).
L'initiative "Parallel Computing" de Microsoft a pour objectif de tirer parti
de cette nouvelle forme de scalabilité, horizontale (nombre) plutôt que
verticale (puissance) , en proposant une gamme d'outils et de technologies
intégrant la capacité à exécuter du code sur des architectures parallèles, que
ce soit au niveau local (le processeur) ou entreprise (cluster) :
multi-cœurs, multi-processeurs, multi-nœuds.
La Technology Preview de Parallel FX (Microsoft Parallel Extensions for .Net 3.5 December 2007 CTP)
propose d'étendre le framework .Net par un jeu d'instruction ainsi qu'un
runtime, permettant de gérer l'accès concurrent aux données, l'exécution de
tâches et la coordination nécessaire au niveau hardware. Ainsi, les
développeurs peuvent écrire des programmes plus performants puisqu'ils
s'adaptent au nombre de processeurs disponibles à l'exécution.
Le framework Parallel FX est disponible pour .Net 3.5 et Visual Studio 2008.
Dans la documentation associée au framework, vous trouverez l'explication sur
les trois façons pour paralléliser vos traitements proposées par PFX :
- Declarative data parallelism - Parallel Language Integrated Query (or Parallel LINQ) is an implementation of LINQ-to-Objects that executes queries in parallel, scaling to utilize the available cores and processors of the machine. Because queries are declarative, you are able to express what you want to accomplish, rather than how you want to accomplish it.
- Imperative data parallelism - Parallel Extensions also contains mechanisms to express common imperative data-oriented operations such as for and foreach loops, automatically dividing the work in the loop to run on parallel hardware.
- Imperative task parallelism - Rather than using data to drive parallelism, Parallel Extensions enables you to express potential parallelism via expressions and statements that take the form of lightweight tasks. Parallel Extensions schedules these tasks to run on parallel hardware and provides capabilities to cancel and wait on tasks.
Au niveau implémentation, la stratégie sera donc de procéder en mode
déclaratif ou impératif, et au niveau données ou bien au niveau
traitemens.
Ces extensions se traduisent notamment par l'introduction des namespaces
System.Linq.Parallel et l'extension de la gestion de Thread avec
System.Threading.Tasks.
Pour vous accompagner dans vos investiguations en programmation parallèle, MSDN
ouvre un portail Concurrency. Et si vous recherchez encore plus
d'informations techniques, pointer directement sur le blog de l'équipe de
développement PFXTeam, ainsi que le blog de Joe Duffy.