\chapter{Outputs}

\section{Logs}

This section aim at giving clue to analyse \pastix{} outputs on
standard output and error streams.


\subsection{Controling output logs}

The parameter \iparm{IPARM\_VERBOSE} can be use to modify output logs.

The different values than can be given are : 
\begin{description}
  \item{\texttt{API\_VERBOSE\_NOT}~:} No output at all.
  \item{\texttt{API\_VERBOSE\_NO}~:}  Few output lines.       
  \item{\texttt{API\_VERBOSE\_YES}~:} Many output lines.
  \item{\texttt{API\_VERBOSE\_CHATTERBOX}~:} Like a real gossip.
  \item{\texttt{API\_VERBOSE\_UNBEARABLE}~:} Please stop it ! It's talking
    too much !
\end{description}

\subsection{Interpreting output logs}

  \tablefirsthead{%
    Log text & Signification \\
    \multicolumn{2}{l}{}\\}
  \tablehead{%
    \multicolumn{2}{l}{@{\hspace{-2cm}}\small\sl \dots continued from previous page}\\}
  \tabletail{%
    \multicolumn{2}{r}{\small\sl continued on next page \dots}\\}
  \tablelasttail{}
  \bottomcaption{Interpreting output table}
  
  %\addtolength{\oddsidemargin}{-3cm}
  %\addtolength{\evensidemargin}{-3cm}
  \begin{footnotesize}
    \begin{supertabular}{@{\hspace{-2cm}\% }p{8.3cm}@{: }p{8cm}}
      \verb}Version                :} & Subversion's version number.\\
      \verb}SMP_SOPALIN            :} & Indicate if \texttt{SMP\_SOPALIN} as been defined.\\
      \verb}VERSION MPI            :} & Indicate if \texttt{NO\_MPI} as been defined.\\
      \verb}PASTIX_DYNSCHED        :} & Indicate if \texttt{PASTIX\_DYNSCHED} as been defined.\\
      \verb}STATS_SOPALIN          :} & Indicate if \texttt{STATS\_SOPALIN} as been defined.\\
      \verb}NAPA_SOPALIN           :} & Indicate if \texttt{NAPA\_SOPALIN} as been defined.\\
      \verb}TEST_IRECV             :} & Indicate if \texttt{TEST\_IRECV} as been defined.\\
      \verb}TEST_ISEND             :} & Indicate if \texttt{TEST\_ISEND} as been defined.\\
      \verb}THREAD_COMM            :} & Indicate if \texttt{THREAD\_COMM} as been defined.\\
      \verb}THREAD_FUNNELED        :} & Indicate if \texttt{THREAD\_FUNNELED} as been defined.\\
      \verb}TAG                    :} & Indicate the communication tag mode.\\
      \verb}OUT_OF_CORE            :} & Indicate if \texttt{OOC} as been defined.\\
      \verb}DISTRIBUTED            :} & Indicate if \texttt{DISTRIBUTED} as been defined.\\
      \verb}FORCE_CONSO            :} & Indicate if \texttt{FORCE\_CONSO} as been defined.\\
      \verb}RECV_FANIN_OR_BLOCK    :} & Indicate if \texttt{RECV\_FANIN\_OR\_BLOCK} as been defined.\\
      \verb}FLUIDBOX               :} & Indicate if \texttt{FLUIDBOX} as been defined.\\
      \verb}METIS                  :} & Indicate if \texttt{METIS} as been defined.\\
      \verb}INTEGER TYPE           :} & Indicate integer type.\\
      \verb}FLOAT TYPE             :} & Indicate float type.\\
      \verb} Ordering :}                 & 
      Starting ordering step.\\
      \verb}   > Symmetrizing graph}     & 
      Symmetrizing the graph.\\
      \verb}   > Removing diag}          & 
      Removing diagonal entries.\\
      \verb}   > Initiating ordering}    & 
      Starting ordering routines.\\
      \verb} Symbolic Factorization :}   & 
      Starting symbolic factorization.\\
      \verb} Kass :}                     & 
      Special step needed if not using Scotch.\\
      \verb} Analyse :}                  & 
      Starting analyse and distribution step.\\
      \verb} Numerical Factorization :}  & 
      Starting numerical factorization.\\
      \verb} Solve :}                    & 
      Starting up-down step.\\
      \verb} Reffinement :}              & 
      Starting refinement step.\\
      \verb}   Time to compute ordering} &
      Time spend to perform ordering.\\
      \verb}   Number of cluster}        &
      Number of MPI process.\\
      \verb}   Number of processor per cluster} &  
      Total number of threads.\\
      \verb}   Number of thread number per MPI process} & 
      Explicit, isn't it ?\\
      \verb}   Check the symbol matrix}  & 
      Checking symbolic matrix given for analyse step.\\ 
      \verb}   Check the solver structure} & 
      Checking solver structure built for numerical steps (factorisation,
      up-down, refinement).\\ 
      \verb}   Building elimination graph}    & All following are analyse steps\dots \\
      \verb}   Re-Building elimination graph} & \dots\\
      \verb}   Building cost matrix}          & \dots\\
      \verb}   Building elimination tree}     & \dots\\
      \verb}   Building task graph}           & \dots\\
      \verb}   Number of tasks}               & Number of tasks
      computed by analyse step.\\
      \verb}   Distributing partition}        & Distributing step.\\
      \verb}   Time to analyze}               & Analyse step.\\
      \verb}   Number of nonzeros in factorized matrice}    & Number of
      non zeros in factorized matrix computed by analyse step.\\
      \verb}P : Number of nonzeros (local block structure)} & Number of
      non zeros on processor \texttt{P}\\
      \verb}P : SolverMatrix size (without coefficients)}   & Size
      of the structure used for numerical steps on processor \texttt{P}.\\
      \verb}   Fill-in}             & Theorical fill-in of the matrix\\
      \verb}   Number of operations (LU)} & Number of operation for factorization.\\
      \verb}   Number of operations (LLt)}  & Number of operation for factorization.\\
      \verb}   Prediction Time to factorize (IBM PWR5 ESSL)} & Prediction
      time based on IBM Power5 with Blas ESSL.\\
      \verb}   Maximum coeftab size (cefficients)} & Maximum memory used
      to store values of the matrix used during factorization.\\
      \verb}   --- Sopalin : Allocation de la structure globale ---} &
      Allocating factorization structure.\\
      \verb}   --- Fin Sopalin Init                             ---} & End
      of factorization initialisation step.\\
      \verb}   --- Initialisation des tableaux globaux          ---} &
      Initialization of global arrays.\\
      \verb}   --- Sopalin : Local structure allocation         ---} & 
      Allocation of local thread structures.\\
      \verb}   --- Sopalin : Threads are NOT binded             ---} & Explicit\dots\\
      \verb}   --- Sopalin : Threads are binded                 ---} & Explicit\dots\\
      \verb}     - P : Envois X - Receptions Y          -} & Processor
      \texttt{P} will send X buffers and receive Y buffers.\\
      \verb}   --- Sopalin Begin                                ---} &
      Starting factorization.\\
      \verb}   --- Sopalin End                                  ---} & End
      of factorization.\\
      \verb}   --- Down Step                                    ---} & Explicit\dots\\
      \verb}   --- Diag Step                                    ---} & Explicit\dots\\
      \verb}   --- Up Step                                      ---} & Explicit\dots\\
      \verb}   Generate RHS for X=1}    & Generata a right-hand-side member
      such that $\forall i, X_i=1$.\\
      \verb}   Generate RHS for X=i}    & Generata a right-hand-side member
      such that $\forall i, X_i=i$.\\
      \verb}   OOC memory limit}        & Limit set for out-of-core mode.\\
      \verb}   [P] IN STEP }            & Title for out-of-core outputs on processor \texttt{P}.\\
      \verb}   [P]   written X, allocated : Y} & Amount of data written
      (\texttt{X}) and allocated (\texttt{Y}) on processor \texttt{P}
      during step \texttt{STEP}.\\
      \verb}   [P]   read}              & Amount of data read on disk on processor
      \texttt{P} during step \texttt{STEP}.\\ 
      \verb}   [P]   Allocated}         & Amount of data allocated on processor
      \texttt{P} at the end of step \texttt{STEP}.\\
      \verb}   [P]   Maximum allocated} & Maximum allocated data during
      until end of step \texttt{STEP}.\\
      \verb}    - iteration N :}        & Itération number in refinement.\\
      \verb}         time to solve}     & Time to perform up-down during
      refinement step.\\
      \verb}         total iteration time} & Total time of the iteration step.\\
      \verb}         error}                & Precision after iteration.\\
      \verb}         ||r||}                & Résidual error (ie. Ax-b) after iteration.\\ 
      \verb}         ||b||}                & Right-hand-side member's norm.\\
      \verb}         ||r||/||b||}          & Precision after iteration.\\
      \verb}   Time to fill internal csc}  & Time to fill internal
      structure from user data.\\
      \verb}   Max memory used after factorization} & Maximum memory peak
      (reduced on \texttt{MPI\_MAX}.\\
      \verb}   Memory used after factorization} & Maximum current memory
      usage after factorization.\\ 
      \verb}   Max memory used after clean} & Maximum memory peak (reduced
      on \texttt{MPI\_MAX}.\\
      \verb}   Memory used after clean} & Maximum current memory usage
      after clean (should be 0).\\
      \verb}   Static pivoting}& Number of static pivoting performed.\\
      \verb}   Inertia} &  Inertia of the matrix (Number of non zeros on
      the diagonal)\\
      \verb}   Number of tasks added by esp} & Number of task added by
      Enhanced Sparse Parallelism option.\\
      \verb}   Time to factorize} & Maximum time to perform numérical factorization.\\
      \verb}   Time to solve}     & Maximum time to perform up-down.\\
      \verb}   Refinement  X  iterations, norm=N} & Number of iterations
      during refinement and final precision.\\
      \verb}   Time for refinement} & Maximum time to perform
      refinement.\\
    \end{supertabular}
  \end{footnotesize}

%\addtolength{\oddsidemargin}{+3cm}
%\addtolength{\oddsidemargin}{+3cm}
\section{Integer and double outputs}

This section present integer and double outputs parameters.

\subsection{Integer parameters}

\begin{description}
\item{\iparm{IPARM\_NBITER}~:} Number of iteration during refinement.
\item{\iparm{IPARM\_STATIC\_PIVOTING}~:} Number of static pivoting
  during factorization.
\item{\iparm{IPARM\_NNZERO}~:} Number of non-zeros computed during
  analyse. 
\item{\iparm{IPARM\_ALLOCATED\_TERMS}~:} Number of terms allocated for
  the matrix factorization (matrix storage and communication
  buffer's, sum over MPI process).
\item{\iparm{IPARM\_NNZEROS\_BLOCK\_LOCAL}~:} Number of non zeros
  allocated in the local matrix.
\item{\iparm{IPARM\_INERTIA}~:} Inertia of the matrix (Number of non
  zeros on the diagonal).
\item{\iparm{IPARM\_ESP\_NBTASKS}~:} Number of tasks added by Enhanced
  Sparse Parallelism option.
\item{\iparm{IPARM\_ERROR\_NUMBER}~:} Error number returned (see
  \texttt{ERR\_NUMBERS} ).
\end{description}

\subsection{Double parameters}


\begin{description}
\item{\dparm{DPARM\_FILL\_IN}~:} Fill-in ratio.
\item{\dparm{DPARM\_MEM\_MAX}~:} Max memory used, during all
  execution, between all MPI process.
\item{\dparm{DPARM\_RELATIVE\_ERROR}~:} Precision of the given
  solution.
\item{\dparm{DPARM\_ANALYZE\_TIME}~:} Time to perform analyze.
\item{\dparm{DPARM\_PRED\_FACT\_TIME}~:} Predicted time to perform
  numerical factorization.
\item{\dparm{DPARM\_FACT\_TIME}~:} Time to perform numerical
  factorization. 
\item{\dparm{DPARM\_SOLV\_TIME}~:} Time to compute up-down.
\item{\dparm{DPARM\_FACT\_FLOPS}~:} Number of Floating Point
  operations per seconds during numerical factorization.
\item{\dparm{DPARM\_SOLV\_FLOPS}~:} Number of Floating Point
  operations per seconds during up-down.
\item{\dparm{DPARM\_RAFF\_TIME}~:} Refinement computation time.
\end{description}
