6 research outputs found
Integer Division by Constants: Optimal Bounds
The integer division of a numerator n by a divisor d gives a quotient q and a
remainder r. Optimizing compilers accelerate software by replacing the division
of n by d with the division of c * n (or c * n + c) by m for convenient
integers c and m chosen so that they approximate the reciprocal: c/m ~= 1/d.
Such techniques are especially advantageous when m is chosen to be a power of
two and when d is a constant so that c and m can be precomputed. The literature
contains many bounds on the distance between c/m and the divisor d. Some of
these bounds are optimally tight, while others are not. We present optimally
tight bounds for quotient and remainder computations
Loop Coalescing and Scheduling for Barrier MIMD Architectures
Barrier MIMDs are asynchronous Multiple Instruction stream Multiple Data stream architectures capable of parallel execution of variable execution time instructions and arbitrary control flow (e.g., while loops and calls); however, they differ from conventional MlMDs in that the need for run-time synchronization is significantly reduced. This work considers the problem of scheduling nested loop structures on a barrier MIMD. The basic approach employs loop coalescing, a technique for transforming a multiply-nested loop into a single loop. Loop coalescing is extended to nested triangular loops, in which inner loop bounds are functions of outer loop indices. Also, a more efficient scheme to generate the original loop indices from the coalesced index is proposed for the case of constant loop bounds. These results are general, and can be applied to extend previous work using loop coalescing techniques. We concentrate on using loop coalescing for scheduling barrier MIMDs, and show how previous work in loop transformations [Wol89], [Pol88] and linear scheduling theory [ShF88], rShO901 cart be applied to this problem