\contentsline {chapter}{\numberline {1}About \textsc {PaStiX}{}}{4}{chapter.1}
\contentsline {section}{\numberline {1.1}Introduction}{4}{section.1.1}
\contentsline {section}{\numberline {1.2}Ordering}{4}{section.1.2}
\contentsline {section}{\numberline {1.3}Symbolic factorization}{6}{section.1.3}
\contentsline {section}{\numberline {1.4}Distribution and scheduling.}{6}{section.1.4}
\contentsline {section}{\numberline {1.5}Factorization}{7}{section.1.5}
\contentsline {section}{\numberline {1.6}Solve}{7}{section.1.6}
\contentsline {section}{\numberline {1.7}Refinement}{7}{section.1.7}
\contentsline {subsection}{\numberline {1.7.1}GMRES}{7}{subsection.1.7.1}
\contentsline {subsection}{\numberline {1.7.2}Conjuguate gradiant}{7}{subsection.1.7.2}
\contentsline {subsection}{\numberline {1.7.3}Simple iterative refinement}{7}{subsection.1.7.3}
\contentsline {section}{\numberline {1.8}Out-of-core}{8}{section.1.8}
\contentsline {chapter}{\numberline {2}Compilation of \textsc {PaStiX}{}}{9}{chapter.2}
\contentsline {section}{\numberline {2.1}Quick compilation of \textsc {PaStiX}{}}{9}{section.2.1}
\contentsline {subsection}{\numberline {2.1.1}Pre-requirement}{9}{subsection.2.1.1}
\contentsline {subsection}{\numberline {2.1.2}compilation}{9}{subsection.2.1.2}
\contentsline {section}{\numberline {2.2}Makefile keywords}{10}{section.2.2}
\contentsline {section}{\numberline {2.3}Compilation flags}{10}{section.2.3}
\contentsline {subsection}{\numberline {2.3.1}Integer types}{10}{subsection.2.3.1}
\contentsline {subsection}{\numberline {2.3.2}Coefficients}{10}{subsection.2.3.2}
\contentsline {subsection}{\numberline {2.3.3}MPI and Threads}{10}{subsection.2.3.3}
\contentsline {subsection}{\numberline {2.3.4}Ordering}{11}{subsection.2.3.4}
\contentsline {subsection}{\numberline {2.3.5}\texttt {NUMA} aware library}{11}{subsection.2.3.5}
\contentsline {subsection}{\numberline {2.3.6}Statistics}{11}{subsection.2.3.6}
\contentsline {subsubsection}{Memory usage}{11}{section*.2}
\contentsline {subsection}{\numberline {2.3.7}Out-of-core}{11}{subsection.2.3.7}
\contentsline {subsection}{\numberline {2.3.8}Python wrapper}{12}{subsection.2.3.8}
\contentsline {chapter}{\numberline {3}\textsc {PaStiX}{} options}{13}{chapter.3}
\contentsline {section}{\numberline {3.1}Global parameters}{13}{section.3.1}
\contentsline {subsection}{\numberline {3.1.1}Verbosity level}{13}{subsection.3.1.1}
\contentsline {subsection}{\numberline {3.1.2}Indicating the steps to execute}{13}{subsection.3.1.2}
\contentsline {subsection}{\numberline {3.1.3}Symmetry}{13}{subsection.3.1.3}
\contentsline {subsection}{\numberline {3.1.4}Threads}{14}{subsection.3.1.4}
\contentsline {subsection}{\numberline {3.1.5}Matrix descriprion}{14}{subsection.3.1.5}
\contentsline {section}{\numberline {3.2}Initialisation}{14}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Description}{14}{subsection.3.2.1}
\contentsline {subsection}{\numberline {3.2.2}Parameters}{15}{subsection.3.2.2}
\contentsline {section}{\numberline {3.3}Ordering}{15}{section.3.3}
\contentsline {subsection}{\numberline {3.3.1}Description}{15}{subsection.3.3.1}
\contentsline {subsection}{\numberline {3.3.2}Parameters}{15}{subsection.3.3.2}
\contentsline {section}{\numberline {3.4}Symbolic factorisation}{16}{section.3.4}
\contentsline {subsection}{\numberline {3.4.1}Description}{16}{subsection.3.4.1}
\contentsline {subsection}{\numberline {3.4.2}Parameters}{16}{subsection.3.4.2}
\contentsline {section}{\numberline {3.5}Analyse}{16}{section.3.5}
\contentsline {subsection}{\numberline {3.5.1}Description}{16}{subsection.3.5.1}
\contentsline {subsection}{\numberline {3.5.2}Parameters}{16}{subsection.3.5.2}
\contentsline {subsection}{\numberline {3.5.3}Output}{16}{subsection.3.5.3}
\contentsline {section}{\numberline {3.6}Numerical factorisation}{16}{section.3.6}
\contentsline {subsection}{\numberline {3.6.1}Description}{16}{subsection.3.6.1}
\contentsline {subsection}{\numberline {3.6.2}Parameters}{17}{subsection.3.6.2}
\contentsline {subsection}{\numberline {3.6.3}Ouputs}{17}{subsection.3.6.3}
\contentsline {section}{\numberline {3.7}Solve}{17}{section.3.7}
\contentsline {subsection}{\numberline {3.7.1}Description}{17}{subsection.3.7.1}
\contentsline {subsection}{\numberline {3.7.2}Parameters}{17}{subsection.3.7.2}
\contentsline {subsection}{\numberline {3.7.3}Ouputs}{17}{subsection.3.7.3}
\contentsline {section}{\numberline {3.8}Refinement}{17}{section.3.8}
\contentsline {subsection}{\numberline {3.8.1}Description}{17}{subsection.3.8.1}
\contentsline {subsection}{\numberline {3.8.2}Parameters}{18}{subsection.3.8.2}
\contentsline {subsection}{\numberline {3.8.3}Output}{18}{subsection.3.8.3}
\contentsline {section}{\numberline {3.9}Clean}{18}{section.3.9}
\contentsline {chapter}{\numberline {4}\textsc {PaStiX}{} functions}{19}{chapter.4}
\contentsline {section}{\numberline {4.1}Original sequential interface}{19}{section.4.1}
\contentsline {subsection}{\numberline {4.1.1}The main function}{19}{subsection.4.1.1}
\contentsline {section}{\numberline {4.2}Original Distributed Matrix Interface}{20}{section.4.2}
\contentsline {subsection}{\numberline {4.2.1}A distributed CSC}{20}{subsection.4.2.1}
\contentsline {subsection}{\numberline {4.2.2}Usage of the distributed interface}{21}{subsection.4.2.2}
\contentsline {subsection}{\numberline {4.2.3}The distributed interface prototype}{21}{subsection.4.2.3}
\contentsline {section}{\numberline {4.3}\texttt {Murge} : Uniformized Distributed Matrix Interface}{21}{section.4.3}
\contentsline {subsection}{\numberline {4.3.1}Description}{21}{subsection.4.3.1}
\contentsline {subsection}{\numberline {4.3.2}Additional specific functions for \textsc {PaStiX}{}}{23}{subsection.4.3.2}
\contentsline {subsubsection}{MURGE\_Analyze}{23}{section*.3}
\contentsline {subsubsection}{MURGE\_Factorize}{23}{section*.4}
\contentsline {subsubsection}{MURGE\_SetOrdering}{23}{section*.5}
\contentsline {subsubsection}{MURGE\_ForceNoFacto}{24}{section*.6}
\contentsline {subsubsection}{MURGE\_GetLocalProduct}{24}{section*.7}
\contentsline {subsubsection}{MURGE\_GetGlobalProduct}{24}{section*.8}
\contentsline {subsubsection}{MURGE\_SetLocalNodeList}{25}{section*.9}
\contentsline {subsubsection}{MURGE\_AssemblySetSequence}{25}{section*.10}
\contentsline {subsubsection}{MURGE\_AssemblyUseSequence}{26}{section*.11}
\contentsline {subsubsection}{MURGE\_AssemblyDeleteSequence}{26}{section*.12}
\contentsline {section}{\numberline {4.4}Auxiliary \textsc {PaStiX}{} functions}{27}{section.4.4}
\contentsline {subsection}{\numberline {4.4.1}Distributed mode dedicated functions}{27}{subsection.4.4.1}
\contentsline {subsubsection}{Getting local nodes number}{27}{section*.13}
\contentsline {subsubsection}{Getting local nodes list}{27}{section*.14}
\contentsline {subsubsection}{Getting local unknowns number}{27}{section*.15}
\contentsline {subsubsection}{Getting local unknowns list}{28}{section*.16}
\contentsline {subsection}{\numberline {4.4.2}Binding thread}{28}{subsection.4.4.2}
\contentsline {subsection}{\numberline {4.4.3}Working on CSC or CSCD}{29}{subsection.4.4.3}
\contentsline {subsubsection}{Checking and correcting the CSC or CSCD matrix}{29}{section*.17}
\contentsline {subsubsection}{Checking the symetry of a CSCD}{30}{section*.18}
\contentsline {subsubsection}{Correcting the symetry of a CSCD}{30}{section*.19}
\contentsline {subsubsection}{Adding a CSCD into an other one}{31}{section*.20}
\contentsline {subsubsection}{Building a CSCD from a CSC}{31}{section*.21}
\contentsline {subsubsection}{Changing a CSCD distribution}{33}{section*.22}
\contentsline {subsection}{\numberline {4.4.4}Schur complement}{34}{subsection.4.4.4}
\contentsline {subsubsection}{Indicating schur complement indices}{34}{section*.23}
\contentsline {subsubsection}{Getting a copy the schur complement}{35}{section*.24}
\contentsline {subsubsection}{Getting schur distribution}{35}{section*.25}
\contentsline {subsubsection}{Setting memory allocation to store the schur}{37}{section*.26}
\contentsline {section}{\numberline {4.5}Multi-arithmetic}{37}{section.4.5}
\contentsline {chapter}{\numberline {5}\textsc {SWIG} python wrapper}{39}{chapter.5}
\contentsline {section}{\numberline {5.1}Requirement}{39}{section.5.1}
\contentsline {section}{\numberline {5.2}Building the python wrapper}{39}{section.5.2}
\contentsline {section}{\numberline {5.3}Example}{39}{section.5.3}
\contentsline {chapter}{\numberline {6}Examples}{40}{chapter.6}
\contentsline {section}{\numberline {6.1}Examples in \texttt {C}}{40}{section.6.1}
\contentsline {subsection}{\numberline {6.1.1}Parameters}{40}{subsection.6.1.1}
\contentsline {subsection}{\numberline {6.1.2}\texttt {simple.c}}{41}{subsection.6.1.2}
\contentsline {subsection}{\numberline {6.1.3}\texttt {simple\_dist.c}}{41}{subsection.6.1.3}
\contentsline {subsection}{\numberline {6.1.4}\texttt {do\_not\_redispatch\_rhs.c}}{41}{subsection.6.1.4}
\contentsline {subsection}{\numberline {6.1.5}\texttt {step-by-step.c}}{41}{subsection.6.1.5}
\contentsline {subsection}{\numberline {6.1.6}\texttt {step-by-step\_dist.c}}{41}{subsection.6.1.6}
\contentsline {subsection}{\numberline {6.1.7}\texttt {reentrant.c}}{41}{subsection.6.1.7}
\contentsline {subsection}{\numberline {6.1.8}\texttt {multi-comm.c}}{42}{subsection.6.1.8}
\contentsline {subsection}{\numberline {6.1.9}\texttt {multi-comm-step.c}}{42}{subsection.6.1.9}
\contentsline {subsection}{\numberline {6.1.10}\texttt {schur.c}}{42}{subsection.6.1.10}
\contentsline {subsection}{\numberline {6.1.11}\texttt {isolate\_zeros.c}}{42}{subsection.6.1.11}
\contentsline {section}{\numberline {6.2}Examples in \texttt {Fortran}}{42}{section.6.2}
\contentsline {subsection}{\numberline {6.2.1}Parameters}{42}{subsection.6.2.1}
\contentsline {subsection}{\numberline {6.2.2}\texttt {fsimple.f90}}{42}{subsection.6.2.2}
\contentsline {subsection}{\numberline {6.2.3}\texttt {fstep-by-step.f90}}{42}{subsection.6.2.3}
\contentsline {subsection}{\numberline {6.2.4}\texttt {Murge-Fortran.f90}}{43}{subsection.6.2.4}
\contentsline {chapter}{\numberline {7}Outputs}{44}{chapter.7}
\contentsline {section}{\numberline {7.1}Logs}{44}{section.7.1}
\contentsline {subsection}{\numberline {7.1.1}Controling output logs}{44}{subsection.7.1.1}
\contentsline {subsection}{\numberline {7.1.2}Interpreting output logs}{44}{subsection.7.1.2}
\contentsline {section}{\numberline {7.2}Integer and double outputs}{46}{section.7.2}
\contentsline {subsection}{\numberline {7.2.1}Integer parameters}{46}{subsection.7.2.1}
\contentsline {subsection}{\numberline {7.2.2}Double parameters}{46}{subsection.7.2.2}
