home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / intro_solvers.z / intro_solvers
Encoding:
Text File  |  2002-10-03  |  12.2 KB  |  199 lines

  1.  
  2.  
  3.  
  4. IIIINNNNTTTTRRRROOOO____SSSSOOOOLLLLVVVVEEEERRRRSSSS((((3333SSSS))))                                            IIIINNNNTTTTRRRROOOO____SSSSOOOOLLLLVVVVEEEERRRRSSSS((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      IIIINNNNTTTTRRRROOOO____SSSSOOOOLLLLVVVVEEEERRRRSSSS - Introduction to SGI-developed linear equation solvers
  10.  
  11. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  12.      See individual man pages for implementation information
  13.  
  14. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  15.      SCSL provides two direct solvers, PPPPSSSSLLLLDDDDLLLLTTTT and PPPPSSSSLLLLDDDDUUUU, and one iterative
  16.      solver, DDDDIIIItttteeeerrrraaaattttiiiivvvveeee, for sparse linear systems of equations.  These
  17.      solvers are optimized and parallelized for the SGI platforms.  For direct
  18.      solvers for dense linear systems of equations, see the IIIINNNNTTTTRRRROOOO____LLLLAAAAPPPPAAAACCCCKKKK(3S)
  19.      man page.
  20.  
  21.      The following data types are used in these routines:
  22.  
  23.      *   Double precision: Fortran "double precision" data type, C/C++
  24.          "double" data type, 64-bit floating point; these routine names begin
  25.          with DDDD.
  26.  
  27.      *   Double precision complex: Fortran "double complex" data type, C/C++
  28.          "scsl_zomplex" data type (defined in <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee....hhhh>>>>), C++ STL
  29.          "complex<double>" data type (defined in <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>), two 64-bit
  30.          floating point doubles; these routine names begin with ZZZZ.
  31.  
  32.      By default, the integer arguments are 4 bytes (32 bits) in size; this is
  33.      the size obtained when one links to the SCSL library with ----llllssssccccssss or
  34.      ----llllssssccccssss____mmmmpppp. Another version of SCSL is available, however, in which
  35.      integers are 8 bytes (64 bits).  This version allows the user access to
  36.      larger memory sizes and helps when porting legacy Cray codes.  It can be
  37.      loaded by using either the ----llllssssccccssss____iiii8888 or ----llllssssccccssss____iiii8888____mmmmpppp link option.  Note
  38.      that any program may use only one of the two versions; 4-byte integer and
  39.      8-byte integer library calls cannot be mixed.
  40.  
  41.      C/C++ function prototypes for sparse solver routines are provided in
  42.      <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee....hhhh>>>>, when using the default 4-byte integers, and
  43.      <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee____iiii8888....hhhh>>>>, when using 8-byte integers. These header files define
  44.      the complex types ssssccccssssllll____ccccoooommmmpppplllleeeexxxx and ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx, which are used in the
  45.      prototypes. Alternatively, C++ programs may declare arguments using the
  46.      types ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> and ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> from the standard template
  47.      library. But if these types are used, <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>> must be included before
  48.      <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee....hhhh>>>> (or <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee____iiii8888....hhhh>>>>). Note, though, that both complex
  49.      types are equivalent: they simply represent (real, imaginary) pairs of
  50.      floating point numbers stored contiguously in memory. With the proper
  51.      casts, you can simply pass arrays of floating point data to the routines
  52.      where complex arguments are expected.
  53.  
  54.      Casts, however, can be avoided. The header files <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee....hhhh>>>> and
  55.      <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee____iiii8888....hhhh>>>> directly support the use of user-defined complex types
  56.      or disabling prototype checking for complex arguments completely.  By
  57.      defining the symbol SSSSCCCCSSSSLLLL____VVVVOOOOIIIIDDDD____AAAARRRRGGGGSSSS before including <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee....hhhh>>>> or
  58.      <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee____iiii8888....hhhh>>>> all complex arguments will be prototyped as vvvvooooiiiidddd ****.
  59.      To define the symbol SSSSCCCCSSSSLLLL____VVVVOOOOIIIIDDDD____AAAARRRRGGGGSSSS at compile time use the ----DDDD compiler
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. IIIINNNNTTTTRRRROOOO____SSSSOOOOLLLLVVVVEEEERRRRSSSS((((3333SSSS))))                                            IIIINNNNTTTTRRRROOOO____SSSSOOOOLLLLVVVVEEEERRRRSSSS((((3333SSSS))))
  71.  
  72.  
  73.  
  74.      option (i.e., ----DDDDSSSSCCCCSSSSLLLL____VVVVOOOOIIIIDDDD____AAAARRRRGGGGSSSS) or use an explicit ####ddddeeeeffffiiiinnnneeee SSSSCCCCSSSSLLLL____VVVVOOOOIIIIDDDD____AAAARRRRGGGGSSSS
  75.      in the source code.  This allows the use of any complex data structure
  76.      without warnings from the compiler, provided the structure is as
  77.      described above; that is:
  78.  
  79.      1.   The real and imaginary components must be contiguous in memory.
  80.  
  81.      2.   Sequential array elements must also be contiguous in memory.
  82.  
  83.      While this allows the use of non-standard complex types without
  84.      generating compiler warnings, it has the disadvantage that the compiler
  85.      will not catch type mismatches.
  86.  
  87.      Strong type checking can be enabled employing user-defined complex types
  88.      instead of SCSL's standard complex types. To do this, define
  89.      SSSSCCCCSSSSLLLL____UUUUSSSSEEEERRRR____CCCCOOOOMMMMPPPPLLLLEEEEXXXX____TTTT====_m_y__c_o_m_p_l_e_x and SSSSCCCCSSSSLLLL____UUUUSSSSEEEERRRR____ZZZZOOOOMMMMPPPPLLLLEEEEXXXX____TTTT====_m_y__z_o_m_p_l_e_x, where
  90.      _m_y__c_o_m_p_l_e_x and _m_y__z_o_m_p_l_e_x are the names of user-defined complex types.
  91.      These complex types must be defined before including the <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee....hhhh>>>>
  92.      (or <<<<ssssccccssssllll____ssssppppaaaarrrrsssseeee____iiii8888....hhhh>>>>) header file.
  93.  
  94.      Fortran 90 users on IRIX systems can perform compile-time checking of
  95.      SCSL sparse solver subroutine and function calls by adding UUUUSSSSEEEE
  96.      SSSSCCCCSSSSLLLL____SSSSPPPPAAAARRRRSSSSEEEE (for 4-byte integer arguments) or UUUUSSSSEEEE SSSSCCCCSSSSLLLL____SSSSPPPPAAAARRRRSSSSEEEE____IIII8888 (for 8-
  97.      byte integer arguments) to the source code from which the sparse solver
  98.      calls are made.  Alternatively, the compile-time checking can be invoked
  99.      without any source code modifications by using the ----aaaauuuuttttoooo____uuuusssseeee compiler
  100.      option, e.g.,
  101.  
  102.           f90 -auto_use SCSL_SPARSE test.f -lscs
  103.           f90 -auto_use SCSL_SPARSE_I8 -i8 test.f -lscs_i8
  104.  
  105.  
  106. DDDDiiiirrrreeeecccctttt ssssoooollllvvvveeeerrrr rrrroooouuuuttttiiiinnnneeeessss
  107.      DDDDPPPPSSSSLLLLDDDDLLLLTTTT and ZZZZPPPPSSSSLLLLDDDDLLLLTTTT solve sparse symmetric linear systems of the form _A_x
  108.      = _b where _A is an _n-by-_n symmetric input matrix, _b is an input vector of
  109.      length _n, and _x is a vector of unknowns of length _n.
  110.  
  111.      The symmetric solver uses a direct method. _A is factored into the
  112.      following form:
  113.  
  114.           _A = _L _D _L_T
  115.  
  116.      where _L is a lower triangular matrix with unit diagonal and _D is a
  117.      diagonal matrix.
  118.  
  119.      The symmetric solver supports both real and complex double precision data
  120.      types and is available in the multi-processing versions of SCSL.  See the
  121.      DDDDPPPPSSSSLLLLDDDDLLLLTTTT(3S) and ZZZZPPPPSSSSLLLLDDDDLLLLTTTT(3S) man pages for details.
  122.  
  123.      DDDDPPPPSSSSLLLLDDDDUUUU and ZZZZPPPPSSSSLLLLDDDDUUUU solve sparse unsymmetric linear systems of the form _A_x
  124.      = _b where _A is an _n-by-_n input matrix with symmetric non-zero pattern but
  125.      unsymmetric non-zero values, _b is an input vector of length _n, and _x is a
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. IIIINNNNTTTTRRRROOOO____SSSSOOOOLLLLVVVVEEEERRRRSSSS((((3333SSSS))))                                            IIIINNNNTTTTRRRROOOO____SSSSOOOOLLLLVVVVEEEERRRRSSSS((((3333SSSS))))
  137.  
  138.  
  139.  
  140.      vector of unknowns of length _n.
  141.  
  142.      The unsymmetric solver uses a direct method. _A is factored into the
  143.      following form:
  144.  
  145.           _A = _L _D _U
  146.  
  147.      where _L is a lower triangular matrix with unit diagonal, _D is a diagonal
  148.      matrix, and _U is an upper triangular matrix with unit diagonal.
  149.  
  150.      The unsymmetric solver supports both real and complex double precision
  151.      data types and is available in the multi-processing versions of SCSL. See
  152.      the DDDDPPPPSSSSLLLLDDDDUUUU(3S) and ZZZZPPPPSSSSLLLLDDDDUUUU(3S) man pages for details.
  153.  
  154. IIIItttteeeerrrraaaattttiiiivvvveeee ssssoooollllvvvveeeerrrr rrrroooouuuuttttiiiinnnneeeessss
  155.      DDDDIIIItttteeeerrrraaaattttiiiivvvveeee solves sparse linear systems of the form _A_x = _b where _A is a
  156.      _n-by-_n sparse input matrix in Compressed Sparse Column (CSC) or
  157.      Compressed Sparse Row (CSR) format, _b is an input vector of length _n, and
  158.      _x is a vector of unknowns of length _n.
  159.  
  160.      The iterative solver uses on of four preconditioned iterative methods:
  161.      conjugate gradient (CG) and conjugate residual (CR) for symmetric
  162.      systems, and conjugate gradient squared (CGS) and BiCGSTAB, a variant of
  163.      of CGS with smoother convergence properties,  for unsymmetric systems.
  164.      Four different types of preconditioners are available: Jacobi, symmetric
  165.      successive over-relaxation (SSOR), ILDLT (incomplete LDLT) by pattern,
  166.      and ILDLT by value. The ILDLT preconditioners are only available for
  167.      symmetric matrices, and ILDLT by value is currently not parallel.
  168.  
  169.      The iterative solver supports only real double precision data.  See the
  170.      IIIITTTTEEEERRRRAAAATTTTIIIIVVVVEEEE(3S) man page for details.
  171.  
  172. NNNNOOOOTTTTEEEESSSS
  173.      No pivoting is done in the direct sparse solver routines.
  174.  
  175.      SCSL does not currently support reshaped arrays.
  176.  
  177. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  178.      IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____LLLLAAAAPPPPAAAACCCCKKKK(3S)
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.                                                                         PPPPaaaaggggeeee 3333
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.