99 lines
3.8 KiB
TeX
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}
|
|
|