Ceci est une question ouverte. Quelles approches devrais-je prendre en compte?Quelles sont les meilleures options actuelles pour la parallélisation d'une application .NET gourmande en ressources CPU?
Répondre
Il existe des extensions parallèles à .NET qui sont actuellement en cours de test et disponibles auprès de Microsoft Parallel Computing Developer Center. 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.
Je pense que nous pourrions également inclure des approches non-.NET spécifiques au traitement parallèle si celles-ci sont parmi les meilleures options à considérer.
@Larsenal
Si vous souhaitez créer une branche en dehors de .NET, il y a eu beaucoup de discussions à propos de Intel Threading Building Blocks qui est une bibliothèque parallèle pour C++.
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 "Concurrence" dans les archives MSDN Magazine (link), en particulier tout ce qui a été é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 de Richter via C# (Amazon) est courte, mais très perspicace - fortement recommandé.)
Il existe de nombreuses options et la meilleure solution dépend de la nature du problème que vous essayez de résoudre. . Si vous essayez de résoudre une dans ce cas, le défi viendra dans la distribution et la gestion des données utilisées
problème embarassingly parallel puis en divisant et paralléliser les tâches triviales Quelques suggestions seraient:.
- ICE Grid qui a des liaisons pour .Net et d'autres langages communs
- Velocity qui est la version de Microsoft d'Oracle (Tangersol) Cohérence
- Le HPC prochaine offre de Microsoft Compute Cluster Server
- Data Synapse Grid Server
Quel est le 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. – mbeckish