1

プログラムにクアッドコア プロセッサを搭載した Java スレッド プールを使用するか、Aparapi GPU フレームワークを使用するかを検討しています。

GPU でのゲインは優れていますが、クアッドコア プロセッサと GPU の速度の違いは、アルゴリズムのノックアウト基準ではありません。一方、私のプログラムは多くの複雑なオブジェクトで非常によく構造化されており、正しく理解している場合、Aparapi はプリミティブ データ型を超える並列化をサポートしていません。

複雑なオブジェクトに対して両方の方法を使用した経験がある場合、オブジェクトを Aparapi のプリミティブ データ型にリファクタリングするか、Java スレッド プールを使用することをお勧めしますか? Java スレッド プールの場合、処理できるオブジェクトの種類に制限がないことを正しく理解していますか?

4

1 に答える 1

1

ExecutorServicelikeは、キューからプルされたジョブ ( ) を実行するワーカー スレッドのThreadPoolExecutor単なるプールであるRunnablesため、データ競合やデッド ロックなどの通常の同時実行性の問題を除いて、オブジェクトに制限はありません。

速度が非常に重要な場合は、オブジェクトをプリミティブ データ型の配列に変換し、それらの配列で作業することが、同時実行を導入した後の最初の最適化になるはずです。その後 GPU に移行したい場合は、既にプリミティブ データ構造のレベルにいます。

于 2014-12-12T13:00:30.267 に答える