Commit 5bb35300 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Benchmarks: refactored HeaderElements back to plain vector of strings

Specifying the widths using pairs is just ugly and backwards
incompatible. Changed to specifying using two vectors.
parent 358923c9
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -45,12 +45,12 @@ struct BenchmarkResult

   virtual HeaderElements getTableHeader() const
   {
      return HeaderElements( {
         std::pair< String, int >( "time", 8 ),
         std::pair< String, int >( "stddev", 8 ),
         std::pair< String, int >( "stddev/time", 8 ),
         std::pair< String, int >( "bandwidth", 8 ),
         std::pair< String, int >( "speedup", 8 ) } );
      return HeaderElements({ "time", "stddev", "stddev/time", "bandwidth", "speedup" });
   }

   virtual std::vector< int > getColumnWidthHints() const
   {
      return std::vector< int >({ 8, 8, 8, 8, 8 });
   }

   virtual RowElements getRowElements() const
+18 −9
Original line number Diff line number Diff line
@@ -84,9 +84,10 @@ public:
   using MetadataColumns = std::vector<MetadataElement>;

   using CommonLogs = std::vector< std::pair< const char*, String > >;
   using LogsMetadata = std::vector< std::pair< String, int > >;
   using LogsMetadata = HeaderElements;
   using WidthHints = std::vector< int >;

   using HeaderElements = std::vector< std::pair< String, int > >;
   using HeaderElements = std::vector< String >;
   using RowElements = JsonLoggingRowElements;

   JsonLogging( int verbose = true,
@@ -113,19 +114,25 @@ public:
      }
   };

   void resetLogsMetada() { this->logsMetadata.clear(); };
   void resetLogsMetada()
   {
      this->logsMetadata.clear();
      this->widthHints.clear();
   }

   void addLogsMetadata( const std::vector< std::pair< String, int > >& md )
   void addLogsMetadata( const LogsMetadata& md, const WidthHints& widths )
   {
      this->logsMetadata.insert( this->logsMetadata.end(), md.begin(), md.end() );
      this->widthHints.insert( this->widthHints.end(), widths.begin(), widths.end() );
   }

   void writeHeader()
   {
      TNL_ASSERT_EQ( this->logsMetadata.size(), this->widthHints.size(), "" );
      if( verbose )
      {
         for( auto md : this->logsMetadata )
            std::cout << std::setw( md.second ) << md.first;
         for( std::size_t i = 0; i < this->logsMetadata.size(); i++ )
            std::cout << std::setw( this->widthHints[ i ] ) << this->logsMetadata[ i ];
         std::cout << std::endl;
      }
   }
@@ -147,14 +154,15 @@ public:
         log << "         \"" << lg.first << "\" : \"" << lg.second << "\"";
      }

      auto md = this->logsMetadata.begin();
      std::size_t i = 0;
      for( auto el : rowEls )
      {
         if( verbose )
            std::cout << std::setw( md->second ) << el;
            std::cout << std::setw( this->widthHints[ i ] ) << el;
         if( idx++ > 0 )
            log << "," << std::endl;
         log << "         \"" << md++->first << "\" : \"" << el << "\"";
         log << "         \"" << this->logsMetadata[ i ] << "\" : \"" << el << "\"";
         i++;
      }
      log << std::endl << "      }";
      this->lineStarted = true;
@@ -256,6 +264,7 @@ protected:

   // new JSON implementation
   LogsMetadata logsMetadata;
   WidthHints widthHints;
   CommonLogs commonLogs;
   String outputMode;

+1 −9
Original line number Diff line number Diff line
@@ -145,15 +145,7 @@ benchmarkSolver( Benchmark<>& benchmark,

      virtual HeaderElements getTableHeader() const override
      {
         return HeaderElements( {
            std::pair< String, int >( "time", 8 ),
            std::pair< String, int >( "stddev", 8 ),
            std::pair< String, int >( "stddev/time", 8 ),
            std::pair< String, int >( "speedup", 8 ),
            std::pair< String, int >( "converged", 8 ),
            std::pair< String, int >( "iterations", 8 ),
            std::pair< String, int >( "residue_precond", 8 ),
            std::pair< String, int >( "residue_true", 8 ) } );
         return HeaderElements({ "time", "stddev", "stddev/time", "speedup", "converged", "iterations", "residue_precond", "residue_true" });
      }

      virtual RowElements getRowElements() const override
+3 −3
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public:

   using CommonLogs = std::vector< std::pair< const char*, String > >;

   using HeaderElements = std::vector< std::pair< String, int > >;
   using HeaderElements = std::vector< String >;
   using RowElements = LoggingRowElements;

   Logging( int verbose = true,
@@ -149,7 +149,7 @@ public:
         std::cout << std::setw( 15 ) << "";

         for( auto & it : subElements ) {
            std::cout << std::setw( 15 ) << it.first;
            std::cout << std::setw( 15 ) << it;
         }
         std::cout << std::endl;

@@ -178,7 +178,7 @@ public:

      log << header_indent << " " << spanningElement << std::endl;
      for( auto & it : subElements ) {
         log << header_indent << "! " << it.first << std::endl;
         log << header_indent << "! " << it << std::endl;
      }

      if( horizontalGroups.size() > 0 ) {
+6 −11
Original line number Diff line number Diff line
@@ -45,17 +45,12 @@ struct SpmvBenchmarkResult

   virtual HeaderElements getTableHeader() const override
   {
      return HeaderElements( {
         std::pair< String, int >( "format", 35 ),
         std::pair< String, int >( "device", 12 ),
         std::pair< String, int >( "non-zeros", 12 ),
         std::pair< String, int >( "time", 12 ),
         std::pair< String, int >( "stddev", 12 ),
         std::pair< String, int >( "stddev/time", 14 ),
         std::pair< String, int >( "bandwidth", 12 ),
         std::pair< String, int >( "speedup", 12 ),
         std::pair< String, int >( "CSR Diff.Max", 14 ),
         std::pair< String, int >( "CSR Diff.L2", 14 ) } );
      return HeaderElements({ "format", "device", "non-zeros", "time", "stddev", "stddev/time", "bandwidth", "speedup", "CSR Diff.Max", "CSR Diff.L2" });
   }

   virtual std::vector< int > getColumnWidthHints() const override
   {
      return std::vector< int >({ 35, 12, 12, 12, 12, 14, 12, 12, 14, 14 });
   }

   void setFormat( const String& format ) { this->format = format; };
Loading