xref: /aosp_15_r20/external/eigen/bench/spbench/spbenchstyle.h (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1*bf2c3715SXin Li // This file is part of Eigen, a lightweight C++ template library
2*bf2c3715SXin Li // for linear algebra.
3*bf2c3715SXin Li //
4*bf2c3715SXin Li // Copyright (C) 2012 Désiré Nuentsa-Wakam <[email protected]>
5*bf2c3715SXin Li //
6*bf2c3715SXin Li // This Source Code Form is subject to the terms of the Mozilla
7*bf2c3715SXin Li // Public License v. 2.0. If a copy of the MPL was not distributed
8*bf2c3715SXin Li // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9*bf2c3715SXin Li 
10*bf2c3715SXin Li #ifndef SPBENCHSTYLE_H
11*bf2c3715SXin Li #define SPBENCHSTYLE_H
12*bf2c3715SXin Li 
printBenchStyle(std::ofstream & out)13*bf2c3715SXin Li void printBenchStyle(std::ofstream& out)
14*bf2c3715SXin Li {
15*bf2c3715SXin Li   out << "<xsl:stylesheet id='stylesheet' version='1.0' \
16*bf2c3715SXin Li       xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >\n \
17*bf2c3715SXin Li       <xsl:template match='xsl:stylesheet' />\n \
18*bf2c3715SXin Li       <xsl:template match='/'> <!-- Root of the document -->\n \
19*bf2c3715SXin Li       <html>\n \
20*bf2c3715SXin Li         <head> \n \
21*bf2c3715SXin Li           <style type='text/css'> \n \
22*bf2c3715SXin Li             td { white-space: nowrap;}\n \
23*bf2c3715SXin Li           </style>\n \
24*bf2c3715SXin Li         </head>\n \
25*bf2c3715SXin Li         <body>";
26*bf2c3715SXin Li   out<<"<table border='1' width='100%' height='100%'>\n \
27*bf2c3715SXin Li         <TR> <!-- Write the table header -->\n \
28*bf2c3715SXin Li         <TH>Matrix</TH> <TH>N</TH> <TH> NNZ</TH>  <TH> Sym</TH>  <TH> SPD</TH> <TH> </TH>\n \
29*bf2c3715SXin Li           <xsl:for-each select='BENCH/AVAILSOLVER/SOLVER'>\n \
30*bf2c3715SXin Li             <xsl:sort select='@ID' data-type='number'/>\n \
31*bf2c3715SXin Li             <TH>\n \
32*bf2c3715SXin Li               <xsl:value-of select='TYPE' />\n \
33*bf2c3715SXin Li               <xsl:text></xsl:text>\n \
34*bf2c3715SXin Li               <xsl:value-of select='PACKAGE' />\n \
35*bf2c3715SXin Li               <xsl:text></xsl:text>\n \
36*bf2c3715SXin Li             </TH>\n \
37*bf2c3715SXin Li           </xsl:for-each>\n \
38*bf2c3715SXin Li         </TR>";
39*bf2c3715SXin Li 
40*bf2c3715SXin Li   out<<"  <xsl:for-each select='BENCH/LINEARSYSTEM'>\n \
41*bf2c3715SXin Li           <TR> <!-- print statistics for one linear system-->\n \
42*bf2c3715SXin Li             <TH rowspan='4'> <xsl:value-of select='MATRIX/NAME' /> </TH>\n \
43*bf2c3715SXin Li             <TD rowspan='4'> <xsl:value-of select='MATRIX/SIZE' /> </TD>\n \
44*bf2c3715SXin Li             <TD rowspan='4'> <xsl:value-of select='MATRIX/ENTRIES' /> </TD>\n \
45*bf2c3715SXin Li             <TD rowspan='4'> <xsl:value-of select='MATRIX/SYMMETRY' /> </TD>\n \
46*bf2c3715SXin Li             <TD rowspan='4'> <xsl:value-of select='MATRIX/POSDEF' /> </TD>\n \
47*bf2c3715SXin Li             <TH> Compute Time </TH>\n \
48*bf2c3715SXin Li             <xsl:for-each select='SOLVER_STAT'>\n \
49*bf2c3715SXin Li               <xsl:sort select='@ID' data-type='number'/>\n \
50*bf2c3715SXin Li               <TD> <xsl:value-of select='TIME/COMPUTE' /> </TD>\n \
51*bf2c3715SXin Li             </xsl:for-each>\n \
52*bf2c3715SXin Li           </TR>";
53*bf2c3715SXin Li   out<<"  <TR>\n \
54*bf2c3715SXin Li             <TH> Solve Time </TH>\n \
55*bf2c3715SXin Li             <xsl:for-each select='SOLVER_STAT'>\n \
56*bf2c3715SXin Li               <xsl:sort select='@ID' data-type='number'/>\n \
57*bf2c3715SXin Li               <TD> <xsl:value-of select='TIME/SOLVE' /> </TD>\n \
58*bf2c3715SXin Li             </xsl:for-each>\n \
59*bf2c3715SXin Li           </TR>\n \
60*bf2c3715SXin Li           <TR>\n \
61*bf2c3715SXin Li             <TH> Total Time </TH>\n \
62*bf2c3715SXin Li             <xsl:for-each select='SOLVER_STAT'>\n \
63*bf2c3715SXin Li               <xsl:sort select='@ID' data-type='number'/>\n \
64*bf2c3715SXin Li               <xsl:choose>\n \
65*bf2c3715SXin Li                 <xsl:when test='@ID=../BEST_SOLVER/@ID'>\n \
66*bf2c3715SXin Li                   <TD style='background-color:red'> <xsl:value-of select='TIME/TOTAL' />  </TD>\n \
67*bf2c3715SXin Li                 </xsl:when>\n \
68*bf2c3715SXin Li                 <xsl:otherwise>\n \
69*bf2c3715SXin Li                   <TD>  <xsl:value-of select='TIME/TOTAL' /></TD>\n \
70*bf2c3715SXin Li                 </xsl:otherwise>\n \
71*bf2c3715SXin Li               </xsl:choose>\n \
72*bf2c3715SXin Li             </xsl:for-each>\n \
73*bf2c3715SXin Li           </TR>";
74*bf2c3715SXin Li   out<<"  <TR>\n \
75*bf2c3715SXin Li               <TH> Error </TH>\n \
76*bf2c3715SXin Li               <xsl:for-each select='SOLVER_STAT'>\n \
77*bf2c3715SXin Li                 <xsl:sort select='@ID' data-type='number'/>\n \
78*bf2c3715SXin Li                 <TD> <xsl:value-of select='ERROR' />\n \
79*bf2c3715SXin Li                 <xsl:if test='ITER'>\n \
80*bf2c3715SXin Li                   <xsl:text>(</xsl:text>\n \
81*bf2c3715SXin Li                   <xsl:value-of select='ITER' />\n \
82*bf2c3715SXin Li                   <xsl:text>)</xsl:text>\n \
83*bf2c3715SXin Li                 </xsl:if> </TD>\n \
84*bf2c3715SXin Li               </xsl:for-each>\n \
85*bf2c3715SXin Li             </TR>\n \
86*bf2c3715SXin Li           </xsl:for-each>\n \
87*bf2c3715SXin Li       </table>\n \
88*bf2c3715SXin Li     </body>\n \
89*bf2c3715SXin Li     </html>\n \
90*bf2c3715SXin Li   </xsl:template>\n \
91*bf2c3715SXin Li   </xsl:stylesheet>\n\n";
92*bf2c3715SXin Li 
93*bf2c3715SXin Li }
94*bf2c3715SXin Li 
95*bf2c3715SXin Li #endif
96