Download sample paper
Transcript
12 • J. A. Scott and A. Hu solve) with one call. PARDISO and WSMP also have a single callable routine. Some users find this is simpler to use than calling different subroutines with different arguments for the various solver phases but, provided the number of callable subroutines is modest, choosing which approach is best is largely a matter of personal preference. The HSL routines, in general, have four main user-callable subroutines: an initialization routine that set defaults for the control parameters (see Section 5.5), one for the analyze phase (incorporating the ordering), and one each for the factorization and solve phases. MA57 offers additional routines, for example, for performing iterative refinement, while MA62 has a routine the user must call before the factorization to set up the direct access files if the user wishes to hold the matrix factor out of core. BCSLIB-EXT has many subroutines the user can call (including initialization routines, a number of routines for entering the matrix sparsity pattern and numerical entries, reordering, performing the symbolic factorization, the numerical factorization, and the forward and back substitutions). They are all fully documented, but, as already noted, with so many subroutines to understand and to call, our experience was that a lot of effort had to be invested before it was possible to start using the package. The TAUCS package also contains a large number of routines because the package has been designed so that the user must call different routines if, for example, the out-of-core version is required. While having separate routines may simplify development and testing for the developer, it can make the user’s job more complicated if experiments with both out-of-core and in-core codes are required. UMFPACK is another example of a package with many routines; it has 32 usercallable routines. Of these, five are so-called primary routines, which are documented in the quick start user guide and are all a beginner needs to get going with the package. The other 27 routines are available to provide additional facilities for more experienced users. They include matrix manipulation routines, printing routines and routines for obtaining the contents of arrays not otherwise available to the user. The simplest interface of all and an example of a single call routine is the MATLAB interface to UMFPACK (Version 4.3 is a builtin routine for lu, backslash, and forward slash in MATLAB 7.1, and CHOLMOD is built into MATLAB 7.2 for symmetric positive definite and Hermitian systems). 4.3 Information Returned to the User A well designed solver will provide the user with information, both on successful completion and in the event of an error (see Section 6). After the symbolic factorization, information should be returned to the user on the estimated number of entries in the factor, the estimated flop count, and the estimated integer and real memory that will be required for the factorization. These estimates should help the user to decide whether to try proceed with the factorization and, for solvers in Fortran 77, give the user an idea of how to appropriately allocate workarrays and arrays for holding the factors. Once the factorization is complete, the user should have details of the number of entries in the factors, the flop count, and the amount of real and integer ACM Transactions on Mathematical Software, Vol. 33, No. 3, Article 18, Publication date: August 2007.