diff --git a/cbutil/processing_functions.py b/cbutil/processing_functions.py index 8505e1f6af55f66bd6485822e2aac62c0f80b4d7..ddca8cfd25c801dcea9406ca28e87be85a2b6391 100644 --- a/cbutil/processing_functions.py +++ b/cbutil/processing_functions.py @@ -8,3 +8,22 @@ def mesa_pd_text(line: str): return m.group(1), float(m.group(2)) raise ValueError() + + +def fe2ti_parse_complete_timing(line: str) -> dict: + if not line.startswith("Abs"): + raise ValueError() + pattern = r'([A-Za-z][A-Za-z _]+):\s*(\d+\.\d+)s\s*' + return {name: float(value) for name, value in re.findall(pattern, line)} + + +def fe2ti_intermediate(line: str) -> dict: + pattern_step_info = r'([A-Za-z_]+)\s+(\d+)\s*' + step_info = {name: cnt for name, cnt in re.findall(pattern_step_info, line)} + if not step_info: + raise ValueError("Empty Step Info") + pattern_fields = r'\s*([A-za-z_|0-9]+):\s*((\d+\.\d+e-\d+)|(\d+\.\d+)|(\d+))s?\s*' + fields = {name: float(value) for name, value, *_ in re.findall(pattern_fields, line)} + if not fields: + raise ValueError("Empty fields") + return {'step_info': step_info, 'fields': fields} diff --git a/tests/fe2ti216_bddc_0_1_80_8_1e-8.log b/tests/fe2ti216_bddc_0_1_80_8_1e-8.log new file mode 100644 index 0000000000000000000000000000000000000000..f4aeb96a55109e98da8e1c4f0d466feeb55fde31 --- /dev/null +++ b/tests/fe2ti216_bddc_0_1_80_8_1e-8.log @@ -0,0 +1,46 @@ + + Zeit bis CP: 2.881715e-04 + Zeit für CPable: 3.083187e-08 + Zeit für CP1: 2.416709e-08 + Zeit für CP2: 2.333400e-08 + Zeit für CP3: 3.750029e-08 + Zeit bis PetscInit: 8.168460e-02 + + load_step 00 lll_pen 00 Newton_load 01 Newton_gesamt 01 micro_solve: 46.87s Comm_for_couple: 0.03s Time_for_EV: 0.00s Macro_Solve: 0.52s Assembly_Macro: 0.52s KSP_Macro: 0.00s VecConvert: 0.00s iter_macro: 01 Micro_HDF5: 0.00s Comp_W: 0.00s Ass_Maj: 0.00s Comm_FLC: 0.00s FLC_Comp: 0.00s Ausw_Norm: 0.00s TimeDest: 0.00 DestBDDC: 0.00 SendBDDC: 0.00 CreateArrBDDC: 0.00 BDDC_Part: 0.00s PartAss: 0.00s PartKSP: 0.00s PartConv: 0.00s TimeDefo: 0.00s TimeInt: 0.00s ||delta_u||: 3.054712e-04 + + FLC: 2.9849864544e-04 -3.9222510640e-05 + + Minimale Dicke: 9.999220e-01 + + load_step 00 lll_pen 00 Newton_load 02 Newton_gesamt 02 micro_solve: 36.52s Comm_for_couple: 0.01s Time_for_EV: 0.00s Macro_Solve: 0.65s Assembly_Macro: 0.63s KSP_Macro: 0.00s VecConvert: 0.00s iter_macro: 01 Micro_HDF5: 0.00s Comp_W: 0.01s Ass_Maj: 0.00s Comm_FLC: 0.00s FLC_Comp: 0.00s Ausw_Norm: 0.00s TimeDest: 0.00 DestBDDC: 0.00 SendBDDC: 0.00 CreateArrBDDC: 0.00 BDDC_Part: 0.00s PartAss: 0.00s PartKSP: 0.00s PartConv: 0.00s TimeDefo: 0.00s TimeInt: 0.00s ||delta_u||: 2.521526e-08 + + 2.500000e-04 0.000000e+00 0.000000e+00 0.000000e+00 + + load_step 01 lll_pen 00 Newton_load 01 Newton_gesamt 03 micro_solve: 35.47s Comm_for_couple: 0.01s Time_for_EV: 0.00s Macro_Solve: 0.58s Assembly_Macro: 0.57s KSP_Macro: 0.00s VecConvert: 0.00s iter_macro: 01 Micro_HDF5: 0.00s Comp_W: 0.00s Ass_Maj: 0.00s Comm_FLC: 0.00s FLC_Comp: 0.00s Ausw_Norm: 0.00s TimeDest: 0.00 DestBDDC: 0.00 SendBDDC: 0.00 CreateArrBDDC: 0.00 BDDC_Part: 0.00s PartAss: 0.00s PartKSP: 0.00s PartConv: 0.00s TimeDefo: 0.00s TimeInt: 0.00s ||delta_u||: 3.032566e-04 + + FLC: 5.9697701501e-04 -7.8428912665e-05 + + Minimale Dicke: 9.998440e-01 + + load_step 01 lll_pen 00 Newton_load 02 Newton_gesamt 04 micro_solve: 36.54s Comm_for_couple: 0.01s Time_for_EV: 0.00s Macro_Solve: 0.59s Assembly_Macro: 0.57s KSP_Macro: 0.00s VecConvert: 0.00s iter_macro: 01 Micro_HDF5: 0.00s Comp_W: 0.00s Ass_Maj: 0.00s Comm_FLC: 0.00s FLC_Comp: 0.00s Ausw_Norm: 0.00s TimeDest: 0.00 DestBDDC: 0.00 SendBDDC: 0.00 CreateArrBDDC: 0.00 BDDC_Part: 0.00s PartAss: 0.00s PartKSP: 0.00s PartConv: 0.00s TimeDefo: 0.00s TimeInt: 0.00s ||delta_u||: 3.159300e-08 + + 2.500000e-04 0.000000e+00 0.000000e+00 0.000000e+00 + + Gewünschte Eindringung erreicht! + Zeit fuer finalen Checkpoint: 0.00s + + Absolut_gesamt: 158.93s Time to solution: 158.85s Create Macro Problem: 0.02s Comm_dup_etc: 0.08s + + Zusammenfassung CRAFT: + Load Checkpoint Macro: 0.00s + Load Checkpoint Micro: 0.00s + Load gesamt: 0.00s + Write Checkpoint Macro gesamt: 0.00s + Write Chechkpoint Micro gesamt: 0.00s + Write Checkpoint Final gesamt: 0.00s + Gesamtzeit Write Checkpoints: 0.00s + Gesamtzeit CRAFT (Load + Write): 0.00s + + Die Summe ist 1 + + Test A diff --git a/tests/test_string_process.py b/tests/test_string_process.py index cd43254a1fd6cc40f6aede48163b8326df3649cc..32d3d31a71a9555eed99948a0ec017cd046a69d0 100644 --- a/tests/test_string_process.py +++ b/tests/test_string_process.py @@ -1,7 +1,9 @@ from cbutil.postprocessing import process_linewise -from cbutil.processing_functions import mesa_pd_text +from cbutil.processing_functions import mesa_pd_text, fe2ti_parse_complete_timing, fe2ti_intermediate from cbutil.util import read_file_line_wise +import pytest + def id(x): return x @@ -38,3 +40,71 @@ def test_mesa_pd(): for key, value in process_linewise(mesa_pd_text, read_file_line_wise(mesa_pd_example_output)): assert value == expected[key] + + +TEST_STR_TOTAL = "Absolut_gesamt: 49.09s Time to solution: 48.95s Create Macro Problem: 0.02s Comm_dup_etc: 0.05s" +TEST_STR_INTERMEDIATE = "load_step 00 lll_pen 00 Newton_load 01 Newton_gesamt 01 micro_solve: 15.61s Comm_for_couple: 0.02s Time_for_EV: 0.00s Macro_Solve: 0.56s Assembly_Macro: 0.55s KSP_Macro: 0.00s VecConvert: 0.00s iter_macro: 01 Micro_HDF5: 0.00s Comp_W: 0.00s Ass_Maj: 0.00s Comm_FLC: 0.00s FLC_Comp: 0.00s Ausw_Norm: 0.00s TimeDest: 0.00 DestBDDC: 0.00 SendBDDC: 0.00 CreateArrBDDC: 0.00 BDDC_Part: 0.00s PartAss: 0.00s PartKSP: 0.00s PartConv: 0.00s TimeDefo: 0.01s TimeInt: 0.00s ||delta_u||: 3.054712e-04" + + +def test_fe2ti(): + expected = { + "Absolut_gesamt": 49.09, + "Time to solution": 48.95, + "Create Macro Problem": 0.02, + "Comm_dup_etc": 0.05, + + } + assert fe2ti_parse_complete_timing(TEST_STR_TOTAL) == expected + with pytest.raises(ValueError): + fe2ti_parse_complete_timing(TEST_STR_INTERMEDIATE) + + +def test_fe2ti_intermedate(): + expected = { + "step_info": { + "load_step": "00", + "lll_pen": "00", + "Newton_load": "01", + "Newton_gesamt": "01", + }, + "fields": { + "micro_solve": 15.61, + "Comm_for_couple": 0.02, + "Time_for_EV": 0.00, + "Macro_Solve": 0.56, + "Assembly_Macro": 0.55, + "KSP_Macro": 0.00, + "VecConvert": 0.00, + "iter_macro": 1.0, + "Micro_HDF5": 0.00, + "Comp_W": 0.00, + "Ass_Maj": 0.00, + "Comm_FLC": 0.00, + "FLC_Comp": 0.00, + "Ausw_Norm": 0.00, + "TimeDest": 0.00, + "DestBDDC": 0.00, + "SendBDDC": 0.00, + "CreateArrBDDC": 0.00, + "BDDC_Part": 0.00, + "PartAss": 0.00, + "PartKSP": 0.00, + "PartConv": 0.00, + "TimeDefo": 0.01, + "TimeInt": 0.00, + "||delta_u||": 3.054712e-04, + }, + } + assert fe2ti_intermediate(TEST_STR_INTERMEDIATE) == expected + with pytest.raises(ValueError): + fe2ti_intermediate(TEST_STR_TOTAL) + + +def test_fe2ti_log(): + test_file = "tests/fe2ti216_bddc_0_1_80_8_1e-8.log" + assert [*process_linewise( + lambda line: fe2ti_parse_complete_timing(line.strip()), + read_file_line_wise(test_file))] + assert [*process_linewise( + lambda line: fe2ti_intermediate(line.strip()), + read_file_line_wise(test_file))]