Go to the first, previous, next, last section, table of contents.
In the SUIF vs. KAP tables (see section Performance Results), many of the SUIF only loops are due to KAP parallelizing an outer loop while SUIF is parallelizing an inner loop. However, in some cases SUIF can parallelize loops that KAP cannot parallelize. One reason for this is that SUIF has stronger dependence analysis. For example, consider the following loop from the Perfect Club benchmark SDS.f:
DO 200 J = 1, NM1 JP1 = J + 1 DO 100 I = JP1, N TEMP = A(I,J) A(I,J) = A(J,I) A(J,I) = TEMP 100 CONTINUE 200 CONTINUE
The SUIF dependence analyzer realizes that since the loop bounds are
triangular, the accesses to A(I,J)
and A(J,I)
are independent.
We are then able to parallelize the outer DO 200 J
loop.
KAP reports a data dependence, and will only parallelize the
inner DO 100 I
loop.
Another reason that SUIF manages to parallelize loops that KAP misses is due to reductions. SUIF's reduction analysis pass will find reductions over arrays, whereas KAP will only perform reductions over single locations. For example, consider the following loop (also from SDS.f):
DO 20 J = 1, NNPED SUMNN = 0. DO 10 IQ = 1, NQD SUMNN = SUMNN + WTDET(IQ) * N(IQ,I) * N(IQ,J) 10 CONTINUE DO 15 K = 1, 3 PU(K) = PU(K) + P(K,J) * SUMNN 15 CONTINUE 20 CONTINUE
SUIF parallelizes the outer DO 20 J
by performing a reduction
over the PU
array. KAP is only able to parallelize the inner
DO 15 K
and DO 10 IQ
loops.
Go to the first, previous, next, last section, table of contents.