このJavaプロジェクトのアイデアは実用的ですか? (スレッドスケジューラと粒子群最適化)

StackOverflow https://stackoverflow.com/questions/3421415

質問

は、マルチコア・ボックスで、Javaスレッドスケジューラの決定ではなく任意であり、それは等を作成したスレッドからスレッドが作成されたときに基づいて、スレッドの優先順位を割り当てる。

アイデアは適合関数は、プログラムの合計実行時間であるランダムスレッドの優先順位を設定しますPSOを使用して、チューニング・プロセスを実行し、最終的に最適な優先順位に到達するのですか?

の優先順位は、最適な優先機能を見つけるために、走行中にシフトするようにもちろん、より多くのパラメータがあるでしょう。

どのように実用的な、面白いアイデア音していますか?そして任意の提案。 ただ、いくつかの背景、 アイブ様々なプロジェクトでここ数年のJava / C / C ++でプログラミングして、別の代替は、デフォルトのスレッドスケジューラは、OSである場合には、Cでこれに基づいて、スレッドスケジューラを作ることになります。

役に立ちましたか?

解決

を見つけるための最善の方法 - 。オープンソースプロジェクトを開始し、人々の使い方/反応を参照してください。

これは私にとって非常に面白そう - しかし、私の個人的にはのは、それは非常に便利はありません。おそらく、我々は、並行プログラミングはそれができるように簡単流行としてある時点でだけじゃない。

関数型プログラミングの推進では、私は世界を極力スレッドの同期を回避に向けて移動すると思います(したがって、スレッドスケジューリング少なく、全体的なパフォーマンスの影響を作る)

私の個人の主観的な経験から、ソフトウェアの中で最もパフォーマンスの問題は、景気減速の90%を占める1つのボトルネックエリアを改善することによって解決することができます。このオプティマイザは、そのアウトを見つけるのに役立つことがあります。私は、スケジューリング戦略は、全体的なパフォーマンスを向上させる可能性がどのくらいかわからないけれどもます。

かかわらず、落胆しないでください!私はちょうど空中から話しています。それは楽しみに聞こえるので、なぜとにかくそれで遊ぶません:)

他のヒント

説明するように、

あなたのアプローチは、すなわち、静的なアプローチである、あなたのスケジュール情報は、プログラムに同梱され、その後、スケジューリング解決策を考え出すます。

その後、プログラムを複数回実行する必要があります

問題は、ほとんどの非自明なプログラムのために、彼らのパフォーマンスは、部分的に彼らが作業している特定のデータに依存することです。あなたが1つのデータセットのスケジュールスレッドに最適な方法を見つけたとしても、それは別の1の速度を向上させるという保証は全くありません。ほとんどの場合、おそらく大規模な計算の努力のために(ここで、プログラムはおそらく手動でチューニングすることがされており、中に書かれていない場合を除き、彼らは新しいリリースをしたいたびに、開発者のための価値はそれではありません長く、困難な最適化がどうなるか実行していますJavaのいずれにせよ)。

私は、自己学習スレッドスケジューラはいいアイデアだと思いますが、あなたはここで、古典的な最適化問題として扱うことができません。あなたのいずれか必ずごスケジューリングの順序が最適(そう)のままか、実行時に働くの最適化方法を見つけることをする必要があります。そして、ここでの問題は、それはあなたが得る可能性のあるパフォーマンスゲインを破壊するためにあなたのスケジューラのオーバーヘッドのために多くを取らないということかもしれません。

私は、これはやや主観的な質問だと思いませんが、全体的に何も、それがうまくいくとは思わない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top