hypre/docs/usr_intro.tex
2001-07-23 13:05:20 +00:00

99 lines
3.8 KiB
TeX

%==========================================================================
\chapter{Introduction}
\label{Introduction}
\hypre{} is a software library for solving large, sparse linear
systems of equations on massively parallel computers. The library was
created with the primary goal of providing users with advanced
parallel preconditioners. Issues of robustness, ease of use,
flexibility, and interoperability also play an important role.
%==========================================================================
\section{Features}
\label{Features}
\begin{itemize}
\item
{\bf Scalable preconditioners provide efficient solution on today's
and tomorrow's systems:} \hypre{} contains several families of
preconditioner algorithms focused on the scalable solution of very
large sparse linear systems. \hypre{} includes ``grey-box'' algorithms
that use more than just the matrix to solve certain classes of
problems more efficiently than general-purpose libraries. This
includes algorithms such as structured multigrid.
\item
{\bf Suite of common iterative methods provides options for a spectrum
of problems:} \hypre{} provides several of the most commonly used
Krylov-based iterative methods to be used in conjunction with its
scalable preconditioners. This includes methods for nonsymmetric
systems such as GMRES and methods for symmetric matrices such as
Conjugate Gradient.
\item
{\bf Intuitive grid-centric interfaces obviate need for complicated
data structures and provide access to advanced solvers:} \hypre{} has
made a major step forward in usability from earlier generations of
sparse linear solver libraries in that users do not have to learn
complicated sparse matrix data structures. Instead, \hypre{} does the
work of building these data structures for the user through a variety
of interfaces, each appropriate to different classes of users. These
include stencil-based structured/semi-structured interfaces most
appropriate for finite-difference applications; a finite-element based
unstructured interface; and a linear-algebra based interface. Each
interface provides access to several solvers without the need to write
new interface code.
\item
{\bf User options accommodate beginners through experts:} \hypre{}
allows a spectrum of expertise to be applied by users. The beginning
user can get up and running with a minimal amount of effort. More
expert users can take further control of the solution process through
various parameters.
\item
{\bf Configuration options to suit your computing system:} \hypre{}
utilizes the GNU Autoconf package to allow simple and flexible
installation on a wide variety of computing systems. Users can tailor
the installation to match their computing system. Options include
debug and optimized modes, the ability to change required libraries
such as MPI and BLAS, a sequential mode, and modes enabling threads
for certain solvers. On most systems, however, \hypre{} can be built
by simply typing \kbd{configure} followed by \kbd{make}.
\item
{\bf Interfaces in multiple languages provide greater flexibility for
applications:} \hypre{} contains interfaces for both Fortran and C
users.
\end{itemize}
%==========================================================================
\section{Assumptions and Limitations}
\begin{itemize}
\item
{\bf \hypre{} is designed for large, sparse, linear systems on
parallel computers.} Small linear systems, systems that are solvable
on a sequential computer, and dense systems are all better addressed
by other libraries that are designed specifically for them.
\item
{\bf To run in parallel, \hypre{} requires an installation of MPI.}
\item
{\bf Configuration of \hypre{} with threads requires an implementation
of OpenMP.} Currently, only a subset of \hypre{} is threaded.
\item
{\bf \hypre{} currently does not support complex-valued systems.}
\end{itemize}