@@ -228,6 +228,7 @@ def __init__(
228228 ignored : Sequence [str ] = (),
229229 recent : bool = False ,
230230 formulas : Optional [Dict [str , Callable [[pandas .DataFrame ], pandas .Series ]]] = None ,
231+ fill_missing : Optional [Sequence [Tuple [str , Any ]]] = None ,
231232 ):
232233 self ._data = data
233234 self ._time = time
@@ -236,6 +237,7 @@ def __init__(
236237 self ._ignored = ignored
237238 self .recent = recent
238239 self ._formulas = formulas
240+ self .fill_missing = fill_missing
239241
240242 def load (self , verbose : int = 0 ):
241243 """Loads and preprocesses the data. Returns self."""
@@ -992,6 +994,12 @@ def post_load_process_piece(
992994 Postprocesses a piece when a cube is made of multiple pieces
993995 before it gets merged.
994996 """
997+ if not self .fill_missing :
998+ return df
999+ missing = dict (self .fill_missing )
1000+ for k , v in missing .items ():
1001+ if k not in df .columns :
1002+ df [k ] = v
9951003 return df
9961004
9971005
@@ -1027,6 +1035,7 @@ def __init__(
10271035 "^ITER" ,
10281036 "^onnx_.*" ,
10291037 "^op_onnx_.*" ,
1038+ "^peak_gpu_.*" ,
10301039 ),
10311040 ignored : Sequence [str ] = ("version_python" ,),
10321041 recent : bool = True ,
@@ -1062,14 +1071,18 @@ def __init__(
10621071 "peak_gpu_nvidia" ,
10631072 "time_export_unbiased" ,
10641073 ),
1074+ fill_missing : Optional [Sequence [Tuple [str , Any ]]] = (("model_attn_impl" , "eager" ),),
10651075 ):
1066- self ._data = data
1067- self ._time = time
1068- self ._keys = keys
1069- self ._values = values
1070- self ._ignored = ignored
1071- self .recent = recent
1072- self ._formulas = formulas # type: ignore[assignment]
1076+ super ().__init__ (
1077+ data = data ,
1078+ time = time ,
1079+ keys = keys ,
1080+ values = values ,
1081+ ignored = ignored ,
1082+ recent = recent ,
1083+ formulas = formulas ,
1084+ fill_missing = fill_missing ,
1085+ )
10731086
10741087 def _process_formula (
10751088 self , formula : Union [str , Callable [[pandas .DataFrame ], pandas .Series ]]
@@ -1240,7 +1253,9 @@ def first_err(df: pandas.DataFrame) -> pandas.Series:
12401253 if formula == "peak_gpu_torch" :
12411254 return lambda df : gdf (df , "mema_gpu_5_after_export" ) - gdf (df , "mema_gpu_4_reset" )
12421255 if formula == "peak_gpu_nvidia" :
1243- return lambda df : gdf (df , "memory_gpu0_peak" ) - gdf (df , "memory_gpu0_begin" )
1256+ return (
1257+ lambda df : (gdf (df , "memory_gpu0_peak" ) - gdf (df , "memory_gpu0_begin" )) * 2 ** 20
1258+ )
12441259 if formula == "time_export_unbiased" :
12451260
12461261 def unbiased_export (df ):
@@ -1425,6 +1440,14 @@ def mean_geo(gr):
14251440 name = "counts" ,
14261441 order = order ,
14271442 ),
1443+ "peak-gpu" : lambda : CubeViewDef (
1444+ key_index = index_cols ,
1445+ values = self ._filter_column (["^peak_gpu_.*" ], self .values ),
1446+ ignore_unique = True ,
1447+ keep_columns_in_index = ["suite" ],
1448+ name = "peak-gpu" ,
1449+ order = order ,
1450+ ),
14281451 "time" : lambda : CubeViewDef (
14291452 key_index = index_cols ,
14301453 values = self ._filter_column (
@@ -1489,6 +1512,7 @@ def mean_geo(gr):
14891512 def post_load_process_piece (
14901513 self , df : pandas .DataFrame , unique : bool = False
14911514 ) -> pandas .DataFrame :
1515+ df = super ().post_load_process_piece (df , unique = unique )
14921516 if unique :
14931517 return df
14941518 cols = self ._filter_column (self ._keys , df )
0 commit comments