2

Javaメソッドがあるとします(配列の追加など)

public void mymethod() {   
  { 
   //i have some global arrays named a, b & c
  for(int i=0;i<10;i++)
     a[i]=b[i]+c[i];     //no dependency exists
  }   

ここで、このループを 2 つの別々のループに変換し、2 つのスレッドを使用して実行するとします。結果は正確になります。しかし、以下のような場合

public void mymethod() {   
  { 
   //i have some global arrays named a, b
  for(int i=0;i<10;i++)
     a[i]=b[i]+a[i-1];           //a[i] dependent on a[i-1]
  }   

a[i] の次の値は、a[i-1] の前の値に依存します。そのため、ループに依存関係が存在し、ループを 2 つの別々のループに分割するだけでは並列化できません。

私の質問です。

ループでそのようなタイプの依存関係をチェックするためのJAVAクラス/ツール/パッケージなどはありますか?

4

1 に答える 1

0

JDependを見るか、他の Java コード分析ツールを見つけることができます。

于 2013-03-03T10:18:24.403 に答える