Ames Laboratory, Department of Energy, ISU, Ames, Iowa

next up previous
Next: Modeling as a Up: Massively Parallel Searching Previous: Introduction

Problem Specification

The problem can be defined as follows:

Given:

Find: A sequence of (exp1 op exp2) triples where exp1 and exp2 are selected from either the set of variables or previously computed expressions, and op is chosen from the remaining multiplications or additions that compute the goal expressions, and that minimize the total number of operations or the number of operations of a particular type.

We are interested in minimizing the number of operations of a particular type because the relative cost of the operation types is different in general. For example, in Strassen's matrix product algorithm, the variables involved could themselves be matrices, and matrix products are costlier than matrix sums. Any algorithm for finding the product of two k k matrices in M multiplications can be used recursively to find the product of two n n matrices (n k) in O(nlogk M) time [1,20]. For such a problem, we are obviously interested in minimizing the number of multiplications, even at the cost of increasing the total number of addition operations.

For the class of problems addressed in this paper, addition (), subtraction (), and multiplication () operations are sufficient. Addition and multiplication are commutative, while subtraction is not. For the purposes of uniformity, we introduce a notation "reverse subtraction" (), with the associated meaning that exp1 exp2 is the same as exp1 exp2. With this, we can impose an ordering on exp1 and exp2 and explore only cases with exp1 < exp2 without omission. Also, we use the term "add" to denote any of addition/subtraction/reverse subtraction. Throughout the paper, we assume that operation cost is data independent. We also use the term "product" to refer to multiplication of entities like complex numbers and matrices and reserve the term "multiplication" for real numbers.


next up previous
Next: Modeling as a Up: Massively Parallel Searching Previous: Introduction