next up previous contents
Next: Communication and ``tasks'' Up: Parallelization Previous: Parallelization   Contents

Properties of parallelization

This system is meant to be a tool for numerical computations. One of the most important properties in such a system is, in my humble opinion, that the system maintains the numerical properties of a problem.

Most algorithms in scientific computing rely on numerical properties. They are aware of the finite precision of computers, and they do what they can to minimize the noise introduced by the finite precision.

If a computing system executed code in a way that altered the ordering of the computations, or otherwise altered the way computations where done, the errors (that are always present, and which the users know about and takes into account in the numerical methods they use) would become unpredictable. If the parallelizer change a method, that method may no longer work as expected.

Therefore I define one key property the parallelizers must obey: The method must not change. That is, we will not allow any re-ordering of instructions, and we will not change the instructions.

If the user wrote $a = (b+\sqrt{b^2})-2b$, we will calculate $(b+\sqrt{b^2})-2b$, not $b+(\sqrt{b^2}-2b)$ or anything else. The user's aren't stupid. If they want to test numerical inaccuracies of $(b+\sqrt{b^2})-2b$, then they know better than any parallelizer does.

This is also discussed in Section 2.3.2.


next up previous contents
Next: Communication and ``tasks'' Up: Parallelization Previous: Parallelization   Contents

1999-08-09