プログラムのパフォーマンス解析

3. ループ中に、変数 "%s"に対するデータの依存関係があります。

ループ中の変数が、前回の繰り返しに使用された変数の値による影響を受けます。たとえば、次のとおりです。


do 99 i=1,n
    do 99 j = 1,m
    a[i, j+1] = a[i,j] + a[i,j-1]
99 continue

これは、あくまで説明の便宜上、意図的に考えた例にすぎません。このような単純なループの場合は、単にオプティマイザによって、内側と外側のループを入れ替えて、内側のループを並列化できますが、この例は、「ループ伝播データ依存性」と呼ばれるデータの依存関係の概念をわかりやすく示したものでもあります。

コンパイラは、ループ伝播データ依存性の原因となっている変数の名前を特定できる場合があります。プログラムを変更して、この種の依存関係を取り除く (または最小限に抑える) ことにより、コンパイラはさらに積極的な最適化を実行できるようになります。