<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">AM</journal-id><journal-title-group><journal-title>Applied Mathematics</journal-title></journal-title-group><issn pub-type="epub">2152-7385</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/am.2015.62028</article-id><article-id pub-id-type="publisher-id">AM-53837</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Physics&amp;Mathematics</subject></subj-group></article-categories><title-group><article-title>
 
 
  Schur Complement Computations in Intel&#174; Math Kernel Library PARDISO
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>lexander</surname><given-names>Kalinkin</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Anton</surname><given-names>Anders</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Roman</surname><given-names>Anders</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Intel Corporation, Software and Services Group (SSG), Novosibirsk, Russia</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>alexander.a.kalinkin@intel.com(LK)</email>;<email>anton.anders@intel.com(AA)</email>;<email>roman.anders@intel.com(RA)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>03</day><month>02</month><year>2015</year></pub-date><volume>06</volume><issue>02</issue><fpage>304</fpage><lpage>311</lpage><history><date date-type="received"><day>11</day>	<month>January</month>	<year>2015</year></date><date date-type="rev-recd"><day>accepted</day>	<month>29</month>	<year>January</year>	</date><date date-type="accepted"><day>5</day>	<month>February</month>	<year>2015</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  This paper describes a method of calculating the Schur complement of a sparse positive definite matrix A. The main idea of this approach is to represent matrix A in the form of an elimination tree using a reordering algorithm like METIS and putting columns/rows for which the Schur complement is needed into the top node of the elimination tree. Any problem with a degenerate part of the initial matrix can be resolved with the help of iterative refinement. The proposed approach is close to the “multifrontal” one which was implemented by Ian Duff and others in 1980s. Schur complement computations described in this paper are available in Intel
  <sup>&amp;reg;</sup> Math Kernel Library (Intel
  <sup>&amp;reg;</sup> MKL). In this paper we present the algorithm for Schur complement computations, experiments that demonstrate a negligible increase in the number of elements in the factored matrix, and comparison with existing alternatives.
 
</p></abstract><kwd-group><kwd>Multifrontal Method</kwd><kwd> Direct Method</kwd><kwd> Sparse Linear System</kwd><kwd> Schur Complement</kwd><kwd> HPC</kwd><kwd> Intel&amp;reg;  MKL</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>According to F. Zhang [<xref ref-type="bibr" rid="scirp.53837-ref1">1</xref>] , the term “Schur complement” was used first by E. Haynsworth [<xref ref-type="bibr" rid="scirp.53837-ref2">2</xref>] . Haynsworth chose this term because of the lemma (Schur determinant lemma) in the paper [<xref ref-type="bibr" rid="scirp.53837-ref3">3</xref>] that was edited by Schur himself. In spite of matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x5.png" xlink:type="simple"/></inline-formula> being used in this lemma as a secondary term, later this matrix came to play an important role in mathematical algorithms as the Schur complement. It is denoted as<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x6.png" xlink:type="simple"/></inline-formula>. For example, in mathematical statistics, the Schur complement matrix is important in computation of the probability density function of multivariate normal distribution, and in computational mechanics the Schur complement matrix correlates to media stiffness.</p><p>Partial solving of systems of linear equations plays an important role in linear algebra for implementation of efficient preconditioners based on domain decomposition algorithms. Partial solutions usually involve sparse matrices. For this reason Schur complement computations and partial solving have been implemented in Intel<sup>&#174;</sup> Math Kernel Library (Intel<sup>&#174;</sup> MKL) [<xref ref-type="bibr" rid="scirp.53837-ref4">4</xref>] . This paper covers the ideas behind the implementation.</p><p>There are a number of papers that focused on efficient implementation of the Schur complement. As example, Aleksandrov and Samuel [<xref ref-type="bibr" rid="scirp.53837-ref5">5</xref>] in their paper proposed algorithm to calcluate the Schur complement for Sparse system. Yamazaki and Li published an idea [<xref ref-type="bibr" rid="scirp.53837-ref6">6</xref>] of how to implement Schur complement efficiently on cluster. And we need to mention MUMPS solver [<xref ref-type="bibr" rid="scirp.53837-ref7">7</xref>] that integrated the Schur complement computation a few years ago.</p><p>Intel<sup>&#174;</sup> MKL PARDISO [<xref ref-type="bibr" rid="scirp.53837-ref4">4</xref>] can be considered as one of the multifrontal methods that have been proposed by Duff [<xref ref-type="bibr" rid="scirp.53837-ref8">8</xref>] and further expanded by Liu [<xref ref-type="bibr" rid="scirp.53837-ref9">9</xref>] . This method is divided into three stages. First, the initial matrix undergoes a reordering procedure like the one developed by Karypis [<xref ref-type="bibr" rid="scirp.53837-ref10">10</xref>] [<xref ref-type="bibr" rid="scirp.53837-ref11">11</xref>] in order to represent it in the form of a dependency tree. Then symbolic factorization takes place, where the total number of nonzero elements is computed in LDU decomposition. And finally, factorization of the permuted matrix in the LDU form is performed like the factorization proposed in Amestoy [<xref ref-type="bibr" rid="scirp.53837-ref12">12</xref>] -[<xref ref-type="bibr" rid="scirp.53837-ref16">16</xref>] . In the last stage, both forward and backward substitutions are implemented to compute a solution for the two triangular systems.</p><p>The proposed implementation of the Schur complement continues the work of the authors in the area of multifrontal direct sparse solvers. In Kalinkin [<xref ref-type="bibr" rid="scirp.53837-ref17">17</xref>] , the basic algorithm was implemented for symmetric, positive definite matrices. In the presentations [<xref ref-type="bibr" rid="scirp.53837-ref18">18</xref>] and [<xref ref-type="bibr" rid="scirp.53837-ref19">19</xref>] , the proposed algorithm was significantly improved by balancing the dependency tree. In [<xref ref-type="bibr" rid="scirp.53837-ref20">20</xref>] , the algorithm was expanded to non-positive definite matrices and non- symmetric matrices. In this paper, we propose to move all matrix elements that correlate to Schur complement to the top of the dependency tree in order to improve parallelization of computations.</p><p>Let A be a symmetric positive definite sparse matrix (the symmetry and positive definiteness of the matrix is set in order to simplify the algorithm description avoiding the case of degenerate matrix minors):</p><disp-formula id="scirp.53837-formula358"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/8-7402597x7.png"  xlink:type="simple"/></disp-formula><p>where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x8.png" xlink:type="simple"/></inline-formula> and C are square sparse positive definite matrices, and B is a sparse rectangular matrix. Then we can make the following decomposition, which is similar to a Cholesky decomposition of matrix A:</p><disp-formula id="scirp.53837-formula359"><label>(2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/8-7402597x9.png"  xlink:type="simple"/></disp-formula><p>where</p><disp-formula id="scirp.53837-formula360"><graphic  xlink:href="http://html.scirp.org/file/8-7402597x10.png"  xlink:type="simple"/></disp-formula><p>The matrix <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x11.png" xlink:type="simple"/></inline-formula> is the Schur complement. The general approach to computing the Schur complement based on this formula and mathematical kernels can be expressed in the form of pseudocode:</p><table-wrap id="table1" ><label>Algorithm 1</label><caption><title>Simple Schur complement computational algorithm</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >1) Calculate decomposition of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x12.png" xlink:type="simple"/></inline-formula> with the factorization step of the direct solver;</th></tr></thead><tr><td align="center" valign="middle" >2) Calculate <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x13.png" xlink:type="simple"/></inline-formula> with the solving step applied to multiple right-hand sides;</td></tr><tr><td align="center" valign="middle" >3) Calculate <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x14.png" xlink:type="simple"/></inline-formula> as sparse-dense matrix-matrix multiplication;</td></tr><tr><td align="center" valign="middle" >4) Calculate <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x15.png" xlink:type="simple"/></inline-formula> as a difference.</td></tr></tbody></table></table-wrap><p>This algorithm has several significant disadvantages that can form barriers for its implementation for large sparse systems. The main disadvantage is in the step 2 of Algorithm 1 involving the conversion of sparse matrix B<sup>T</sup> into a dense matrix, which requires allocating a lot of memory for storing temporary data. Also, if we consider B<sup>T</sup> as a dense matrix a large number of zero elements are processed in multiplication <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x16.png" xlink:type="simple"/></inline-formula> B<sup>T</sup>, which would make this step one of the most computational intensive parts of the algorithm and would significantly increase the overall computational time. To prevent this, we propose the following algorithm based on the multifrontal approach which calculates the Schur complement matrix first, and then the factorization of the matrix A without significant memory requirements for the computations to proceed.</p></sec><sec id="s2"><title>2. Schur Complement Computational Algorithm</title><p>As in the papers [<xref ref-type="bibr" rid="scirp.53837-ref17">17</xref>] -[<xref ref-type="bibr" rid="scirp.53837-ref20">20</xref>] , consider a sparse symmetric matrix A<sub>loc</sub> as in the left of <xref ref-type="fig" rid="fig1">Figure 1</xref>, where each shaded block is a sparse sub-matrix and each white block is a zero sub-matrix. Using reordering algorithm procedures [<xref ref-type="bibr" rid="scirp.53837-ref10">10</xref>] [<xref ref-type="bibr" rid="scirp.53837-ref11">11</xref>] , this matrix can be rotated to the pattern shown in the right of <xref ref-type="fig" rid="fig1">Figure 1</xref>. A reordered matrix is more convenient for computations than the initial one since Cholesky decomposition can start simultaneously from several entry points (for the matrix on the right of <xref ref-type="fig" rid="fig1">Figure 1</xref>, the first, second, fourth, and fifth rows of the matrix L can be calculated independently.</p><p>Let us append the original matrix A<sub>loc</sub> stored in the sparse format with zeroes so that its nonzero pattern matches completely that of the matrix L. The elements of L in row 3 can be computed only after the elements in rows 1 and 2 are computed; similarly, element in row 6 can be computed only after elements in rows 4 and 5 are computed. The elements in the 7th row can be computed last. This allows us to construct the dependency tree [<xref ref-type="bibr" rid="scirp.53837-ref10">10</xref>] [<xref ref-type="bibr" rid="scirp.53837-ref11">11</xref>] : a graph, where each node corresponds to a single row of the matrix and each graph node can be computed only if its children (nodes on which it depends) are computed. A deeper discussion of the algorithm with pseudocode of the distribution of nodes of the tree between processes can be found in [<xref ref-type="bibr" rid="scirp.53837-ref17">17</xref>] . The dependency tree for the matrix is given in <xref ref-type="fig" rid="fig2">Figure 2</xref> (the number in the center of a node shows the row number).</p><p>Such a representation allows us to modify Algorithm 1 using the following notation: node Z<sub>j</sub> is a child of Z<sub>i</sub> if Z<sub>j</sub> resides lower than Z<sub>i</sub> in the dependency tree (<xref ref-type="fig" rid="fig2">Figure 2</xref>) and there is a connection from Z<sub>j</sub> to Z<sub>i</sub>.</p><p>where by mask<sub>i</sub>Z<sub>j</sub> we denote a submatrix built as intersection of columns corresponding to node Z<sub>i</sub> with rows corresponding to node Z<sub>j</sub>. In terms of representation in the right of the <xref ref-type="fig" rid="fig1">Figure 1</xref> that would mean the ij-th square.</p><p>To calculate the Schur complement let us add to the representation in the columns and rows of matrices B, B<sup>T</sup>, and C to achieve full representation of matrix A as in left part of the <xref ref-type="fig" rid="fig3">Figure 3</xref>. As one can see, we achieve similar representation to the <xref ref-type="fig" rid="fig2">Figure 2</xref> with additional rows corresponding to those of matrices B and C in <xref ref-type="fig" rid="fig3">Figure 3</xref></p><fig-group id="fig1"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> Nonzero pattern of the original matrix (left) and of the same matrix after reordering (right).</title></caption><fig id ="fig1_1"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x22.png"/></fig><fig id ="fig1_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x23.png"/></fig></fig-group><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Dependency tree sample</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x24.png"/></fig><fig-group id="fig3"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Nonzero pattern of matrix A after reordering of A<sub>loc</sub> (left) and its tree representation (right).</title></caption><fig id ="fig3_1"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x25.png"/></fig><fig id ="fig3_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x26.png"/></fig></fig-group><p>(right). Note that blocks corresponding to the columns and rows of matrices B<sup>T</sup>, B, and C are sparse. After factorization of the full matrix A the number of nonzero elements there increases significantly, but our experiments show that the blocks remain sparse and do not become dense.</p><p>Let’s introduce the following notation: <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x27.png" xlink:type="simple"/></inline-formula>is Z<sub>i</sub> node of the tree expanded by the corresponding rows of the matrix B<sup>T</sup>, Z<sub>C</sub> is a node of the tree corresponding to the matrix C. Then we can modify Algorithm 2 to take into account the elements of matrices B, B<sup>T</sup>, and C.</p><p><xref ref-type="fig" rid="fig4">Figure 4</xref> shows a cubic domain in which we apply seven-point approximation for a Laplace operator with mesh size <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/8-7402597x53.png" xlink:type="simple"/></inline-formula> to generate matrix A, and its cut-off through one of the axes as a domain for which we want to calculate the Schur complement (<xref ref-type="fig" rid="fig4">Figure 4</xref> (left)).</p><p><xref ref-type="fig" rid="fig4">Figure 4</xref> shows the portrait of matrix A before factorization (center) and the portrait of matrix L after factorization (right). One can see that the sparsity of L in the Schur complement columns decreased versus the sparsity of the part of L that corresponds to matrix A<sub>loc</sub>, though it stays sparse and overall the number of nonzero elements increases slightly. For this test, we see that the number of nonzero elements is only five percent higher in the case when we calculate the Schur complement (Algorithm 3) compared to the case without Schur complement calculations (straight factorization).</p><p>In <xref ref-type="fig" rid="fig5">Figure 5</xref> and <xref ref-type="fig" rid="fig6">Figure 6</xref> we compare the performance of the implemented functionality with the similar functionality provided by the MUMPS package [<xref ref-type="bibr" rid="scirp.53837-ref7">7</xref>] . We compare the time needed to compute Schur complement matrix and return it in the dense format. The last 5000 rows and columns of the matrices presented are chosen for Schur complement computations.</p><p>For <xref ref-type="fig" rid="fig5">Figure 5</xref> we chose 2 matrices from Florida Matrix collection [<xref ref-type="bibr" rid="scirp.53837-ref21">21</xref>] : Fault_639 with about 600 K rows and columns and 27 M nonzero elements, and Serena with 1.3 M rows and columns and 64 M nonzero elements. On the x axis we plotted the number of threads on the compute node used for computation of the Schur complement. One can see that the time for computing Schur complement is almost the same for a small number of threads, but the time needed for Intel MKL PARDISO solver decreases when the number of threads increases.</p><p>For <xref ref-type="fig" rid="fig6">Figure 6</xref> we chose 2 matricesfrom Florida Matrix collection [<xref ref-type="bibr" rid="scirp.53837-ref21">21</xref>] : Geo_1438 with about 1.4 M rows and columns and 602 M nonzero elements, and Flan_1565 with 1.5 M rows and columns and 114 M nonzero elements. As before, on the x axis we plotted the number of threads on the compute node used for computation of the Schur complement. Notice that overall picture does not change significantly. The main difference between this set of matrices and the previous one is in sparsity―average number of nonzero elements per row. In the first set of experiments (Fault_639 and Serena) we used sparse matrices with fewer than 50 nonzero elements per</p><fig-group id="fig4"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> A domain with a dividing plane corresponding to Schur submatrix (left), portraits of the matrix before (center) and after factorization (right).</title></caption><fig id ="fig4_1"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x54.png"/></fig><fig id ="fig4_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x55.png"/></fig><fig id ="fig4_3"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/8-7402597x56.png"/></fig></fig-group><p>row on average, while the sparsity of Flan_1565 is about 70 nonzero elements per row and the sparsity of Geo_1438 is more than 400 nonzero elements per row. In both cases the time for Schur complement computations is almost the same when the number of threads is small for the Intel MKL and MUMPS, but the time needed for Intel MKL PARDISO solver significantly decreases when the number of threads increases. Moreover, comparison of <xref ref-type="fig" rid="fig5">Figure 5</xref> and <xref ref-type="fig" rid="fig6">Figure 6</xref> indicates that the performance of Intel MKL PARDISO becomes better if sparsity increases.</p></sec><sec id="s3"><title>4. Conclusion</title><p>We demonstrated an approach that calculates the Schur complement for a sparse matrix implemented in Intel Math Kernel Library using the Intel MKL PARDISO interface. This implementation allows one to use a Schur complement for sparse matrices appearing in various mathematical applications, from statistical analysis to algebraic solvers. The proposed approach shows good scalability in terms of computational time and better performance than similar approaches proposed elsewhere.</p></sec></body><back><ref-list><title>References</title><ref id="scirp.53837-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Zhang, F. (2005) The Schur Complement and Its Applications, Series: Numerical Methods and Algorithms, Vol. 4, Springer, USA.</mixed-citation></ref><ref id="scirp.53837-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Haynsworth, E.V. (1968) On the Schur Complement. Basel Mathematical Notes, BMN 20, 17 p.</mixed-citation></ref><ref id="scirp.53837-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Schur, I. (1986) On Power Series Which Are Bounded in the Interior of the Unit Circle, Series: Operator Theory: Advances and Applications, Birkhauser, Basel, Vol. 18, 31-59.</mixed-citation></ref><ref id="scirp.53837-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Intel Math Kernel Library http://software.intel.com/en-us/intel-mkl</mixed-citation></ref><ref id="scirp.53837-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Aleksandrov, V. and Samuel, H. (2010) The Schur Complement Method and Solution of Large-Scale Geophysical Problems. Bayerisches Geoinstitut (BGI). http://karel.troja.mff.cuni.cz/documents/2010-ML-Aleksandrov.pdf</mixed-citation></ref><ref id="scirp.53837-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Yamazaki, I. and Li, S.X. (2010) On Techniques to Improve Robustness and Scalability of the Schur Complement Method. 9th International Conference on High Performance Computing for Computational Science, Berkeley, 22-25 June 2010, 14 p.</mixed-citation></ref><ref id="scirp.53837-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">MUMPS http://mumps.enseeiht.fr/</mixed-citation></ref><ref id="scirp.53837-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Duff, I.S. and Reid, J.K. (1983) The Multifrontal Solution of Indefinite Sparse Symmetric Linear. ACM Transactions on Mathematical Software, 9, 302-325. http://dx.doi.org/10.1145/356044.356047</mixed-citation></ref><ref id="scirp.53837-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Liu, J.W.H. (1992) The Multifrontal Method for Sparse Matrix Solution: Theory and Practice. SIAM Review, 34, 82- 109. http://dx.doi.org/10.1137/1034004</mixed-citation></ref><ref id="scirp.53837-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Karypis, G. and Kumar, V. (1996) Parallel Multilevel Graph Partitioning. Proceedings of the 10th International Parallel Processing Symposium, Honolulu, 15-19 April 1996, 314-319.</mixed-citation></ref><ref id="scirp.53837-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Karypis, G. and Kumar, V. (1998) A Parallel Algorithm for Multilevel Graph Partitioning and Sparse Matrix Ordering. Journal of Parallel and Distributed Computing, 48, 71-85 http://dx.doi.org/10.1006/jpdc.1997.1403</mixed-citation></ref><ref id="scirp.53837-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Amestoy, P.R., Duff, I.S., Pralet, S. and Voemel, C. (2003) Adapting a Parallel Sparse Direct Solver to Architectures with Clusters of SMPs. Parallel Computing, 29, 1645-1668. http://dx.doi.org/10.1016/j.parco.2003.05.010</mixed-citation></ref><ref id="scirp.53837-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Amestoy, P.R., Duff, I.S. and Vomel, C. (2005) Task Scheduling in an Asynchronous Distributed Memory Multifrontal Solver. SIAM Journal on Matrix Analysis and Applications, 26, 544-565.  
http://dx.doi.org/10.1137/S0895479802419877</mixed-citation></ref><ref id="scirp.53837-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Amestoy, P.R., Guermouche, A., L’Excellent, J.-Y. and Pralet, S. (2006) Hybrid Scheduling for the Parallel Solution of Linear Systems. Parallel Computing, 32, 136-156. http://dx.doi.org/10.1016/j.parco.2005.07.004</mixed-citation></ref><ref id="scirp.53837-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Amestoy, P.R. and Duff, I.S. (1993) Memory Management Issues in Sparse Multifrontal Methods on Multiprocessors. International Journal of High Performance Computing Applications, 7, 64-82.  
http://dx.doi.org/10.1177/109434209300700105</mixed-citation></ref><ref id="scirp.53837-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Amestoy, P.R., Duff, I.S., L’Excellent, J.-Y. and Koster, J. (2001) A Fully Asynchronous Multifrontal Solver Using Distributed Dynamic Scheduling. SIAM Journal on Matrix Analysis and Applications, 23, 15-41.  
http://dx.doi.org/10.1137/S0895479899358194</mixed-citation></ref><ref id="scirp.53837-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Kalinkin, A. (2013) Intel Direct Sparse Solver for Clusters, a Research Project for Solving Large Sparse Systems of Linear Algebraic Equations on Clusters. Sparse Days Meeting 2013 at CERFACS, Toulouse, 17-18 June 2013.  
http://www.cerfacs.fr/6-27085-Sparse-Days-2013.php</mixed-citation></ref><ref id="scirp.53837-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Kalinkin, A. (2013) Sparse Linear Algebra Support in Intel Math Kernel Library. Sparse Linear Algebra Solvers for High Performance Computing Workshop, Scarman House, University of Warwick, 8-9 July 2013.  
http://www2.warwick.ac.uk/fac/sci/dcs/research/pcav/linear solvers/programme/</mixed-citation></ref><ref id="scirp.53837-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Kalinkin, A. and Arturov, K. (2013) Asynchronous Approach to Memory Management in Sparse Multifrontal Methods on Multiprocessors. Applied Mathematics, 4, 33-39. http://dx.doi.org/10.4236/am.2013.412A004</mixed-citation></ref><ref id="scirp.53837-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Kalinkin, A., Anders, A. and Anders, R. (2014) Intel&lt;sup&gt;reg;&lt;/sup&gt; Math Kernel Library Parallel Direct Sparse Solver for Clusters. EAGE Workshop on High Performance Computing for Upstream, Chania, Crete, 7-10 September 2014.  
http://www.eage.org/events/index.php?evp=12682&amp;ActiveMenu=2&amp;Opendivs=s3  
http://dx.doi.org/10.3997/2214-4609.20141926</mixed-citation></ref><ref id="scirp.53837-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Davis, T.A. and Hu, Y. (2011) The University of Florida Sparse Matrix Collection. ACM Transactions on Mathematical Software, 38, 1:1-1:25. http://www.cise.ufl.edu/research/sparse/matrices</mixed-citation></ref></ref-list></back></article>