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:
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
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
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
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.
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/opt/XMDCOM360/docs Examples illustrating the use of CXML - located in: /usr/examples/cxml Compaq Extended Math Library Reference Guide LAPACK User's Guide, E. Anderson, et al., SIAM, 1995.