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クラス/ツール/パッケージなどはありますか?