0

A(1 500 行列) と B(150 000 行列) の 2 つの行列セットがあります。

セット A の行列 a ごとに、B のすべての要素 b を反復処理して、a と b の基準をチェックします (一部の行列 b について true の場合、反復を停止して true を返します。ただし、セット B 全体を反復した後に一致が見つからない場合は、 、その後 false を返します)。

私の質問は、Java を使用してこのプログラムを並列化する方法です。

行列セットが非常に大きいことは理解しています (上に投稿した要素の数は、たとえば、実際の場合はもっと大きくなります)。そのすべての計算を正しく行う方法は? 1 5000 個のスレッドを作成し、そのすべての計算を実行するのは、実際には良い考えではありません。すべての計算作業を必要とするスレッドの最適な量はどれくらいですか?

4

2 に答える 2

1

ForkJoinPoolを探していると思います。

あなたの状況に適した例をまとめてみます。基本的に、プロセスを部分に分割する必要があります。おそらく、それぞれに 1 つの fork を使用し、その fork 内のaすべてbの s を実行します。プールは自動的にプロセッサを最大限に活用します。

ここに非常に簡単な例があります。

于 2013-08-09T20:44:32.407 に答える