A Parallel Algorithm for the Efficient Solution of a General Class of Recurrence Equations

An mth-order recurrence problem is defined as the computation of the series x<inf>1</inf>, x<inf>2</inf>, ..., X<inf>N</inf>, where x<inf>i</inf> = f<inf>i</inf>(x<inf>i-1</inf>, ..., x<inf>i-m</inf>) for some function f<inf>i</inf>. This paper uses a technique called recursive doubling in an algorithm for solving a large class of recurrence problems on parallel computers such as the Iliac IV. Recursive doubling involves the splitting of the computation of a function into two equally complex subfunctions whose evaluation can be performed simultaneously in two separate processors. Successive splitting of each of these subfunctions spreads the computation over more processors. This algorithm can be applied to any recurrence equation of the form x<inf>i</inf> = f(b<inf>i</inf>, g(a<inf>i</inf>, x<inf>i-1</inf>)) where f and g are functions that satisfy certain distributive and associative-like properties. Although this recurrence is first order, all linear mth-order recurrence equations can be cast into this form. Suitable applications include linear recurrence equations, polynomial evaluation, several nonlinear problems, the determination of the maximum or minimum of N numbers, and the solution of tridiagonal linear equations. The resulting algorithm computes the entire series x<inf>1</inf>, ..., x<inf>N</inf> in time proportional to [log<inf>2</inf> N] on a computer with N-fold parallelism. On a serial computer, computation time is proportional to N.