CXML

SCIPORT (3sciport)


DESCRIPTION

  SCIPORT is a Compaq Equipment Corporation implementation of CRAY SCILIB.
  SCIPORT provides 64 bit single precision library routines for CRAY users
  porting programs to Alpha systems running Compaq Tru64 UNIX.

  SCIPORT is quite comprehensive. All CRAY Math Library and CF77 (CRAY
  FORTRAN) Math intrinsic routines accessible from high level languages are
  available to users porting programs from CRAY systems. Many are available
  in 64 bit and 128 bit forms directly from Compaq FORTRAN and plug compatible
  with their CF77 counterparts. SCIPORT complements Compaq FORTRAN by providing
  those math routines which are not available as Compaq FORTRAN intrinsics. In
  some cases, users may have to modify code slightly to declare the data
  types of these functions.

  Additionally, SCIPORT provides true 64 bit versions of all CRAY SCILIB
  single precision BLAS-1, BLAS-2, and BLAS-3 routines; all CRAY SCILIB
  LAPACK routines; all CRAY SCILIB Special Linear System Solver routines; all
  CRAY SCILIB Signal Processing routines; and all CRAY SCILIB Sorting and
  Searching routines. The routines listed are plug compatible with their CRAY
  SCILIB counterparts and with the exception of the ORDERS routine, require
  no program changes to function correctly. Owing to endian differences of
  machine architecture, special considerations must be given when ORDERS is
  used to sort multi-byte character strings.

  SCIPORT also provides some non-math CF77 intrinsic functions. For example
  conditional vector merge (CVMG*) functions are offered. Many of these CF77
  intrinsic functions return a CF77 data type of Boolean, which is not
  supported by ANSI FORTRAN-77. Users of these functions must carefully
  ensure that the functions are declared with the type of the target output.
  SCIPORT versions of these routines accept all data types as input and treat
  the output as an unsigned 64 bit integer. Great care was taken in the
  development of SCIPORT to minimize compatibility issues. In many cases,
  SCIPORT routines provide bit for bit compatible results. The SCIPORT
  version of RANF, for example returns exactly the same sequence of random
  digits as its CRAY SCILIB counterpart.

  Many SCIPORT routines call into the CXML, which must be installed prior to
  installing SCIPORT.  The link line must include libcxml, linked
  after the SCIPORT library.

  SCIPORT is easy to use. Once a ported CF77 program compiles cleanly, the
  following Fortran command is all that's needed to bind it to SCIPORT:

       > fortran -o prog -r8 -i8 -double_size 128 prog.f -lsciport -lcxml


  To avoid the cumbersome inclusion of required fortran switches, Compaq
  strongly urges SCIPORT users to define and use a shell command alias such
  as the one shown below:

       > alias cf77 'fortran -r8 -i8 -double_size 128'

  Using the command alias shown above, SCIPORT may be used by the command
  line shown below:

       > cf77 -o prog prog.f -lsciport -lcxml


BLAS

  Users of the SCIPORT BLAS routines are asked to reference CXML for their
  documentation needs. The SCIPORT BLAS routines are identical to the CXML
  single precision real and complex BLAS routines - with the following
  exceptions. All references to integer*4 should be changed to integer; all
  references to real*4 should be changed to real; and all references to
  complex*8 should be changed to complex. SCIPORT BLAS routines expect and
  use only 64 bit integer and floating point data types.

FFT

  Fast Fourier Transforms --- a group of subprograms that apply a fast
  Fourier transform and compute either a Fourier analysis or a Fourier
  synthesis.

			---------- Warning ------------

  For performance reasons, SCIPORT uses three step CXML FFT routines. The
  three step CXML FFT routines require users to supply a structure which is
  used by the FFT routine. These FFT structures may not be overwritten by
  users between FFT calls. To do so will introduce memory leaks. CRAY FFT
  routines require users to supply work areas. Depending on which CRAY FFT
  routine is used, these work areas may or may not be overwritten between
  calls.

			-------------------------------


  To minimize the effort required to port a program from a CRAY system to a
  Compaq Alpha system, SCIPORT maintains the same user FFT interface. To do
  so, SCIPORT overlays a user supplied work area with the requisite CXML
  structure. Although this technique does preserve the user calling
  interface, it also introduces two operational problems.

  1. For very short FFTs, the size of the workspace (in 64 bit words)
  required on the CRAY system may be smaller than the size of the work space
  required by the underlying CXML routine. In most cases the actual size of
  the work space cannot be detected from within the FFT, and so it cannot be
  checked. This problem is addressed in the man pages. The man page for each
  SCIPORT FFT routine now specifies a minimum size required for each
  workspace.

  2.  Some CRAY FFT routines permit their workspaces be overwritten
  between FFT calls. Overwriting a SCIPORT FFT workspace overwrites pointers
  within the CXML structure, causing  malloc'd data to be forever orphaned -
  a memory leak. The problem is difficult to detect and solve from within
  SCIPORT, and may require active user intervention. To assist in the porting
  effort, the man pages for each SCIPORT FFT routine now identify which work
  area gets overlaid. Once a user knows which work area is used by SCIPORT,
  measures can be taken to avoid writing to that area between FFT calls.

  PLEASE NOTE 
  IF YOUR PROGRAM USES A CORRECTLY SIZED WORKSPACE, DEDICATED
  FOR USE BY A GIVEN FFT ROUTINE, YOU CANNOT HAVE THE SECOND PROBLEM AND YOUR
  PROGRAM SHOULD PORT WITHOUT MODIFICATION.

  For users who cannot guarantee dedicated FFT workareas, escape mechanisms
  are provided for each FFT routine. The escape mechanisms permit users to
  free CXML FFT structures and avoid memory leaks. Each escape mechanism is
  designed to use a form of the FFT call which will be ignored by a CRAY
  system, in the event that the modified program should be ported back.

FILTERS

  A group of subprograms used for filter analysis and design.  They can also
  be used to solve more general problems.

LINEAR_RECURRENCE

  A group of subprograms that solve first-order and some second-order linear
  recurrences.  A linear recurrence is an evaluation of a quantity term by
  term from given initial values and from previously computed values.

SEARCH

  A group of subroutines that perform searches for locating the number or
  positions of true occurences within a vector, for finding the first
  occurence of a target object within a vector, for finding the indices of
  all positions of an object within a vector, and for finding targets within
  ordered arrays.

CXML Home Page

Index of CXML Routines