The routine PARALLEL_NONNEGATIVE_LSQ is used to solve dense least-squares systems. These are represented by where A is an m×n coefficient data matrix, b is a given right-hand side m-vector, and x is the solution n-vector being computed. Further, there is a constraint requirement, . The routine PARALLEL_BOUNDED_LSQ is used when the problem has lower and upper bounds for the solution, . By making the bounds large, individual constraints can be eliminated. There are no restrictions on the relative sizes of m and n. When n is large, these codes can substantially reduce computer time and storage requirements, compared with using a routine for solving a constrained system and a single processor.
The user provides the matrix partitioned by blocks of columns:
An individual block of the partitioned matrix, say Ap, is located entirely on the processor with rank , where MP_RANK is packaged in the module MPI_SETUP_INT. This module, and the function MP_SETUP(),define the Fortran Library MPI communicator, MP_LIBRARY_WORLD. See Chapter 10, section Dense Matrix Parallelism Using MPI.