From fdc38e75ccb2352d76450b1257fcd8563af68936 Mon Sep 17 00:00:00 2001 From: Tomas Oberhuber <tomas.oberhuber@fjfi.cvut.cz> Date: Tue, 10 Jun 2014 17:45:43 +0200 Subject: [PATCH] Programming the SPMV benchmark. --- tests/benchmarks/share/tnl-log-to-html.py | 138 +++++++++++++++++++++- 1 file changed, 132 insertions(+), 6 deletions(-) diff --git a/tests/benchmarks/share/tnl-log-to-html.py b/tests/benchmarks/share/tnl-log-to-html.py index 3875767552..14dcbdd70e 100644 --- a/tests/benchmarks/share/tnl-log-to-html.py +++ b/tests/benchmarks/share/tnl-log-to-html.py @@ -2,11 +2,68 @@ import sys; +class tableColumn: + def __init__( self, level, label ): + self.level = level + self.maxLevel = 0 + self.height = 0 + self.label = label + self.subcolumns = [] + self.numberOfSubcolumns = 0 + self.rowspan = 0 + + def insertSubcolumn( self, level, label ): + if level > self.maxLevel: + self.maxLevel = level + if level == self.level + 1: + self.subcolumns.append( tableColumn( level, label ) ) + if level > self.level + 1: + self.subcolumns[ len( self.subcolumns ) - 1 ].insertSubcolumn( level, label ) + + def countSubcolumns( self ): + if( len( self.subcolumns ) == 0 ): + return 1 + self.numberOfSubcolumns = 0; + for subcolumn in self.subcolumns: + self.numberOfSubcolumns = self.numberOfSubcolumns + subcolumn.countSubcolumns() + return self.numberOfSubcolumns + + def countHeight( self ): + self.height = 1; + if len( self.subcolumns ) == 0: + return 1 + for subcolumn in self.subcolumns: + self.height = max( self.height, subcolumn.countHeight() + 1 ) + return self.height + + def countRowspan( self, height ): + self.rowspan = height - self.height + 1 + print "Setting rowspan of ", self.label, " to ", self.rowspan + for subcolumn in self.subcolumns: + subcolumn.countRowspan( self.height - 1 ) + + def recomputeLevel( self, level ): + self.level = level + for subcolumn in self.subcolumns: + subcolumn.recomputeLevel( self.level + self.rowspan ) + + def writeToColumnsHeader( self, htmlFile, height, currentLevel ): + if currentLevel > self.level: + for subcolumn in self.subcolumns: + subcolumn.writeToColumnsHeader( htmlFile, self.height , currentLevel ) + if currentLevel == self.level: + print "Label = ", self.label, " self.height = ", self.height, " height = ", height + htmlFile.write( " <td rowspan=" + str( self.rowspan ) + " colspan=" + str( self.numberOfSubcolumns) + ">" + self.label + "</td>\n" ) + + class logToHtmlConvertor: + def __init__( self ): + self.tableColumns = [] + self.maxLevel = 0 + def processFile( self, logFileName, htmlFileName ): - print "Processing file", logFileName print "Writing output to", htmlFileName logFile = open( logFileName, 'r' ) @@ -15,15 +72,84 @@ class logToHtmlConvertor: htmlFile.close() logFile.close() - def writeHtmlHeader( self, htmlFile, logFile ): - htmlFile.write("<html>" ) - htmlFile.write(" <body>" ) + def initColumnsStructure( self, logFile ): for line in logFile: if line[ 0 ] != '#': return data = line[1:] - leadingSpaces = len( data ) - len( data.lstrip(' ') ) - print "Leading spaces", leadingSpaces + level = len( data ) - len( data.lstrip(' ') ) + level = level + 1 + label = data.lstrip( ' ') + label = label.rstrip( '\n' ) + print " Inserting column on level ", level, " and label ", label + if level > self.maxLevel: + self.maxLevel = level; + if level == 1: + self.tableColumns.append( tableColumn( 1, label ) ) + if level > 1: + self.tableColumns[ len( self.tableColumns ) - 1 ].insertSubcolumn( level, label ) + + def countSubcolumns( self ): + for subcolumn in self.tableColumns: + subcolumn.countSubcolumns(); + + def countHeight( self ): + for subcolumn in self.tableColumns: + subcolumn.countHeight(); + + def countRowspan( self ): + for subcolumn in self.tableColumns: + subcolumn.countRowspan( self.maxLevel ) + + def recomputeLevel( self ): + for subcolumn in self.tableColumns: + subcolumn.recomputeLevel( 1 ) + + def writeColumnsHeader( self, htmlFile ): + level = 1 + while level <= self.maxLevel: + print "Writing columns on level ", level + htmlFile.write( " <tr>\n") + for column in self.tableColumns: + column.writeToColumnsHeader( htmlFile, self.maxLevel, level ) + htmlFile.write( " </tr>\n") + print "-------------------------------" + level = level + 1 + + def writeTable( self, logFile, htmlFile ): + firstLine = "true" + for line in logFile: + if len( line ) == 1: + if firstLine == "true": + htmlFile.write( " <tr>\n" ) + firstLine = "false" + else: + htmlFile.write( " </tr>\n" ) + htmlFile.write( " <tr>\n" ) + else: + htmlFile.write( " <td>" ) + line = line.lstrip( ' ' ) + line = line.rstrip( '\n' ) + htmlFile.write( line ) + htmlFile.write( " </td>" ) + htmlFile.write( " </tr>\n" ) + + def writeHtmlHeader( self, htmlFile, logFile ): + htmlFile.write( "<html>\n" ) + htmlFile.write( " <body>\n" ) + htmlFile.write( " <table border=1>\n") + self.initColumnsStructure( logFile ) + self.countSubcolumns() + self.countHeight() + self.countRowspan() + self.recomputeLevel() + self.writeColumnsHeader( htmlFile ) + self.writeTable( logFile, htmlFile ) + htmlFile.write( " </table>\n") + htmlFile.write( " </body>\n" ) + htmlFile.write( "</html>\n" ) + print "Max level = ", self.maxLevel + arguments = sys.argv[ 1: ] -- GitLab