Installation


  1. Uncompress and unpack the tar file (pseudopack_2000.tar.Z).

    It will create a new directory PseudoPack containing 11 subdirectories and 5 files.

    The subdirectories are

         Example/     Library/     Source/     Include/     
         Module/     Makefile/   TestCode/
    
         Library/CRAY-F90/    Library/RS6K-SGI/   Library/SUN/
         Library/RS6K_ESSL/   Library/SGI/
    
          Module/CRAY-F90/     Module/RS6K-SGI/    Module/SUN/
          Module/RS6K_ESSL/    Module/SGI/
    and those 5 makefiles are
      makeCF90       makeRS6K       makeSGI 
      makeESSL       makeSUN         

    If the user downloaded pseudopack_2000b.tar.gz, replaces pseudopack_2000 by pseudopack_2000b for the commands above to uncompress and unpack the library.

    In this case, there are several subdirectories containing the pre-compiled PseudoPack library for various machines and Options under the Library directory.

    Sub-Directory

    Library is compiled with

    CRAY-F90 SciLib Library (CRAY) using f90 compiler on the J90
    RS6K-ESSL ESSL v2 Library (ESSL) on the IBM SP2 with RS6000 CPU
    RS6K-SGI NetLib Library (SGI ) on the IBM SP2 with RS6000 CPU
    SGI NetLib Library (SGI ) under SGI IRIX 6.5 OS with R10000
    SUN NetLib Library (SGI ) under SUN Ultra 1

    To use anyone of these precompiled libraries, user can copy the desired library to any user designated directory or just leave it there.

    You can skip to Step 3 if you are using the precompiled library version of the PseudoPack.

    User should if so desired, read the next step to check out the exact C-Preprocessors macros exercised for the compilation of each library binaries.

  2. Compile the Library.

    Syntax : make   -f   makeX   VERSION

    where

    X                   is one of the   ( CF90  ,   ESSL  ,   RS6K  ,   SUN  ,   SGI ).

       CF90   : Cray vector machines with SciLib using f90 compiler
       ESSL   : IBM RS6000 with ESSL version 2 library
       RS6K   : IBM RS6000 without ESSL version 2 library
       SUN    : SUN Ultra 1.
       SGI    : SGI MIPS series CPU R4000/R5000/R8000/R10000
           
    VERSION   is one of the   ( S, s  ,   SD, sd  ,   D, d  ,   DD, dd  ,   ALL, all ).
       S   [s  ]  : Single_Precision, No Debug
       SD  [sd ]  : Single_Precision,    Debug
       D   [d  ]  : Double_Precision, No Debug
       DD  [dd ]  : Double_Precision,    Debug
       ALL [all]  : All of the above
           
    Example :

    To compile the double precision PseudoPack library with debugging option (VERSION=dd) for the IBM RS6000 with ESSL library version 2 (X=ESSL), the command line syntax is

                                make -f makeESSL dd 
    Note :

    1. For each supported computation platform a makefile is supplied with optimization compiler options enabled based on the authors' best knowledge. However, user might want to modify the content of the makefile to ensure optimal compiler options are employed for their own computer system.

    2. For CRAY, Double_Precision (D, DD) version of the library will be reset to Single_Precision (S, SD) version.

    3. Under no circumstances that the library be compiled with -C option. No run-time subscript range check should be enabled. Otherwise, the code will fail with core dump.

  3. PseudoPack Library.

    If Step 1 and 2 are successfully completed, one or more library binary will be created in the corresponding subdirectory of the directory Library   .

    They are

       libpseudopack_s.a   : Single Precision, No Debug 
       libpseudopack_sd.a  : Single Precision,    Debug 
       libpseudopack_d.a   : Double Precision, No Debug 
       libpseudopack_dd.a  : Double Precision,    Debug 
           
    For the non-Cray machine, the corresponding module file are kept in the corresponding subdirectory of the directory Module.

    They are

       pseudopack.mod     : Single Precision
       pseudopack_d.mod   : Double Precision
       pseudopack_s.mod   : Single Precision
           

Fine tuning

By editing some entries in the makefile, the library can be optimized further provided native optimized mathematical library can be used in place of the one is current used by the PseudoPack Library. Some hardware switches can also be reconfigured to better match the user's specific computational platform. Users are welcome to modify the makefile as they see fit.

We will focus on optimization in the software side only. Several macro names are defined in the makefile to use the local copy of the routines (e.g. GEMM) supplied by the authors instead of the one supplied by the native optimized library on a particular computational platform. To use the native optimized one, use must redefine the corresponding macro definition inside the makefile and add non-default the path and the name of the optimized mathematical library used to the compilation statement when linking the PseudoPack Library with the user source code.

In the discussion below, when we say 'comment out the macro name', we mean inserting a pound sign # at the first column in front of the macro name. To define and undefine the macro name in the makefile, please consult your local makefile expert for help. We shall illustrate them by examples instead.

Example

To define the macro NATIVE_LIBRARY, the syntax is

  make -f makeSGI NATIVE_LIBRARY="-L /usr/lib -lcomplib.sgimath" ....
Example

To undefine the macro CPP_GEMM, the syntax is

  make -f makeSGI CPP_GEMM=  ....


NATIVE_LIBRARY

If native optimized mathematical library existed, then one can specify the path and the name for the macro name NATIVE_LIBRARY.

CPP_VFFT

If native optimized VFFTPACK from NETLIB existed, then one can deactivate the local one provided by the PseudoPack Library by comment out or undefine the the macro CPP_VFFT.

CPP_GEMM

If native optimized BLAS 3 routines DGEMM/SGEMM existed, then one can deactivate the local one provided by the PseudoPack Library by comment out or undefine the macro CPP_GEMM.

CPP_GAMMA

If native optimized Gamma function routines DGAMMA/SGAMMA existed, then one can deactivate the local one provided by the PseudoPack Library by comment out or undefine the macro CPP_GAMMA.

CPP_GAUSS

If native optimized routines for computing Gauss Quadrature nodes DGAUSSQ/SGAUSSQ existed, then one can deactivate the local one provided by the PseudoPack Library by comment out or undefine the macro CPP_GAUSS.