Skip to content
Snippets Groups Projects
Commit fd287c95 authored by Christoph Alt's avatar Christoph Alt
Browse files

added a fe2ti dashboard

parent 6bbe4147
Branches
No related merge requests found
Pipeline #55774 passed with stages
in 55 seconds
......@@ -164,3 +164,38 @@ def get_stat_panel(title: str,
thresholds=[Threshold('green', 0, 0.0), Threshold('yellow', 1, 50.0), Threshold('red', 2, 80.0)],
** new_kwargs,
)
def get_color_regex_override(regex: str, color: str):
return {
"matcher": {
"id": "byRegexp",
"options": regex
},
"properties": [
{
"id": "color",
"value": {
"fixedColor": color,
"mode": "fixed"
}
}
]
}
def get_line_style_regex_override(regex: str, style: str):
return {
"matcher": {
"id": "byRegexp",
"options": regex
},
"properties": [
{
"id": "custom.lineStyle",
"value": {
"fill": style
}
}
]
}
from dashboards.dashboard_base import (DashboardOptions, build_dashboard,
build_row_repeat_dashboard,
get_commit_annotation,
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)
from dashboards.influx_queries import (Query, get_variable_condition,
join_conditions, join_variable_and,
show_tag_values)
from dashboards.legends import Units, AxisLabel
def fe2ti_dashboard():
data_source = "fe2ti"
measurment_name = "fe2ti"
row_repeat = "micro_problem_size"
other_filters = ["branch",
"benchmark_name",
"host",
"compiler",
"solver",
"mpi_ranks",
"omp_threads",
"ksp_tol"]
row_repeat_var = get_dashboard_variable_query(
row_repeat, show_tag_values(measurment_name, row_repeat), data_source)
other_vars = [get_dashboard_variable_query(
filter, show_tag_values(measurment_name, filter), data_source)
for filter in other_filters
]
where = join_variable_and([row_repeat, *other_filters])
fields = ["Time to solution",
"DP [MFLOP/s] STAT Sum",
"Operational intensity STAT Sum",
'Memory bandwidth [MBytes/s] STAT Sum',
'Memory write bandwidth [MBytes/s] STAT Sum',
'Memory read bandwidth [MBytes/s] STAT Sum',
'Memory data volume [GBytes] STAT Sum',
'Memory read data volume [GBytes] STAT Sum',
'Memory write data volume [GBytes] STAT Sum',
'Energy [J] STAT Sum',
'Power [W] STAT Sum',
'Clock [MHz] STAT Avg',]
units = [Units.seconds,
Units.mflop_sec,
Units.flop_per_byte,
Units.mbytes_per_second,
Units.mbytes_per_second,
Units.mbytes_per_second,
Units.gigabyte,
Units.gigabyte,
Units.gigabyte,
Units.joule,
Units.watt,
Units.megahertz,
]
queries = [Query(select_=field,
from_=measurment_name,
where_=where,
group_by=[row_repeat, *other_filters]
)
for field in fields
]
options = DashboardOptions(
title=f"FE2ti Benchmarks",
description="Benchmarks for fe2ti",
tags=['benchmark', 'fe2ti'],
timezone="browser",
)
annotations = get_commit_annotation(data_source, "red", "commits",
measurment_name)
overrides = [*[
get_color_regex_override(f".*[Ss]olver.*: {solver}.*", color)
for solver, color in [("pardiso", "#56A64B"), ("umfpack", "#F2CC0C"), ("ilu", "#3274D9")]
],
get_line_style_regex_override(".*intel.*", "solid"),
get_line_style_regex_override(".*gcc.*", "dashed")
]
panels = [
TimeSeries(
title=field,
dataSource=data_source,
targets=[get_influx_target(str(query))],
unit=unit,
pointSize=9,
overrides=overrides,
)
for field, query, unit in zip(fields, queries, units)
]
row = pack_in_row(
title=f"{row_repeat}: ${row_repeat_var.name}",
panels=panels,
repeat=Repeat('v', row_repeat_var.name),
)
return build_dashboard(options, rows=[row], templating=[row_repeat_var, *other_vars])
......@@ -6,11 +6,31 @@ class Units(str, Enum):
seconds = 's'
milliseconds = 'ms'
number = 'none'
megahertz = 'rotmhz'
joule = 'joule'
watt = 'watt'
gigabyte = 'decgbytes'
mbytes_per_second = 'MBs'
flop_per_byte = 'Flop/Byte'
mflop_sec = 'mflops'
percent = 'percentunit'
class AxisLabel(str, Enum):
mlups = 'MLUPS per process'
runtime = 'Runtime'
tts = 'Time to Solution'
dp_perf = 'Double Precision Performance'
oi = 'Operational Intensity'
memory_read_bw = 'Memory Read Bandwidth'
memory_write_bw = 'Memory Write Bandwidth'
memory_bw = 'Memory Bandwidth'
memory_read_volume = 'Memory Read Volume'
memory_write_volume = 'Memory Write Volume'
memory_volume = 'Memory Volume'
power = 'Power'
energy = 'Energy'
clock_speed = 'Clock Speed'
def build_alias_entry(descr, var_name) -> str:
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment