@@ -95,8 +95,10 @@ def __init__(self, **kwargs):
9595
9696 # will be set to True as soon as GPU data is received
9797 self .gpu_avail = False
98- self .perfdata_handler = PerformanceDataHandler ()
99- kernel_context .nodelist = self .perfdata_handler .get_nodelist ()
98+ # TODO: Temporary share perfdata_handler instance with an ipython extension
99+ # as it contains data that should be shared with the extension.
100+ kernel_context .perfdata_handler = PerformanceDataHandler ()
101+ kernel_context .nodelist = kernel_context .perfdata_handler .get_nodelist ()
100102
101103 self .scorep_available_ = shutil .which ("scorep" )
102104 self .scorep_python_available_ = True
@@ -717,7 +719,7 @@ async def scorep_execute(
717719 cmd , stdout = subprocess .PIPE , stderr = subprocess .STDOUT , env = proc_env
718720 )
719721
720- self .perfdata_handler .start_perfmonitor (proc .pid )
722+ kernel_context .perfdata_handler .start_perfmonitor (proc .pid )
721723 # For memory mode jupyter_dump and jupyter_update must be awaited
722724 # concurrently to the running subprocess
723725 if self .pershelper .mode == "memory" :
@@ -779,7 +781,7 @@ async def scorep_execute(
779781 time_indices = None
780782 if len (multicellmode_timestamps ):
781783 # retrieve the index this cell will have in the global history
782- sub_idx = len (self .perfdata_handler .get_code_history ())
784+ sub_idx = len (kernel_context .perfdata_handler .get_code_history ())
783785 # append to have end of last code fragment
784786 multicellmode_timestamps .append ("MCM_TS" + str (time .time ()))
785787 time_indices = [[]]
@@ -819,7 +821,7 @@ async def scorep_execute(
819821 time_indices [0 ][idx ] = (sub_idx , ms )
820822
821823 performance_data_nodes , duration = (
822- self .perfdata_handler .end_perfmonitor ()
824+ kernel_context .perfdata_handler .end_perfmonitor ()
823825 )
824826
825827 # In disk mode, subprocess already terminated
@@ -909,7 +911,7 @@ async def scorep_execute(
909911 self .pershelper .postprocess ()
910912 if performance_data_nodes :
911913 self .report_perfdata (performance_data_nodes , duration )
912- self .perfdata_handler .append_code (
914+ kernel_context .perfdata_handler .append_code (
913915 datetime .datetime .now (), code , time_indices
914916 )
915917 return self .standard_reply ()
@@ -957,9 +959,9 @@ async def do_execute(
957959 return self.standard_reply()
958960 """
959961 if code .startswith ("%%display_graph_for_last" ):
960- if not len (self .perfdata_handler .get_perfdata_history ()):
962+ if not len (kernel_context .perfdata_handler .get_perfdata_history ()):
961963 self .cell_output ("No performance data available." )
962- time_indices = self .perfdata_handler .get_time_indices ()[- 1 ]
964+ time_indices = kernel_context .perfdata_handler .get_time_indices ()[- 1 ]
963965 if time_indices :
964966 sub_idxs = [x [0 ] for x in time_indices [0 ]]
965967 self .cell_output (
@@ -969,7 +971,7 @@ async def do_execute(
969971 )
970972 perfvis .draw_performance_graph (
971973 kernel_context .nodelist ,
972- self .perfdata_handler .get_perfdata_history ()[- 1 ],
974+ kernel_context .perfdata_handler .get_perfdata_history ()[- 1 ],
973975 self .gpu_avail ,
974976 time_indices ,
975977 )
@@ -981,14 +983,14 @@ async def do_execute(
981983 "stdout" ,
982984 )
983985 index = int (code .split (" " )[1 ])
984- if index >= len (self .perfdata_handler .get_perfdata_history ()):
986+ if index >= len (kernel_context .perfdata_handler .get_perfdata_history ()):
985987 self .cell_output (
986988 "Tracked only "
987- + str (len (self .perfdata_handler .get_perfdata_history ()))
989+ + str (len (kernel_context .perfdata_handler .get_perfdata_history ()))
988990 + " cells. This index is not available."
989991 )
990992 else :
991- time_indices = self .perfdata_handler .get_time_indices ()[index ]
993+ time_indices = kernel_context .perfdata_handler .get_time_indices ()[index ]
992994 if time_indices :
993995 sub_idxs = [x [0 ] for x in time_indices [0 ]]
994996 self .cell_output (
@@ -998,22 +1000,11 @@ async def do_execute(
9981000 )
9991001 perfvis .draw_performance_graph (
10001002 kernel_context .nodelist ,
1001- self .perfdata_handler .get_perfdata_history ()[index ],
1003+ kernel_context .perfdata_handler .get_perfdata_history ()[index ],
10021004 self .gpu_avail ,
10031005 time_indices ,
10041006 )
10051007 return self .standard_reply ()
1006- elif code .startswith ("%%display_graph_for_all" ):
1007- data , time_indices = (
1008- self .perfdata_handler .get_perfdata_aggregated ()
1009- )
1010- perfvis .draw_performance_graph (
1011- kernel_context .nodelist ,
1012- data ,
1013- self .gpu_avail ,
1014- time_indices ,
1015- )
1016- return self .standard_reply ()
10171008
10181009 elif code .startswith ("%%display_code_for_index" ):
10191010 if len (code .split (" " )) == 1 :
@@ -1022,28 +1013,28 @@ async def do_execute(
10221013 "stdout" ,
10231014 )
10241015 index = int (code .split (" " )[1 ])
1025- if index >= len (self .perfdata_handler .get_perfdata_history ()):
1016+ if index >= len (kernel_context .perfdata_handler .get_perfdata_history ()):
10261017 self .cell_output (
10271018 "Tracked only "
1028- + str (len (self .perfdata_handler .get_perfdata_history ()))
1019+ + str (len (kernel_context .perfdata_handler .get_perfdata_history ()))
10291020 + " cells. This index is not available."
10301021 )
10311022 else :
10321023 self .cell_output (
10331024 "Cell timestamp: "
1034- + str (self .perfdata_handler .get_code_history ()[index ][0 ])
1025+ + str (kernel_context .perfdata_handler .get_code_history ()[index ][0 ])
10351026 + "\n --\n " ,
10361027 "stdout" ,
10371028 )
10381029 self .cell_output (
1039- self .perfdata_handler .get_code_history ()[index ][1 ],
1030+ kernel_context .perfdata_handler .get_code_history ()[index ][1 ],
10401031 "stdout" ,
10411032 )
10421033 return self .standard_reply ()
10431034 elif code .startswith ("%%display_code_history" ):
10441035 show (
10451036 pd .DataFrame (
1046- self .perfdata_handler .get_code_history (),
1037+ kernel_context .perfdata_handler .get_code_history (),
10471038 columns = ["timestamp" , "code" ],
10481039 ).reset_index (),
10491040 layout = {"topStart" : "search" , "topEnd" : None },
@@ -1065,14 +1056,14 @@ async def do_execute(
10651056 # In addition, it has a counter for the number of measurements
10661057 # each sub cell corresponds to in the list of performance data
10671058 # measurements, e.g. (2_0, 5), (2_1, 3), (2_2, 7)
1068- mcm_time_indices = self .perfdata_handler .get_time_indices ()
1059+ mcm_time_indices = kernel_context .perfdata_handler .get_time_indices ()
10691060 mcm_time_indices = list (
10701061 filter (lambda item : item is not None , mcm_time_indices )
10711062 )
10721063
10731064 code = (
10741065 f"{ varname } ="
1075- f"{ self .perfdata_handler .get_perfdata_history ()} "
1066+ f"{ kernel_context .perfdata_handler .get_perfdata_history ()} "
10761067 )
10771068
10781069 if mcm_time_indices :
@@ -1107,13 +1098,13 @@ async def do_execute(
11071098 filename = code .split (" " )[1 ]
11081099 with open (f"{ filename } _perfdata.json" , "w" ) as f :
11091100 json .dump (
1110- self .perfdata_handler .get_perfdata_history (),
1101+ kernel_context .perfdata_handler .get_perfdata_history (),
11111102 default = str ,
11121103 fp = f ,
11131104 )
11141105 with open (f"{ filename } _code.json" , "w" ) as f :
11151106 json .dump (
1116- self .perfdata_handler .get_code_history (),
1107+ kernel_context .perfdata_handler .get_code_history (),
11171108 default = str ,
11181109 fp = f ,
11191110 )
@@ -1212,7 +1203,7 @@ async def do_execute(
12121203 else :
12131204 if self .mode == KernelMode .DEFAULT :
12141205 self .pershelper .parse (magics_cleanup (code )[1 ], "jupyter" )
1215- self .perfdata_handler .start_perfmonitor (os .getpid ())
1206+ kernel_context .perfdata_handler .start_perfmonitor (os .getpid ())
12161207 parent_ret = await super ().do_execute (
12171208 code ,
12181209 silent ,
@@ -1222,11 +1213,11 @@ async def do_execute(
12221213 cell_id = cell_id ,
12231214 )
12241215 performance_data_nodes , duration = (
1225- self .perfdata_handler .end_perfmonitor ()
1216+ kernel_context .perfdata_handler .end_perfmonitor ()
12261217 )
12271218 if performance_data_nodes :
12281219 self .report_perfdata (performance_data_nodes , duration )
1229- self .perfdata_handler .append_code (
1220+ kernel_context .perfdata_handler .append_code (
12301221 datetime .datetime .now (), code
12311222 )
12321223 return parent_ret
0 commit comments