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.