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

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

\subsection{Changes from version 6.0}

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 \libptscotch\ and \libscotch\ libraries
and, consequently, by the \ptscotch\ standalone programs that call
them. Users can control concurrency in the \libptscotch\ by using
\texttt{SCOTCH\_\lbt Context} objects. These objects define
user-configurable execution contexts, in which \libptscotch\ library
routines can be executed independently from others.

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.
Please refer to the \scotch\ user's manual for a comprehensive
description of \texttt{SCOTCH\_\lbt Context} features.

Thanks to this new model, \ptscotch\ can use multi-threaded
algorithms when several threads are available per MPI node. Two
levels of multi-threading are available: multi-threading with a single
thread handling MPI communications, and multi-threading with several
threads being able to perform MPI communication simultaneously. This
behavior is controlled at compile-time by flags \texttt{SCOTCH\_\lbt
PTHREAD} and \texttt{SCOTCH\_\lbt PTHREAD\_\lbt MPI}.
Please refer to section \ref{sec-lib-thread} for more information.
\\

Support for CMake has been added.

\subsection{Changes from version 5.0}

\ptscotch\ now provides routines to compute in
parallel partitions of distributed graphs.

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 {\tt SCOTCH\_\lbt version}
routine returns the version, release and patchlevel numbers of the
library being used. The {\tt 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.

\subsection{Changes from version 5.1}

Unlike its sequential counterpart, version {\sc 6.0} of
\ptscotch\ does not bring major algorithmic improvements with respect
to the latest {\sc 5.1.12} release of the {\sc 5.1} branch.

In order to ease the work of people writing numerical solvers, it
exposes in its interface a new distributed graph handling routine,
{\tt SCOTCH\_\lbt dgraph\lbt Redist}, that builds a redistributed
graph from an existing distributed graph and partition data. See
Section~\ref{sec-lib-func-dgraphredist}.

\subsection{Changes from version 6.1}

The prototype \texttt{Dmesh} distributed mesh data type has been
created, to allow one to compute dual distributed graphs, using
the \texttt{dmeshDgraphDual\,()} routine (see
Section~\ref{sec-lib-func-dmeshdgraphdual}). This routine, and others,
allowed for the addition of the
\texttt{ParMETIS\_\lbt V3\_\lbt Mesh2Dual\,()} routine to the
\parmetis\ compatibility module (see
Section~\ref{sec-lib-func-parmetis-meshtodual}).
