Click on Compaq Logo for Compaq.com Home Page...

Compaq Extended Math Library

The Compaq Extended Math Library (CXML) is a set of computationally intensive mathematical subroutines that are optimized for the Alpha platform.

CXML includes subroutines covering the areas of:

Most routines are available in both real and complex versions, as well as in both single and double precision.

In addition, CXML provides SCIPORT. SCIPORT is a Compaq Computer Corporation implementation of CRAY SCILIB. SCIPORT provides 64 bit single precision library routines for CRAY users porting programs to Alpha systems.

For further information, select a CXML subcomponent from the following table, or refer to the CXML Index of Routines.

CXML Subcomponents


  Sub-component				Function

  array-math routines	Standard math functions operating on arrays

  blas1 routines		Vector-vector linear algebra subprograms

  blas1e routines		Enhancements to BLAS 1

  blas1s routines		Sparse version of BLAS 1

  blas2 routines		Matrix-vector linear algebra subprograms

  blas3 routines		Matrix-matrix linear algebra subprograms

  lapack routines		Dense linear system solvers and eigensolvers

  iterative-solver routines	Sparse iterative linear system solvers

  skyline-solver routines	Direct solver for skyline matrices

  signal-processing routines	FFTs, cos/sin transforms, convolution, correlation, filters

  random-number routines	Random number generator subprograms

  sort routines		Sort subprograms

Parallel routines

  CXML  includes a parallel version of the library for SMP configuration.
  The parallel library contains the exact same set of subroutines with the
  same name and calling standards with a subset of the routines parallelized
  to take advantage of additional CPUs. The following routines are
  parallelized in this version of CXML:

    {S,D,C,Z}GEMV                    BLAS2

    {S,D,C,Z}GEMM                    BLAS3

    {S,D,C,Z}GETRF                   LAPACK
     {S,D,C,Z}POTRF

    {S,D,C,Z}FFT                     Signal Processing - 1D
    {S,D,C,Z}FFT_APPLY
    {S,D,C,Z}FFT_INIT
    {S,D,C,Z}FFT_EXIT

    {S,D,C,Z}FFT_2D                  Signal Processing - 2D
    {S,D,C,Z}FFT_INIT_2D
    {S,D,C,Z}FFT_APPLY_2D
    {S,D,C,Z}FFT_EXIT_2D

    {S,D,C,Z}FFT_3D                  Signal Processing - 3D
    {S,D,C,Z}FFT_INIT_3D
    {S,D,C,Z}FFT_APPLY_3D
    {S,D,C,Z}FFT_EXIT_3D

    DITSOL_DRIVER                    Iterative Solvers

    DITSOL_PBCG
    DITSOL_PCG
    DITSOL_PCGS
    DITSOL_PGMRES
    DITSOL_PLSCG
    DITSOL_PTFQMR

    DMATVEC_GENR
    DMATVEC_SDIA
    DMATVEC_UDIA

    DCREATE_DIAG_GENR
    DCREATE_DIAG_SDIA
    DCREATE_DIAG_UDIA

    DAPPLY_DIAG_ALL

    DCREATE_POLY_GENR
    DCREATE_POLY_SDIA
    DCREATE_POLY_UDIA

    DAPPLY_POLY_GENR
    DAPPLY_POLY_SDIA
    DAPPLY_POLY_UDIA

    DSSKYF                           Skyline Solvers
    DUSKYF

Linking with CXML

  To compile and link a Fortran program that contains calls to
  CXML routines, use one of the following commands:

	Compaq Tru64 UNIX	f77 my_prog.f -lcxml
				f90 my_prog.f90 -lcxml
	LINUX                   fort my_prog.f -lcxml
  
  To compile and link a C program that contains calls to CXML routines, 
  use one of the following commands:

	Compaq Tru64 UNIX	cc -migrate my_prog.c -lcxml
	LINUX			ccc my_prog.c -lcxml

	Notes:  my_prog.f and my_prog.f90 are example Fortran programs.  
	        my_prog.c is an example C program.
	        For Tru64 UNIX, using the -migrate flag lets you take advantage 
	        of the Compaq C compilation environment.

  To compile and link a Fortran program with the parallel version of CXML:

       f77 my_prog.f -lcxmlp


Executing Parallel Programs

  In the absence of any action by the user, the parallel version of CXML
  will create as many threads as there are physical processors available 
  on the system.  

  However, the user can control the number of threads created 
  (and consequently the number of processors used) by setting 
  the environment variable OMP_NUM_THREADS.

  For example, the parallel version of the CXML will create three execution
  threads if the following command is entered:

       > setenv OMP_NUM_THREADS 3

  NOTE: Do not set OMP_NUM_THREADS to a value greater than the number
  of physical processors.  This is likely to cause severe performance 
  degradation.

See Also

       array-math , blas1 , blas1e , blas1s ,
       blas2 , blas3 , signal-processing , lapack,
        iterative-solvers , skyline-solvers , random-numbers ,
       sort 

       CXML Release Notes and Readme file - located in: 
        /usr/doc/cxml-3.6.0

       Examples illustrating the use of CXML - located in: 
        /usr/doc/cxml-3.6.0/examples       

       Compaq Extended Math Library Reference Guide

       LAPACK User's Guide, E. Anderson, et al., SIAM, 1995.

CXML Home Page

Index of CXML Routines