We are still left with major concerns for problems associated with varying floating point representations and arithmetic operations between different processors, different compilers and different compiler options. The scaling is done to equilibrate or balance a matrix in order to improve its condition, or to avoid harmful underflow, or overflow, or even to improve accuracy by scaling away from subnormal numbers. When scaling occurs we naturally have to ensure that all processes containing elements of the vector or matrix to be scaled, take part in the scaling. If this situation occurred the computation would now proceed with the meaningless vector One way to ensure correct computation is to put one process in control of whether or not scaling should take place, and for that process to communicate the decision to the other processes. Having a controlling process is a common way to solve such problems on heterogeneous networks.
H is represented in the form where is a scalar and v is an n element vector.
From the previous discussion we can see that we clearly need to take care here, or else, in close cases, some processors may attempt to recompute , while others do not, leading to completely erroneous results, or even deadlock. A such that We took , which is on an IEEE machine. As expected, the execution of the factorization hung. In this algorithm, the real axis is broken into disjoint intervals to be searched by different processes for the eigenvalues contained in each interval. Disjoint intervals are searched in parallel.