%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                  %
% Titre  : s_c.tex                 %
% Sujet  : Manuel de l'utilisateur %
%          du projet 'Scotch'      %
%          Changes                 %
% Auteur : Francois Pellegrini     %
%                                  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Updates}
\label{sec-changes}

\subsection{Changes in version 7.0 from version 6.1}

Thread management in \scotch\ is now dynamic. This allows the user to
control dynamically the number of threads that are used by the
threaded algorithms of the \libscotch\ library and, consequently, by
the \scotch\ standalone programs that call them. Users can also
control concurrency by using \texttt{SCOTCH\_\lbt Context}
objects. These objects define user-configurable execution contexts, in
which \libscotch\ library routines can be executed independently from
others; see Section~\ref{sec-lib-context},
page~\pageref{sec-lib-context} for further information.

Execution contexts also comprise option values, which dynamically
determine the behavior of the \scotch\ routines. In previous versions,
such behavior was controlled at compile-time by flags
\texttt{COMMON\_\lbt RANDOM\_\lbt FIXED\_\lbt SEED} and
\texttt{SCOTCH\_\lbt DETERMINISTIC}. It is now possible to define
these flags dynamically, using the relevant option setting routine
(see Section~\ref{sec-lib-context-option-set-num}).
\\

Support for CMake has been added.
\\

A new, faster, pseudo-random number generator has been implemented.
\\

The y cordinate of the grid geometry files provided by the
\texttt{gmk\_m*} programs has been set to the ascending order. Use
option \texttt{-y} to restore the previous behavior of descending
order.

\subsection{Changes in version 6.1 from version 6.0}

The k-way refinement routine of the module that computes graph
partitions with overlap has been completely rewritten.
\\

The halo minimum degree and halo minimum fill algorithms now take into
account, for computing vertex degrees, the vertex weights attached to
node vertices. These weights may represent the number of degrees of
freedom associated with a vertex during subsequent matrix
computations. They can result from a graph compression process, such
as the one implemented in \scotch\ (see
page~\pageref{sec-lib-meth-compress}).
\\

The program \texttt{gout} can now output VTK files.

\subsection{Changes in version 6.0 from version 5.1}

The new \texttt{sub} abstract target architecture allows one to map a
graph onto a subset of any given target architecture (including
another \texttt{sub} architecture). This feature is meant to perform
mappings onto potentially disconnected subsets of a parallel machine,
e.g. the set of nodes assigned by a batch scheduler; see
Section~\ref{sec-lib-arch-sub}, page~\pageref{sec-lib-arch-sub} for
further information.

Also, in order to allow decomposition-defined architectures to
scale-up to the sizes of modern machines, a new version of the
\texttt{deco} architecture, called \texttt{deco~2}, has been
designed. This target architecture can be created using the
\texttt{SCOTCH\_\lbt arch\lbt Build2} routine; see
Section~\ref{sec-lib-arch-build-two},
page~\pageref{sec-lib-arch-build-two} for further information.
For further information on the rationale and implementation of these
two features, please refer to~\cite{pellegrini:hal-01671156}.

Also,a new labeled tree-leaf architecture has been created, for nodes
that label cores in non increasing order. See
Section~\ref{sec-file-target-algo},
page~\pageref{sec-file-target-algo} for the description of the
\texttt{ltleaf} target architecture.
\\

Direct k-way graph partitioning and static mapping methods are now
available. They are less expensive than the classical dual recursive
bipartitioning scheme, and improve quality on average for numbers of
parts above a few hundreds. Another new method aims at reducing load
imbalance in the case of source graphs with highly irregular vertex
weights; see Section~\ref{sec-algo-map-methods},
page~\pageref{sec-algo-map-methods}. Users willing to keep using the
old recursive bipartitioning strategies of the \textsc{5.x} branch can
create default strategies with the \texttt{SCOTCH\_\lbt STRATRECURSIVE}
flag set, in addition to other flags; see
Section~\ref{sec-lib-format-strat-default},
page~\pageref{sec-lib-format-strat-default} for further information.
\\

Graph repartitioning and static re-mapping features are now available;
see Sections~\ref{sec-lib-func-graphmapfixed}
to~\ref{sec-lib-func-graphremapfixed}, starting from
page~\pageref{sec-lib-func-graphmapfixed}.
\\

The clustering capabilities of \scotch\ can be used more easily from
the command line and library calls~; see Section~\ref{sec-prog-gmap}
and Section~\ref{sec-lib-func-stratgraphclusterbuild}.
\\

A new set of routines has been created in order to compute
vertex-separated, k-way partitions, that balance the loads of the
parts and of the separator vertices that surround them; see
Sections~\ref{sec-lib-format-strat-part-ovl}
and~\ref{sec-lib-func-graphpartovl}.
\\

A method for computing independently orderings on connected components
of a graph is now available; see Section~\ref{sec-lib-format-strat-ord},
page~\pageref{sec-lib-format-strat-ord}, and the \texttt{SCOTCH\_\lbt
STRAT\lbt DISCON\lbt NECTED} flag in
Section~\ref{sec-lib-format-strat-default},
page~\pageref{sec-lib-format-strat-default}.
\\

Key algorithms are now multi-threaded. See the installation file
\texttt{INSTALL.txt} in the main directory for instructions on how to
compile \scotch\ with thread support enabled.
\\

Memory footprint measurement routines are now available to users;
see Section~\ref{sec-lib-misc}, page~\pageref{sec-lib-misc}.
\\

The \metis\ compatibility library now provides optionally version~5 of
the \metis\ API, in addition to version~3. In the \texttt{6.0} branch
of \scotch, version~3 of the API will remain the default. To expose
version~5 of the \metis\ API, \scotch\ must be compiled with flag
\texttt{SCOTCH\_\lbt METIS\_\lbt VERSION=5} set. In further branches,
version~5 of the API may become the default, requiring the
\texttt{SCOTCH\_\lbt METIS\_\lbt VERSION=3} flag to be set to expose
version~3 of the \metis\ API.

\subsection{Changes in version 5.1 from version 5.0}

A new integer index type has been created in the Fortran interface, to
address array indices larger than the maximum value which can be
stored in a regular integer. Please refer to
Section~\ref{sec-install-inttypesize} for more information.
\\

A new set of routines has been designed, to ease the use of the
\libscotch\ as a dynamic library. The \texttt{SCOTCH\_\lbt version}
routine returns the version, release and patch level numbers of the
library being used. The \texttt{SCOTCH\_\lbt *Alloc} routines,
which are only available in the C interface at the time being,
dynamically allocate storage space for the opaque API
\scotch\ structures, which frees application programs from the need
to be systematically recompiled because of possible changes of
\scotch\ structure sizes.
