2012-02-28 12 views
2

これはシステムと実装によって異なりますが、実行に時間がかかりにくい簡単に並列化できるコードがある場所でOpenMPを実行することが可能かどうかはまったく分かりません。たとえば、OpenMPには理想的なループがありますが、1つのスレッドで実行するには数msしかかかりませんが、オーバーヘッドは何の利益もなくしますか?OpenMPが便利な最小のタイムスライス

私の使用方法は、リアルタイムレンダリングで、各フレームを生成するのに20msかかるでしょう。したがって、通常、5-10msを超える単一のコードブロックはありません。このような時間スケールのOpenMPを対象としていますか、いくつかの操作を実行しているのは秒です。を実行しますか?

逸話的な/経験的なデータは、歓迎されているだけでなく、より公式な情報源です。私は主にMSVC++とGCC OpenMPの実装に興味があると思います。 、http://software.intel.com/en-us/blogs/2010/06/02/using-openmp-to-parallelize-a-game/

+0

これは興味深い記事です。 –

答えて

3

答え、データが入手できないすべての経験的な質問に... 42

である。しかし、真剣に、あなた自身を導出する必要があるとしている:

私はこの興味深い記事を見つけましたハードウェア、ソフトウェア、および問題のあなた自身の設定のためにこの質問に答えてください。

おそらく、1997年にOpenMPが最初に公開されたとき、典型的な使用例は比較的重い計算スレッドで、それぞれ秒を要したときでした。それ以来、プロセッサはますます高速化されており、実装も良くなってきています。ベンチマークなしで、あなたの質問にうまく答えることはできません。とにかく、あなたがSOから学んだことがあれば、ベンチマークをしなければならないので、時間を無駄にせずにコーディングすることができます。

OpenMPが役に立たないと説得されるかもしれませんが、あなた自身の要求を満たす答えはあまり信用できません。

OpenMPが有用であると説得されるかもしれませんが、あなた自身の要求を満たす答えはあまり信用できません。

紛らわしい逸話の証拠がたくさんあるかもしれませんが、自分の必要条件を満たしていると答えた人はいないでしょう。

ベンチマークを取得します。そして、私たちがどのように乗っていくのかを教えてください。そうすれば、私は執筆中のごみのような逸話ではあまりにも長く、ハードなデータではあまりにも短いです。

PSベンチマークコードを失うことはありません。経験を発展させ、ハードウェア、システムソフトウェア、およびアプリケーションソフトウェアが変化するにつれて、それらを改訂して再実行します。私がデータなしで確信していることの1つ:あなたの質問への答えは動く標的です。

+0

他の誰かが既にベンチマークを行っているかもしれないと思っていて、結果を共有したり、ベンチマークのコードを分けたりできるので、ホイールを再発明せずにテストすることができます。 –

+0

もちろんOpenMPでコードをベンチマークしましたが、結果はあなたには役に立たないと思います。私のプログラムは何時間も実行されるので、私は本当に興味がなく、OpenMPの最小サイズを計算するための良いベンチマークを持っていません。 –

+0

うまくいけば、他の誰かがOpenMPをゲーム(または同様の)コンテキストで試してみてください。 OpenMPを使った以前の私の仕事は、大きなデータセットを処理していました。スレッドキャッシングのために小さなタスクに拡張できたら、安価な最適化を得るのは本当にクールな方法です。 –

関連する問題