
Glossary



API 
[Definition quoted from CNET] An
API (Application Program Interface) is a series of functions that programs can use to make the
operating system do their work. Using Windows APIs, for example, a program can open windows,
files, and message boxes as well as perform more complicated tasks
by passing a single instruction. Windows has several classes of APIs that
deal with telephony, messaging, and other issues. 
ASCI 
ASCI (Accelerated Strategic Computing Initiative) is an initiative
of Defense Programs at the U.S. Department of Energy, in collaboration with
Lawrence Livermore National Laboratory, Los Alamos National Laboratory
and Sandia National Laboratories. The ASCI Project aims
at verifying the safety, reliability, and performance of the U.S. nuclear stockpile
by shifting from nuclear test based methods to computer simulations based methods.
ASCI has evolved into DOE's National Nuclear Security Administration's
Advanced Simulation and Computing
(ASC) Program. 
BLAS 
The BLAS (Basic Linear Algebra Subprograms) correspond
to a collection of subprograms intended for basic linear algebra operations,
such as vectorvector operations (level 1 BLAS), matrixvector operations
(level 2 BLAS) and matrixmatrix operations (level 3 BLAS). 
Components 
[Definition quoted from the CCA Forum]
A component is a software object, meant to interact with other components, encapsulating certain
functionality or a set of functionalities. A component has a clearly defined
interface and conforms to a prescribed behavior common to all components
within an architecture. Multiple components may be composed to build other
components. 
Computational Grids 
"The computational grid" is a term that has been coined by researchers
who foresee the wide area networking (national or global) of computational
resources advancing to the point that computational cycles can be shared
and distributed to the user, as transparently as electricity on the power
grid. For the present, we can define a "computational grid" as being any
distributed computational network, enabled with software that allows cooperation
and the sharing of resources. Ian Foster and Carl Kesselman have edited the
book The Grid: Blueprint for a New Computing Infrastructure on the topic. More info here at
Globus.org.

Expression Templates 
[Definition quoted from the abstract of
Todd
Veldhuizen's 1994 paper on expression templates] Expression Templates
is a C++ technique for passing expressions as function arguments. The expression
can be inlined into the function body, which results in faster and more
convenient code than Cstyle callback functions. This technique can also be
used to evaluate vector and matrix expressions in a single pass without temporaries.
In preliminary benchmark results, one compiler evaluates vector expressions
at 9599.5 percent efficiency of handcoded C using this technique (for long
vectors). The speed is 215 times that of a conventional C++ vector class. 
GMRES 
GMRES (Generalized Minimal Residual) is a Krylovbased
iterative method for the solution of linear systems associated to unsymmetric matrices. It was proposed by
Saad and Shultz (GMRES: A Generalized Minimal Residual Algorithm for solving
Nonsymmetric Linear Systems, SIAM J. Scientific and Stat. Comp., 7:856869,
1986). 
Iterative
Solvers 
Iterative solvers for linear systems Ax = b are based on
recurrences of the form x_{k+1} = x_{k }+ p_{k}, where
p_{k}, is a correction vector. For example, in the Jacobi iteration,
p_{k}, = D^{1}(bAx_{k}), where D = diag(A). Other
algorithms in this category are CG (Conjugate Gradient), GMRES (Generalized
Minimal Residual), Orthomin, Orthodir, MINRES, BiCG, BiCGSTAB, QMR, Steepest
Descent, etc. 
LAPACK 
LAPACK (Linear Algebra PACKage) provides routines for solving systems
of simultaneous linear equations, leastsquares solutions of linear systems
of equations, eigenvalue problems, and singular value problems. It can be
dowloaded from Netlib. 
Krylov
Methods 
A Krylov subspace is defined as K(A,q,j) = span(q,Aq,A^{2}q,...A^{j1}q).
Krylov methods are based on Krylov subspaces and form a class of iterative
methods for the solution of linear systems and eigenvalue problems, sparse
ones in particular. Selected Krylov algorithms include the Arnoldi based
Generalized Minimal RESidual (GMRES) algorithm, and the Lanczos based Conjugate
Gradients Squared (CGS), BiCGSTAB, and TransposeFree QuasiMinimal Residual
(TFQMR) algorithms. A preconditioner
is typically used with these methods. 
MIMD 
[Definition by Charles Belov, 1997] Multiple Instruction
Multiple Data. Multiple computer instructions, which may or may not be the
same, and which may or may not be synchronized with each other, perform actions
simultaneously on two or more pieces of data. The class of distributed memory
MIMD machines is the fastest growing segment of the family of
highperformance computers. 
Modules 
Modules provides an easy mechanism for updating a user's environment
especially the PATH, MANPATH, and LD_LIBRARY_PATH environment variables. It is the path
maintenance device of choice at NERSC. To access a package
(library or executable software), such as PETSc, users typically first run a command
such as "module load petsc". More detailed information about modules is available through NERSC's
online documentation. 
MPI 
MPI is the Message Passing Interface. The goal of the Message Passing
Interface simply stated is to develop a widely used standard for writing
messagepassing programs. As such the interface should establish a practical,
portable, efficient, and flexible standard for message passing. The standard
is maintained by the MPI Forum. 
Preconditioners 
Preconditioners are used to enhance the convergence rates of iterative
methods. For example, in the Jacobi iteration (defined above), the
preconditioner is D^{1}. There are also block diagonal preconditioners,
polynomial preconditioners, and preconditioners based on incomplete LU decompositions,
for instance. 
SciTL 
SciTL stands for the Scientific Template Library. At the inception
of the former ACTS Toolkit Project, SciTL was expected to form a subset of
the ACTS Toolkit, but instead of forming a new subset, tools were added to
SciTL. "ACTS Toolkit" and "SciTL" are thus synonymous, and the use of "SciTL"
has been deprecated. 
SIMD 
[Definition by Charles Belov, 1997] Single Instruction Multiple
Data. A single computer instruction perform the same identical action (retrieve,
calculate, or store) simultaneously on two or more pieces of data. 
SPMD 
Single Program Multiple Data. An SPMD program typically maps a
problem of size N into p instances of a size N/p. 
PVM 
The Parallel Virtual Machine software package permits a heterogeneous
collection of Unix computers hooked together by a network to be used as
a single large parallel computer. PVM transparently handles all message routing,
data conversion, and task scheduling across a network of incompatible computer
architectures. Detailed information is available on the
PVM website. 