\chapter{\pastix{} options}

\pastix{} can be called step by step or in one unique call.\\
User can refer to \pastix{} step-by-step and simple examples.\\
The folowing section will describe each steps and options that can be 
used to tune the computation.

\section{Global parameters}

This section present list of parameters used in severall \pastix{}
steps.

\subsection{Verbosity level}

\begin{description}
\item[\iparm{IPARM\_VERBOSE}~:] used to set verbosity level. Can be
  set to 3 values : 
  \begin{description}
  \item[\texttt{API\_VERBOSE\_NOT}~:] No display at all,
  \item[\texttt{API\_VERBOSE\_NO}~:]  Few displays,
  \item[\texttt{API\_VERBOSE\_YES}~:] Maximum verbosity level.
  \end{description}
%\item[\texttt{IPARM\_TRACE\_FORMAT}~:] used in factorisation, solve
%and refinement step to trace computation operation. 
\end{description}

\subsection{Indicating the steps to execute}

\begin{description}
\item[\iparm{IPARM\_START\_TASK}~:] indicates the first step to
  execute (cf. quick reference card). \\ 
  Should be set before each call.\\
  It is modified during \pastix{} calls, at the end of one call it is
  equal to the last step performed (should be
  \iparm{IPARM\_END\_TASK}. 
\item[\iparm{IPARM\_END\_TASK}~:] indicates the last step to execute
  (cf. quick reference card).\\
  Should be set before each call.
\end{description}

NB~: Setting \iparm{IPARM\_MODIFY\_PARAMETER} to
\texttt{API\_NO} will make \pastix{} initialize integer and floating
point parameters. After that operation, \pastix{} will automaticaly return, 
without taking into acount \iparm{IPARM\_START\_TASK} nor \iparm{IPARM\_END\_TASK}.


\subsection{Symmetry}
\begin{description}
\item[\iparm{IPARM\_FACTORISATION}~:] Gives the factorisation type.\\
  It can be \texttt{API\_FACT\_LU}, \texttt{API\_FACT\_LDLT} or
  \texttt{API\_FACT\_LLT}.\\
  It has to be set from ordering step to refinement step to the same
  value.\\
  With non symmetric matrix, only $LU$ factorisation is possible.
\item[\iparm{IPARM\_SYM}~:] Indicates if the matrix is symmetric or not.\\
  With symmetric matrix, only the inferior triangular part has to be
  given.
\end{description}

\subsection{Threads}
To save memory inside a SMP node users can use threads inside each
node.\\
Each thread will allocate the part of the matrix he will work mostly
on but all threads will share the matrix local to the SMP node.
\index{Threads}

\begin{description} 
\item[\iparm{IPARM\_THREAD\_NBR}~:] Number of computing threads per MPI process,
\item[\iparm{IPARM\_BINDTHRD}~:] can be set to the mode used to bind
  threads on processors~:
  \begin{description}
  \item[\texttt{API\_BIND\_NO}~:] do not bind threads on processors,
  \item[\texttt{API\_BIND\_AUTO}~:] default binding mode (thread are
    binded cyclicaly (thread $n$ to proc $\lfloor \frac{n}{procnbr} \rfloor$),
  \item[\texttt{API\_BIND\_TAB}~:] Use vector given by
    \texttt{pastix\_setBind}
    (\hyperref[pastix_setbind]{\ref{proto:pastix_setbind}
      p.\pageref{proto:pastix_setbind}}). 
  \end{description}
\end{description}
\index{Fonctions@Fonctions!\texttt{pastix\_setBind}}


This section describes which steps are affected by which options.

\subsection{Matrix descriprion}

\pastix{} solver can handle different type of matrices.\\
User can describe the matrix using several parameters~:
\begin{description}
\item[\iparm{IPARM\_DOF\_NBR}~:] indicate the number of degree of
  freedom by edge of the graph. The default value is one.
\item[\iparm{IPARM\_SYM}~:] indicate if the matrix is symmetric or
  not. This parameters can be set to two values~:
  \begin{description}
  \item[\texttt{API\_SYM\_YES}~:] If the matrix is symmetric.
  \item[\texttt{API\_SYM\_NO}~:] If the matrix is not symmetric.
  \end{description}
\end{description}

If user is not sure that the matrix will fit \pastix{} and
\texttt{Scotch} requirements, the parameters
\iparm{IPARM\_MATRIX\_VERIFICATION} can be set to \texttt{API\_YES}.

With distributed interface, to prevent \pastix{} from checking that
the matrix has been correctly distributed after distribution
computation, \iparm{IPARM\_CSCD\_CORRECT} can be set to \texttt{API\_YES}.

\section{Initialisation}
\input{initialisation.tex}

\section{Ordering}
\input{ordering.tex}

\section{Symbolic factorisation}
\input{symbol.tex}

\section{Analyse}
\input{blend.tex}

\section{Numerical factorisation}
\input{fact.tex}

\section{Solve}
\input{solv.tex}

\section{Refinement}
\input{refinement.tex}

\section{Clean}
This step simply free all memory used by PaStiX.
