最新のコンピュータには、ますますコアが増えています。これらのコアを使用するために現在の線形アルゴリズムを変更したいと考えています。Javaでマルチコアのアルゴリズムを実装するにはどうしたらいいですか?
異なるスレッドを使用するアルゴリズムを分割すると、空きプロセッサがある場合のみ意味があります。
空きプロセッサがある場合、いくつかの手順を並列化するのに役立つライブラリがありますか?
いくつかの例を挙げます。
- プロセッサが1つだけの場合は、複数のスレッドを作成する意味がありません。それは速度を低下させるでしょう。
- コアデュオ上で2つのプロセス(サーバー上の要求)が実行されている場合、スレッドを開始することも意味がありません。
- コアデュオに1つのプロセスしかないのであれば意味があります。
抽象アルゴリズムは、4つのステップA、B、CおよびDを有する。ステップA、BおよびCは、並列に実行することができる。ステップDは、A、BおよびCからの結果を必要とする。
編集:Iは数学的アルゴリズムを意味する。 IOなし、イベントなしなど
A、BまたはCの内側に発揮することができる、非常に高レベルの図です。だから私はあなたの例があまり良くないと思っています。 – krosenvold