@@ -31,28 +31,48 @@ namespace KINETO_NAMESPACE {
3131
3232static constexpr int kSchemaVersion = 1 ;
3333
34- static void writeHeader (std::ofstream& stream) {
35- stream << fmt::format (R"JSON(
34+ void ChromeTraceLogger::handleTraceStart (
35+ const std::unordered_map<std::string, std::string>& metadata) {
36+ traceOf_ << fmt::format (R"JSON(
3637{{
3738 "schemaVersion": {},
38- "traceEvents": [
3939 )JSON" , kSchemaVersion );
40+
41+ if (!metadata.empty ()) {
42+ traceOf_ << R"JSON(
43+ "metadata": {
44+ )JSON" ;
45+ bool first = true ;
46+ for (const auto & kv : metadata) {
47+ if (!first) {
48+ traceOf_ << " ,\n " ;
49+ }
50+ traceOf_ << fmt::format (R"( "{}": "{}")" , kv.first , kv.second );
51+ first = false ;
52+ }
53+ traceOf_ << R"JSON(
54+ },
55+ )JSON" ;
56+ }
57+
58+ traceOf_ << R"JSON(
59+ "traceEvents": [
60+ )JSON" ;
4061}
4162
42- static void openTraceFile (std::string& name, std::ofstream& stream ) {
43- stream .open (name , std::ofstream::out | std::ofstream::trunc);
44- if (!stream ) {
45- PLOG (ERROR) << " Failed to open '" << name << " '" ;
63+ void ChromeTraceLogger::openTraceFile ( ) {
64+ traceOf_ .open (fileName_ , std::ofstream::out | std::ofstream::trunc);
65+ if (!traceOf_ ) {
66+ PLOG (ERROR) << " Failed to open '" << fileName_ << " '" ;
4667 } else {
47- LOG (INFO) << " Tracing to " << name;
48- writeHeader (stream);
68+ LOG (INFO) << " Tracing to " << fileName_;
4969 }
5070}
5171
5272ChromeTraceLogger::ChromeTraceLogger (const std::string& traceFileName, int smCount)
5373 : fileName_(traceFileName), pid_(getpid()) {
5474 traceOf_.clear (std::ios_base::badbit);
55- openTraceFile (fileName_, traceOf_ );
75+ openTraceFile ();
5676#ifdef HAS_CUPTI
5777 smCount_ = CuptiActivityInterface::singleton ().smCount ();
5878#endif
0 commit comments