これは自由回答形式の質問です。どのようなアプローチを検討する必要がありますか?
5 に答える
最初のステップは、問題の並列性を見つけて理解することです。置き換えるシングルスレッド コードよりも優れたパフォーマンスを発揮するマルチスレッド コードを作成するのは非常に簡単です。「Patterns for Parallel Programming」(Amazon)は、重要な概念の優れた入門書です。
実行可能な設計ができたら、MSDN マガジン アーカイブ(リンク)の「同時実行」トピックの記事、特に Jeff Richter によって書かれた記事を読み始めます。これらは、Windows と .NET に固有のスレッド構造に関する基本的な内容を提供します。(Richter の「C# による CLR (Amazon) 」のマルチスレッド セクションは短いですが、非常に洞察力に富んでおり、強くお勧めします。)
現在テスト中であり、Microsoft のParallel Computing Developer Centerで入手できる .NET の並列拡張機能がいくつかあります。それらには、Parallel foreach や PLINQ と呼ばれる LINQ の並列バージョンなど、期待される興味深い項目がいくつかあります。拡張機能に関する最良の情報の一部はChannel 9にあります。
.NET 固有ではないアプローチを並列処理に含めることもできると思います。
@ラルセナル
.NET の外に分岐したい場合は、C++ の並列ライブラリであるIntel のThreading Building Blocksについて多くの議論がありました。
多くのオプションがあり、最適なソリューションは、解決しようとしている問題の性質によって異なります。途方もなく並列化された問題を解決しようとしている場合、タスクを分割して並列化することは簡単です。その場合、使用されるデータの配布と管理が課題になります。
いくつかの提案は次のとおりです。
- .Net およびその他の一般的な言語のバインディングを持つICE Grid
- Oracle (Tangersol) Coherence の Microsoft バージョンであるVelocity
- Microsoft Compute Cluster Serverの今後の HPC 製品
- データ シナプス グリッド サーバー