%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                                  %
% 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 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}.

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-part-ovl}
and~\ref{sec-lib-func-graphpartovl}.

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.

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

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.

A method for computing independently orderings on connected components
of a graph is now available; see Section~\ref{sec-lib-format-ord},
page~\pageref{sec-lib-format-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}.

\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.
