私は、並行して進めることができる容易に分離可能な部品を備えた科学的アプリケーションに取り組んでいます。したがって、これらの部分をそれぞれの実行に独立したスレッドとして記述しましたが、スレッドに分割する標準的な理由(つまり、終了コマンドなどをブロックしない)ではないようです。
いくつかの質問:
これは実際に標準のマルチコアデスクトップで何かを購入しますか?つまり、現在のJVMがある場合、スレッドは実際には別々のコアで実行されますか、それとも何か他のことをする必要がありますか?
すべてのスレッドによって読み取られる(書き込まれることはありませんが)オブジェクトはほとんどありません。それに関する潜在的な問題?それらの問題の解決策は?
実際のクラスターの場合、スレッドをさまざまなノードに分散するフレームワークを推奨して、自分で管理する必要がないようにすることはできますか(存在する場合)。明確化:これは、スレッドを個々のノードのタスクに自動的に変換するもの、またはクラスター全体を単一のJVMのように見せるもの(つまり、アクセス可能なプロセッサーにスレッドを送信できるもの)などを意味します。基本的に、並列化をアルゴリズムに組み込んだことを考えると、クラスターに便利な方法で並列化を実装します。私の側では最小限の仕事をします。
ボーナス:ほとんどの評価は、関連するセットを取得するためのキーからのマッピングを使用したセット比較(たとえば、和集合、共通部分、含む)で構成されます。私はFORTRAN、C、およびC ++(最初の科学計算の学期、および10年前の他の2つのHS APクラス)の経験が限られています-並列化のどのような速度/容易さの向上は、私がこれらの言語の1つでのJavaフロントエンドからアルゴリズムバックエンドへの変換。これらの言語でこれらの操作を実装することで、私の経験レベルではどのような問題が発生する可能性がありますか?