If a loop has been optimized by KAP and you note that KAP was
cautious and added unnecessary synchronization code, as shown in the
following example, the C*$* assert no sync
assertion
may improve run-time speedup.
DO 20 I = 1,N A (100 + I) = I C (100 + I) = A (I) D (100 + I) = C (I) 20 CONTINUE
KAP standard optimization synchronizes the loop by breaking it up in order to ensure the assignments occur in a valid order. However, this maximizes DO loop overhead as follows:
DO 2 I=1,N A(I+100) = I 2 CONTINUE DO 3 I=1,N C(I+100) = A(I) 3 CONTINUE DO 4 I=1,N D(I+100) = C(I) 4 CONTINUE
If the value of N
will always be less than or equal
to 100, you can eliminate the synchronization overhead by adding
C*$* assert no sync
as follows:
C*$* ASSERT NO SYNC DO 20 I=1,N A(I+100) = I C(I+100) = A(I) D(I+100) = C(I) 20 CONTINUE