\contentsline {section}{Abstract}{1} \contentsline {section}{\numberline {1}Introduction}{2} \contentsline {section}{\numberline {2}Algorithm Descriptions}{4} \contentsline {subsection}{\numberline {2.1}Processor Performance}{4} \contentsline {subsection}{\numberline {2.2}Multicolor Ordering}{5} \contentsline {subsection}{\numberline {2.3}Communication Efficiency}{6} \contentsline {section}{\numberline {3}The {\it BlockSolve95}\ Computing Environment}{8} \contentsline {subsection}{\numberline {3.1}Initializing and Finalizing the {\it BlockSolve95}\ Environment}{8} \contentsline {subsection}{\numberline {3.2}The {\it BlockSolve95}\ Context {\tt BSprocinfo}}{8} \contentsline {subsubsection}{\numberline {3.2.1}Parallel Environment Options}{8} \contentsline {subsubsection}{\numberline {3.2.2}Factorization Options}{9} \contentsline {subsubsection}{\numberline {3.2.3}Solver Options}{11} \contentsline {section}{\numberline {4}The User Matrix Data Structure {\tt BSspmat}}{12} \contentsline {subsection}{\numberline {4.1}The Easy Way to Convert Your Data to {\tt BSspmat}}{12} \contentsline {subsection}{\numberline {4.2}The Advanced Way to Convert Matrix Data to {\tt BSspmat}}{13} \contentsline {section}{\numberline {5}Manipulating and Solving Sparse Systems}{16} \contentsline {subsection}{\numberline {5.1}Manipulation and Setup}{16} \contentsline {subsubsection}{\numberline {5.1.1}Symmetric and Nonsymmetric Matrices}{16} \contentsline {subsubsection}{\numberline {5.1.2}Fast Reorderings for Different Matrix Nonzero Values}{16} \contentsline {subsubsection}{\numberline {5.1.3}Diagonal Scaling of the Linear System}{17} \contentsline {subsubsection}{\numberline {5.1.4}The Communication Data Structure {\tt BScomm}}{17} \contentsline {subsubsection}{\numberline {5.1.5}Computing an Incomplete Factorization}{18} \contentsline {subsubsection}{\numberline {5.1.6}What to Do If the Factorization Fails}{18} \contentsline {subsection}{\numberline {5.2}Solving the Linear System}{19} \contentsline {subsection}{\numberline {5.3}Freeing Matrices}{20} \contentsline {section}{\numberline {6}Error Checking, Flop Counting, Message Passing, and the BLAS}{21} \contentsline {subsection}{\numberline {6.1}Error Checking within {\it BlockSolve95}}{21} \contentsline {subsection}{\numberline {6.2}Flop Counting}{21} \contentsline {subsection}{\numberline {6.3}Matrix Statistics}{22} \contentsline {subsection}{\numberline {6.4}Blocking and Nonblocking Messages}{22} \contentsline {subsection}{\numberline {6.5}MPI Communicators and Message Number Conflicts}{22} \contentsline {subsection}{\numberline {6.6}Inline Macros for the BLAS}{23} \contentsline {section}{\numberline {7}Installation}{24} \contentsline {subsection}{\numberline {7.1}Other Libraries}{24} \contentsline {subsection}{\numberline {7.2}UNIX {\tt man} Pages}{24} \contentsline {subsection}{\numberline {7.3}Availability of {\it BlockSolve95}}{24} \contentsline {subsection}{\numberline {7.4}Differences between Previous {\em BlockSolve} Versions}{25} \contentsline {section}{\numberline {8}Example Programs}{26} \contentsline {section}{\numberline {9}Limitations and Future Plans}{29} \contentsline {section}{\numberline {10}Related Software}{30} \contentsline {section}{Acknowledgments}{31} \contentsline {section}{References}{32} \contentsline {section}{Subject Index}{32} \contentsline {section}{Function Index}{34}