Next: Alignment Restrictions Up: Design and Documentation of Previous: LWORK WORK(1)

## Error Handling and the Diagnostic Argument INFO

All driver and computational routines have a diagnostic argument INFO that indicates the success or failure of the computation. It is recommended that the user always check the value of INFO on exit from calling a ScaLAPACK routine. The value of INFO is defined as follows:

- INFO = 0: successful exit
- INFO < 0: illegal value of one or more arguments -- no computation performed
- INFO > 0: failure in the course of computation

The value of (INFO<0) is calculated as follows: if the error is detected in the jth entry of a descriptor array, which is the ith argument in the parameter list, the number passed to the error-handling routine `PXERBLA()` has been arbitrarily chosen to be . This allows the user to distinguish an error on a descriptor entry from an error on a scalar argument.

The standard version of `PXERBLA()` only issues an error message and does not halt execution of the program. The main reason for this behavior is that some ``errors'' are deemed recoverable and we wanted to allow the user the flexibility to continue program execution if certain values were corrected. If user wish to change this behavior and additionally halt execution of the program, they may add a call to `BLACS_ABORT()` to their version of `PXERBLA()`.

If an input error (INFO<0) is detected at a high-level routine (ScaLAPACK driver or computational routine), it is possible for the user to recover from such an error and proceed with the computation. An error message is printed by `PXERBLA()`, a RETURN is issued, and the program execution continues. However, if an error is detected in a low-level ScaLAPACK routine, this error is considered unrecoverable, a message is printed by `PXERBLA()`, and program execution is terminated by a call to `BLACS_ABORT()` .

Likewise, if an error is detected at a low-level routine, such as a PBLAS or BLACS routine, this error is deemed fatal. An error message is printed, and the program execution is terminated by the specific error-handling routine.

All ScaLAPACK driver and computational routines perform global and local input error-checking. In general, no input error-checking is performed on the auxiliary routines. The exception to this rule is for the auxiliary routines which are Level 2 versions of computational routines (e.g., PxGETF2, PxGEQR2, PxORMR2, PxORM2R, etc.). For efficiency purposes, these specialized low-level routines perform only a local validity check of their argument list. If an error is detected in at least one process of the current context, the program execution is stopped.

Next: Alignment Restrictions Up: Design and Documentation of Previous: LWORK WORK(1)