Loading src/Benchmarks/Benchmarks.h +3 −2 Original line number Diff line number Diff line Loading @@ -78,8 +78,9 @@ public: using Logger::writeHeader; Benchmark( int loops = 10, bool verbose = true ) : Logger(verbose), loops(loops) bool verbose = true, String outputMode = "" ) : Logger(verbose, outputMode), loops(loops) {} static void configSetup( Config::ConfigDescription& config ) Loading src/Benchmarks/JsonLogging.h +44 −21 Original line number Diff line number Diff line Loading @@ -88,8 +88,9 @@ public: using HeaderElements = std::vector< String >; using RowElements = JsonLoggingRowElements; JsonLogging( int verbose = true ) : verbose(verbose) JsonLogging( int verbose = true, String outputMode = "" ) : verbose(verbose), outputMode( outputMode ) {} void Loading @@ -100,18 +101,19 @@ public: void addCommonLogs( const CommonLogs& logs ) { if( this->lineStarted ) log << "," << std::endl; log << " \"benchmarks\" : [" << std::endl; int idx( 0 ); //if( this->lineStarted ) // log << "," << std::endl; //log << " \"benchmarks\" : [" << std::endl; this->commonLogs = logs; //int idx( 0 ); for( auto lg : logs ) { if( verbose ) std::cout << lg.first << " = " << lg.second << std::endl; if( idx++ > 0 ) log << "," << std::endl; log << " \"" << lg.first << "\" : \"" << lg.second; this->lineStarted = true; //if( idx++ > 0 ) // log << "," << std::endl; //log << " \"" << lg.first << "\" : \"" << lg.second << "\""; //this->lineStarted = true; } }; Loading @@ -137,14 +139,21 @@ public: TNL_ASSERT_EQ( rowEls.size(), this->logsMetadata.size(), "" ); if( this->lineStarted ) log << "," << std::endl; if( ! this->resultsStarted ) log << " {" << std::endl; // write common logs int idx( 0 ); for( auto lg : this->commonLogs ) { log << " \"results\" : [ " << std::endl; this->resultsStarted = true; //if( verbose ) // std::cout << lg.first << " = " << lg.second << std::endl; if( idx++ > 0 ) log << "," << std::endl; log << " \"" << lg.first << "\" : \"" << lg.second << "\""; } log << " {" << std::endl; auto md = this->logsMetadata.begin(); int idx( 0 ); for( auto el : rowEls ) { if( verbose ) Loading @@ -162,6 +171,9 @@ public: void writeTitle( const String & title ) { if( outputMode == "append" ) return; if( verbose ) std::cout << std::endl << "== " << title << " ==" << std::endl << std::endl; log << " \"title\" : \"" << title << "\""; Loading @@ -171,6 +183,9 @@ public: void writeMetadata( const MetadataMap & metadata ) { if( outputMode == "append" ) return; if( verbose ) std::cout << "properties:" << std::endl; Loading @@ -181,8 +196,11 @@ public: if( idx++ > 0 ) log << "," << std::endl; log << " \"" << it.first << "\" : \"" << it.second << "\""; this->lineStarted = true; //this->lineStarted = true; } log << "," << std::endl << " \"results\" : [ " << std::endl; this->lineStarted = false; if( verbose ) std::cout << std::endl; } Loading @@ -204,8 +222,9 @@ public: writeErrorMessage( const char* msg, int colspan = 1 ) { log << "\"error\" : \"" << msg << "\"" << std::endl; // initial indent string header_indent = "!"; /*header_indent = "!"; log << std::endl; for( auto & it : metadataColumns ) { log << header_indent << " " << it.first << std::endl; Loading Loading @@ -237,15 +256,17 @@ public: log << it.second << std::endl; } log << msg << std::endl; */ } void closeTable() { log << std::endl; header_indent = body_indent = ""; header_changed = true; horizontalGroups.clear(); //log << std::endl << " ]" << std::endl; log << "," << std::endl; //header_indent = body_indent = ""; //header_changed = true; //horizontalGroups.clear(); } bool save( std::ostream & logFile ) Loading Loading @@ -284,6 +305,8 @@ protected: // new JSON implementation LogsMetadata logsMetadata; CommonLogs commonLogs; String outputMode; bool lineStarted = false; bool resultsStarted = false; Loading src/Benchmarks/Logging.h +5 −2 Original line number Diff line number Diff line Loading @@ -86,8 +86,9 @@ public: using HeaderElements = std::vector< String >; using RowElements = LoggingRowElements; Logging( int verbose = true ) : verbose(verbose) Logging( int verbose = true, String outputMode = "" ) : verbose(verbose), outputMode( outputMode ) {} void Loading Loading @@ -294,6 +295,8 @@ protected: MetadataColumns metadataColumns; bool header_changed = true; std::vector< std::pair< String, int > > horizontalGroups; String outputMode; }; } // namespace Benchmarks Loading src/Benchmarks/SpMV/tnl-benchmark-spmv.h +6 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ using namespace TNL::Matrices; #include <exception> #include <ctime> // Used for file naming, so logs don't get overwritten. #include <experimental/filesystem> // check file existence using namespace TNL; using namespace TNL::Benchmarks; Loading Loading @@ -116,20 +117,23 @@ main( int argc, char* argv[] ) const String & inputFileName = parameters.getParameter< String >( "input-file" ); const String & logFileName = parameters.getParameter< String >( "log-file" ); const String & outputMode = parameters.getParameter< String >( "output-mode" ); String outputMode = parameters.getParameter< String >( "output-mode" ); const String & precision = parameters.getParameter< String >( "precision" ); const int loops = parameters.getParameter< int >( "loops" ); const int verbose = parameters.getParameter< int >( "verbose" ); const int verboseMR = parameters.getParameter< int >( "verbose-MReader" ); // open log file bool exist = std::experimental::filesystem::exists(logFileName.getString()); if( ! exist ) outputMode = ""; auto mode = std::ios::out; if( outputMode == "append" ) mode |= std::ios::app; std::ofstream logFile( logFileName.getString(), mode ); // init benchmark and common metadata SpMV::BenchmarkType benchmark( loops, verbose ); SpMV::BenchmarkType benchmark( loops, verbose, outputMode ); // prepare global metadata SpMV::BenchmarkType::MetadataMap metadata = getHardwareMetadata< Logging >(); Loading Loading
src/Benchmarks/Benchmarks.h +3 −2 Original line number Diff line number Diff line Loading @@ -78,8 +78,9 @@ public: using Logger::writeHeader; Benchmark( int loops = 10, bool verbose = true ) : Logger(verbose), loops(loops) bool verbose = true, String outputMode = "" ) : Logger(verbose, outputMode), loops(loops) {} static void configSetup( Config::ConfigDescription& config ) Loading
src/Benchmarks/JsonLogging.h +44 −21 Original line number Diff line number Diff line Loading @@ -88,8 +88,9 @@ public: using HeaderElements = std::vector< String >; using RowElements = JsonLoggingRowElements; JsonLogging( int verbose = true ) : verbose(verbose) JsonLogging( int verbose = true, String outputMode = "" ) : verbose(verbose), outputMode( outputMode ) {} void Loading @@ -100,18 +101,19 @@ public: void addCommonLogs( const CommonLogs& logs ) { if( this->lineStarted ) log << "," << std::endl; log << " \"benchmarks\" : [" << std::endl; int idx( 0 ); //if( this->lineStarted ) // log << "," << std::endl; //log << " \"benchmarks\" : [" << std::endl; this->commonLogs = logs; //int idx( 0 ); for( auto lg : logs ) { if( verbose ) std::cout << lg.first << " = " << lg.second << std::endl; if( idx++ > 0 ) log << "," << std::endl; log << " \"" << lg.first << "\" : \"" << lg.second; this->lineStarted = true; //if( idx++ > 0 ) // log << "," << std::endl; //log << " \"" << lg.first << "\" : \"" << lg.second << "\""; //this->lineStarted = true; } }; Loading @@ -137,14 +139,21 @@ public: TNL_ASSERT_EQ( rowEls.size(), this->logsMetadata.size(), "" ); if( this->lineStarted ) log << "," << std::endl; if( ! this->resultsStarted ) log << " {" << std::endl; // write common logs int idx( 0 ); for( auto lg : this->commonLogs ) { log << " \"results\" : [ " << std::endl; this->resultsStarted = true; //if( verbose ) // std::cout << lg.first << " = " << lg.second << std::endl; if( idx++ > 0 ) log << "," << std::endl; log << " \"" << lg.first << "\" : \"" << lg.second << "\""; } log << " {" << std::endl; auto md = this->logsMetadata.begin(); int idx( 0 ); for( auto el : rowEls ) { if( verbose ) Loading @@ -162,6 +171,9 @@ public: void writeTitle( const String & title ) { if( outputMode == "append" ) return; if( verbose ) std::cout << std::endl << "== " << title << " ==" << std::endl << std::endl; log << " \"title\" : \"" << title << "\""; Loading @@ -171,6 +183,9 @@ public: void writeMetadata( const MetadataMap & metadata ) { if( outputMode == "append" ) return; if( verbose ) std::cout << "properties:" << std::endl; Loading @@ -181,8 +196,11 @@ public: if( idx++ > 0 ) log << "," << std::endl; log << " \"" << it.first << "\" : \"" << it.second << "\""; this->lineStarted = true; //this->lineStarted = true; } log << "," << std::endl << " \"results\" : [ " << std::endl; this->lineStarted = false; if( verbose ) std::cout << std::endl; } Loading @@ -204,8 +222,9 @@ public: writeErrorMessage( const char* msg, int colspan = 1 ) { log << "\"error\" : \"" << msg << "\"" << std::endl; // initial indent string header_indent = "!"; /*header_indent = "!"; log << std::endl; for( auto & it : metadataColumns ) { log << header_indent << " " << it.first << std::endl; Loading Loading @@ -237,15 +256,17 @@ public: log << it.second << std::endl; } log << msg << std::endl; */ } void closeTable() { log << std::endl; header_indent = body_indent = ""; header_changed = true; horizontalGroups.clear(); //log << std::endl << " ]" << std::endl; log << "," << std::endl; //header_indent = body_indent = ""; //header_changed = true; //horizontalGroups.clear(); } bool save( std::ostream & logFile ) Loading Loading @@ -284,6 +305,8 @@ protected: // new JSON implementation LogsMetadata logsMetadata; CommonLogs commonLogs; String outputMode; bool lineStarted = false; bool resultsStarted = false; Loading
src/Benchmarks/Logging.h +5 −2 Original line number Diff line number Diff line Loading @@ -86,8 +86,9 @@ public: using HeaderElements = std::vector< String >; using RowElements = LoggingRowElements; Logging( int verbose = true ) : verbose(verbose) Logging( int verbose = true, String outputMode = "" ) : verbose(verbose), outputMode( outputMode ) {} void Loading Loading @@ -294,6 +295,8 @@ protected: MetadataColumns metadataColumns; bool header_changed = true; std::vector< std::pair< String, int > > horizontalGroups; String outputMode; }; } // namespace Benchmarks Loading
src/Benchmarks/SpMV/tnl-benchmark-spmv.h +6 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ using namespace TNL::Matrices; #include <exception> #include <ctime> // Used for file naming, so logs don't get overwritten. #include <experimental/filesystem> // check file existence using namespace TNL; using namespace TNL::Benchmarks; Loading Loading @@ -116,20 +117,23 @@ main( int argc, char* argv[] ) const String & inputFileName = parameters.getParameter< String >( "input-file" ); const String & logFileName = parameters.getParameter< String >( "log-file" ); const String & outputMode = parameters.getParameter< String >( "output-mode" ); String outputMode = parameters.getParameter< String >( "output-mode" ); const String & precision = parameters.getParameter< String >( "precision" ); const int loops = parameters.getParameter< int >( "loops" ); const int verbose = parameters.getParameter< int >( "verbose" ); const int verboseMR = parameters.getParameter< int >( "verbose-MReader" ); // open log file bool exist = std::experimental::filesystem::exists(logFileName.getString()); if( ! exist ) outputMode = ""; auto mode = std::ios::out; if( outputMode == "append" ) mode |= std::ios::app; std::ofstream logFile( logFileName.getString(), mode ); // init benchmark and common metadata SpMV::BenchmarkType benchmark( loops, verbose ); SpMV::BenchmarkType benchmark( loops, verbose, outputMode ); // prepare global metadata SpMV::BenchmarkType::MetadataMap metadata = getHardwareMetadata< Logging >(); Loading