@@ -33,12 +33,44 @@ static constexpr int kSchemaVersion = 1;
3333
3434void ChromeTraceLogger::handleTraceStart (
3535 const std::unordered_map<std::string, std::string>& metadata) {
36+ std::string cudaOccDeviceProps = " " ;
37+ #ifdef HAS_CUPTI
38+ const std::vector<cudaOccDeviceProp>& occProps = KINETO_NAMESPACE::occDeviceProps ();
39+ if (occProps.size () > 0 ) {
40+ std::ostringstream oss;
41+ oss << " [" ;
42+ bool first = true ;
43+ for (size_t i = 0 ; i < occProps.size (); i += 1 ) {
44+ const cudaOccDeviceProp& occProp = occProps[i];
45+ if (!first) {
46+ oss << " , " ;
47+ }
48+ oss << " {" ;
49+ oss << " \" computeMajor\" : " << occProp.computeMajor << " , " ;
50+ oss << " \" computeMinor\" : " << occProp.computeMinor << " , " ;
51+ oss << " \" maxThreadsPerBlock\" : " << occProp.maxThreadsPerBlock << " , " ;
52+ oss << " \" maxThreadsPerMultiprocessor\" : " << occProp.maxThreadsPerMultiprocessor << " , " ;
53+ oss << " \" regsPerBlock\" : " << occProp.regsPerBlock << " , " ;
54+ oss << " \" regsPerMultiprocessor\" : " << occProp.regsPerMultiprocessor << " , " ;
55+ oss << " \" warpSize\" : " << occProp.warpSize << " , " ;
56+ oss << " \" sharedMemPerBlock\" : " << occProp.sharedMemPerBlock << " , " ;
57+ oss << " \" sharedMemPerMultiprocessor\" : " << occProp.sharedMemPerMultiprocessor << " , " ;
58+ oss << " \" numSms\" : " << occProp.numSms << " , " ;
59+ oss << " \" sharedMemPerBlockOptin\" : " << occProp.sharedMemPerBlockOptin ;
60+ oss << " }" ;
61+ first = false ;
62+ }
63+ oss << " ]" ;
64+ cudaOccDeviceProps = oss.str ();
65+ }
66+ #endif // HAS_CUPTI
67+
3668 traceOf_ << fmt::format (R"JSON(
3769{{
3870 "schemaVersion": {},
3971 )JSON" , kSchemaVersion );
4072
41- if (!metadata.empty ()) {
73+ if (!metadata.empty () || !cudaOccDeviceProps. empty () ) {
4274 traceOf_ << R"JSON(
4375 "metadata": {
4476 )JSON" ;
@@ -50,6 +82,14 @@ void ChromeTraceLogger::handleTraceStart(
5082 traceOf_ << fmt::format (R"( "{}": "{}")" , kv.first , kv.second );
5183 first = false ;
5284 }
85+ if (!cudaOccDeviceProps.empty ()) {
86+ if (!first) {
87+ traceOf_ << " ,\n " ;
88+ }
89+ traceOf_ << fmt::format (R"( "{}": {})" , " cudaOccDeviceProps" , cudaOccDeviceProps);
90+ first = false ;
91+ }
92+
5393 traceOf_ << R"JSON(
5494 },
5595 )JSON" ;
0 commit comments