Quelles sont les meilleures options actuelles pour la parallélisation d'une application .NET gourmande en ressources CPU?

Ceci est une question ouverte. Quelles approches devrais-je prendre en compte?

0
Quel matériel? Si le processeur est intensif et que vous ne disposez que d'un seul processeur, alors plusieurs threads diminueront les performances. Aussi, si vous avez besoin de paralléliser à un groupe de PC, c'est un animal très différent de plusieurs threads sur 1 PC.
ajouté l'auteur mbeckish, source

4 Réponses

Il existe des extensions parallèles à .NET qui sont actuellement en cours de test et disponibles sur Microsoft Parallel Computing Centre des développeurs . Ils ont quelques éléments intéressants que vous attendez comme Parallel foreach et une version parallèle de LINQ appelée PLINQ. Certaines des meilleures informations sur les extensions sont sur Channel 9 .

0
ajouté

@Larsenal

Si vous voulez vous lancer en dehors de .NET, il y a eu beaucoup de discussions sur les Blocs de construction Threading d'Intel. une bibliothèque parallèle pour C ++.

0
ajouté

Votre première étape consiste à trouver et à comprendre le parallélisme dans votre problème. Il est vraiment facile d'écrire du code multithread qui ne fonctionne pas mieux que le code monothread qu'il remplace. "Patterns for Parallel Programming" (Amazon) est une excellente introduction aux concepts clés.

Une fois que vous avez une conception fonctionnelle, commencez à lire les articles dans la rubrique "Concurrency" dans les archives de MSDN Magazine (lien) , particulièrement tout écrit par Jeff Richter. Ceux-ci vous donneront les trucs «nuts and bolts» sur les constructions de threading spécifiques à Windows et .NET. (La section multithread dans "CLR via Richter" de Richter (Amazon) est courte, mais très perspicace - fortement recommandé.)

0
ajouté

Il y a beaucoup d'options et la meilleure solution dépendra de la nature du problème que vous essayez de résoudre. Si vous essayez de résoudre un problème embarrassingly parallèle , la division et la parallélisation des tâches seront triviales. Dans ce cas, le défi viendra dans la distribution et la gestion des données utilisées.

Quelques suggestions seraient:

0
ajouté