@@ -1022,6 +1022,24 @@ void profileset_json2( const profileset::profilesets_t& profileset, const sim_t&
10221022
10231023 obj[ " iterations" ] = as<uint64_t >( result.iterations () );
10241024
1025+ if ( sim.profileset_cull .enabled )
1026+ {
1027+ obj[ " profileset_cull_best" ] = ( sim.profileset_cull .best_name == profileset->name () );
1028+ if ( sim.profileset_cull .best_name == profileset->name () )
1029+ {
1030+ obj[ " profileset_cull_best_error" ] = sim.profileset_cull .best_error ;
1031+ }
1032+ if ( profileset->culled () )
1033+ {
1034+ obj[ " culled" ] = true ;
1035+ obj[ " culled_reason" ] = profileset->culled_reason ();
1036+ obj[ " culled_iterations" ] = profileset->culled_iterations ();
1037+ obj[ " culled_mean" ] = profileset->culled_mean ();
1038+ obj[ " culled_error" ] = profileset->culled_error ();
1039+ obj[ " culled_error_type" ] = profileset->culled_error_type_cstr ();
1040+ }
1041+ }
1042+
10251043 if ( profileset->results () > 1 )
10261044 {
10271045 auto results2 = obj[ " additional_metrics" ].make_array ();
@@ -1068,6 +1086,25 @@ void profileset_json3( const profileset::profilesets_t& profilesets, const sim_t
10681086 obj[ " name" ] = profileset->name ();
10691087 auto results_obj = obj[ " metrics" ].make_array ();
10701088
1089+ // Profileset culling metadata at profileset level
1090+ if ( sim.profileset_cull .enabled )
1091+ {
1092+ obj[ " profileset_cull_best" ] = ( sim.profileset_cull .best_name == profileset->name () );
1093+ if ( sim.profileset_cull .best_name == profileset->name () )
1094+ {
1095+ obj[ " profileset_cull_best_error" ] = sim.profileset_cull .best_error ;
1096+ }
1097+ if ( profileset->culled () )
1098+ {
1099+ obj[ " culled" ] = true ;
1100+ obj[ " culled_reason" ] = profileset->culled_reason ();
1101+ obj[ " culled_iterations" ] = profileset->culled_iterations ();
1102+ obj[ " culled_mean" ] = profileset->culled_mean ();
1103+ obj[ " culled_error" ] = profileset->culled_error ();
1104+ obj[ " culled_error_type" ] = profileset->culled_error_type_cstr ();
1105+ }
1106+ }
1107+
10711108 for ( size_t midx = 0 ; midx < sim.profileset_metric .size (); ++midx )
10721109 {
10731110 const auto & result = profileset->result ( sim.profileset_metric [ midx ] );
@@ -1231,6 +1268,19 @@ void to_json( const ::report::json::report_configuration_t& report_configuration
12311268 options_root[ " profileset_metric" ] = util::scale_metric_type_abbrev ( sim.profileset_metric .front () );
12321269 options_root[ " profileset_multiactor_base_name" ] = sim.profileset_multiactor_base_name ;
12331270
1271+ if ( sim.profileset_cull .enabled )
1272+ {
1273+ auto cull = options_root[ " profileset_cull" ];
1274+ cull[ " enabled" ] = true ;
1275+ cull[ " method" ] = sim.profileset_cull .method_name ();
1276+ cull[ " min_iterations" ] = sim.profileset_cull .min_iterations ;
1277+ if ( sim.profileset_cull .method == sim_t ::profileset_cull_state_t ::T_TEST )
1278+ cull[ " alpha" ] = sim.profileset_cull .alpha ;
1279+ else
1280+ cull[ " margin" ] = sim.profileset_cull .margin ;
1281+ cull[ " metric" ] = util::scale_metric_type_abbrev ( sim.profileset_cull .metric );
1282+ }
1283+
12341284 to_json ( options_root[ " dbc" ], *sim.dbc );
12351285
12361286 if ( sim.scaling ->calculate_scale_factors )
0 commit comments