2008-08-04 8 views
17

これは自由な質問です。私はどのようなアプローチを検討すべきですか?CPU集約型.NETアプリケーションを並列化するための現在の最適なオプションは何ですか?

+1

から今後のHPC製品ですか? CPU集約型でシングルコアCPUが1つしかない場合は、複数のスレッドがパフォーマンスを低下させます。また、PCのクラスタにパラレル化する必要がある場合、それは1台のPC上の複数のスレッドとは非常に異なる動物です。 – mbeckish

答えて

6

現在、テスト中であり、MicrosoftのParallel Computing Developer Centerで利用可能な、いくつかの.NETの並列拡張があります。 Parallel foreachやPLINQという並列バージョンのLINQのようないくつか興味深い項目があります。拡張機能に関する最善の情報の一部はChannel 9です。

2

考慮すべき最良のオプションの中にある場合は、非.NET固有の並列処理方法も含めることができます。

2

@Larsenal

あなたは.NETの外に分岐したい場合は、IntelのThreading Building Blocks C++のための並列ライブラリである程度多くの議論がありました。

8

まず、問題の並列性を見つけて理解することです。置き換えられるシングルスレッドコードよりも優れたマルチスレッドコードを書くのは本当に簡単です。 「並列プログラミングのパターン」(Amazon)は、主要な概念の素晴らしい紹介です。

実行可能な設計をしたら、MSDN Magazineの(link)アーカイブの「並行性」トピックの記事、特にJeff Richterが書いた記事を読んでください。それらは、Windowsと.NETに特有のスレッド構造にナットとボルトを提供します。 (Richterの "CLR via C#(Amazon)のマルチスレッディングセクションは短いですが、非常に洞察に満ちたものです - 強くお勧めします)

0

解決方法はたくさんありますが、解決すべき問題の性質によって最適な解決方法が決まります。あなたはembarassingly parallel問題を解決しようとしている場合は、タスクを分割し、parallelisingすることは些細なことだろうその場合の課題は、使用するデータを配布および管理に来る

いくつかの提案は次のようになります。。

関連する問題