diff --git a/dashboards/dashboard_base.py b/dashboards/dashboard_base.py index c5107cfae0c27032a7e637b31db0f0b630af2db0..d5a18689a29a1d19ee6c6b1798f4d4aa4464e041 100644 --- a/dashboards/dashboard_base.py +++ b/dashboards/dashboard_base.py @@ -3,13 +3,21 @@ from typing import List, Union from grafanalib.core import (Annotations, Dashboard, DashboardList, GridPos, Panel, Repeat, RowPanel, Stat, Template, - Templating, Threshold, Time, TimeSeries) + Templating, Threshold, Time, TimeSeries, Text) from grafanalib.influxdb import InfluxDBTarget from dashboards.annotations import Annotation from dashboards.influx_queries import Query +def get_text_panel(content: str, *, mode='markdown', **kwargs) -> Text: + return Text( + content=content, + mode=mode, + **kwargs + ) + + def get_influx_target(target_query: str, **kwargs) -> InfluxDBTarget: return InfluxDBTarget( query=target_query, diff --git a/dashboards/dashboard_fe2ti.py b/dashboards/dashboard_fe2ti.py index f14b34f29e33a70015b08e3e93f2564570245c45..db814edca36b8ea973b4dabf3afce3c0f8d2022d 100644 --- a/dashboards/dashboard_fe2ti.py +++ b/dashboards/dashboard_fe2ti.py @@ -4,12 +4,36 @@ from dashboards.dashboard_base import (DashboardOptions, build_dashboard, get_dashboard_list, get_dashboard_variable_query, get_grid_pos, get_stat_panel, - pack_in_row, TimeSeries, get_influx_target, Repeat, get_color_regex_override, get_line_style_regex_override) + pack_in_row, + TimeSeries, + get_influx_target, + Repeat, + get_color_regex_override, + get_line_style_regex_override, + get_text_panel) + from dashboards.influx_queries import (Query, get_variable_condition, join_conditions, join_variable_and, show_tag_values) from dashboards.legends import Units, AxisLabel +description_markdown = r""" + + - Linestyle indicates the compiler: + - gcc -> dashed lines + - intel -> full lines + - Color indicates the solver: + - pardiso -> green + - umfpack -> yellow + - ilu -> blue + - benchmark setups: + - fe2ti216: Domain size 2x2x2 solving all microproblems + - fe2ti1728: Domain size 8x8x1 solving only 216 micro problems + - List of generated plots can be found [https://www10.cs.fau.de/plots](https://www10.cs.fau.de/plots/) + - All "raw" output files are uploaded to the [Kadi4Mat](https://kadi4mat.iam-cms.kit.edu/collections?tag=pipeline&user=700) + +""" + def dashboard_fe2ti(): data_source = "fe2ti" @@ -34,6 +58,7 @@ def dashboard_fe2ti(): fields = ["Time to solution", "DP [MFLOP/s] STAT Sum", "Operational intensity STAT Sum", + 'AVX DP [MFLOP/s] STAT Sum" / "DP [MFLOP/s] STAT Sum', 'Memory bandwidth [MBytes/s] STAT Sum', 'Memory write bandwidth [MBytes/s] STAT Sum', 'Memory read bandwidth [MBytes/s] STAT Sum', @@ -46,6 +71,7 @@ def dashboard_fe2ti(): units = [Units.seconds, Units.mflop_sec, Units.flop_per_byte, + Units.percent, Units.mbytes_per_second, Units.mbytes_per_second, Units.mbytes_per_second, @@ -78,6 +104,7 @@ def dashboard_fe2ti(): get_line_style_regex_override(".*intel.*", "solid"), get_line_style_regex_override(".*gcc.*", "dashed") ] + description_panel = pack_in_row("Legend", get_text_panel(description_markdown, title="FE2TI benchmarks")) panels = [ TimeSeries( @@ -92,8 +119,8 @@ def dashboard_fe2ti(): ] row = pack_in_row( title=f"{row_repeat}: ${row_repeat_var.name}", - panels=panels, + panels=[*panels], repeat=Repeat('v', row_repeat_var.name), ) - return build_dashboard(options, rows=[row], templating=[row_repeat_var, *other_vars]) + return build_dashboard(options, rows=[description_panel, row], templating=[row_repeat_var, *other_vars])