Go to the previous, next section.

SUIF Features

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 previous, next section.