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

Compaq Extended Math Library - Parallel Library

CXML includes a parallel version of the library for SMP configuration. The parallel CXML library is only available on platforms that support SMP, including Tru64 Unix.

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.

CXML Parallel Routines



    {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
        
    DSS_CREATE                       Direct Sparse Solvers
    DSS_DEFINE_STRUCTURE
    DSS_REORDER
    DSS_FACTOR_REAL
    DSS_FACTOR_COMPLEX
    DSS_SOLVE_REAL
    DSS_SOLVE_COMPLEX

Compiling and Linking Parallel Programs

The following is an example of how 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.


 
 

CXML Home Page

Index of CXML Routines