以前、手作業によるループの展開はソースコード最適化のための典型的なテクニックでした。しかし、現在はコンパイラがこの再構成を自動的に行います。次にループの例を示します。
DO K = 1, N-5, 6
DO J = 1, N
DO I = 1,N
A(I,J) = A(I,J) + B(I,K ) * C(K ,J)
* + B(I,K+1) * C(K+1,J)
* + B(I,K+2) * C(K+2,J)
* + B(I,K+3) * C(K+3,J)
* + B(I,K+4) * C(K+4,J)
* + B(I,K+5) * C(K+5,J)
END DO
END DO
END DO
DO KK = K,N
DO J =1,N
DO I =1,N
A(I,J) = A(I,J) + B(I,KK) * C(KK,J)
END DO
END DO
END DO
|
前述のループは、本来意図していたとおり、次のように書き換えるべきです。
DO K = 1,N
DO J = 1,N
DO I = 1,N
A(I,J) = A(I,J) + B(I,K) * C(K,J)
END DO
END DO
END DO
|