Dies ist eine offene Frage. Welche Ansätze sollte ich berücksichtigen?Was sind die derzeit besten Optionen zum Parallelisieren einer CPU-intensiven .NET-App?
Antwort
Es gibt einige parallele Erweiterungen zu .NET, die derzeit getestet werden und bei Microsofts Parallel Computing Developer Center verfügbar sind. Sie haben ein paar interessante Elemente, die Sie erwarten würden, wie Parallel foreach und eine parallele Version von LINQ namens PLINQ. Einige der besten Informationen zu den Erweiterungen finden Sie unter Channel 9.
Ich denke, wir könnten auch nicht-.NET-spezifische Ansätze für die parallele Verarbeitung einschließen, wenn diese zu den besten Optionen gehören, die berücksichtigt werden müssen.
@Larsenal
Wenn Sie außerhalb von .NET verzweigen wollen es viel Diskussion über Intel war Threading Building Blocks, die eine parallele Bibliothek für C++.
Ihr erster Schritt ist es, die Parallelität in Ihrem Problem zu finden und zu verstehen. Es ist wirklich einfach, Multithread-Code zu schreiben, der nicht besser als der Singlethread-Code ist, den er ersetzt. "Patterns for Parallel Programming" (Amazon) ist eine gute Einführung in die Schlüsselkonzepte.
Sobald Sie ein funktionsfähiges Design haben, lesen Sie die Artikel im Thema "Concurrency" in den MSDN Magazin-Archiven (link), insbesondere alles von Jeff Richter geschrieben. Diese werden Ihnen die Schrauben und Muttern in den Threading-Konstrukten für Windows und .NET geben. (Der Multi-Threading-Abschnitt in Richters "CLR über C# (Amazon) ist kurz, aber sehr aufschlussreich - sehr empfehlenswert.)
Es gibt viele Optionen und die beste Lösung hängt von der Art des Problems ab, das Sie versuchen zu lösen. wenn Sie versuchen, ein embarassingly parallel Problem dann lösen zu teilen und die Aufgaben Parallelisierung trivial sein wird in diesem Fall kommt die Herausforderung bei der Verteilung und Verwaltung der verwendeten Daten
Einige Vorschläge wären:..
- ICE Grid welche Bindungen für .Net und andere gebräuchliche Sprachen hat
- Velocity die Microsoft-Version von Oracle (Tangersol) Coherence
- Die bevorstehende HPC-Angebot von Microsoft Compute Cluster Server
- Data Synapse Grid Server
Welche Hardware? Wenn es CPU-intensiv ist und Sie nur über eine Single-Core-CPU verfügen, verringern mehrere Threads die Leistung. Wenn Sie mit einem Cluster von PCs parallelisieren müssen, ist das ein anderes Tier als mehrere Threads auf einem PC. – mbeckish