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

added a pystencils dashboard

parent f60558c1
No related branches found
No related tags found
No related merge requests found
Pipeline #56000 passed
from dashboards.dashboard_base import (DashboardOptions,
build_dashboard,
get_commit_annotation,
pack_in_row,
Repeat,)
from dashboards.panels import PanelInfos, get_time_series_panel
from dashboards.variables import get_dashboard_variable, Filter, get_measurement_filter
from dashboards.influx_queries import join_variable_and
from dashboards.legends import Units
INTEL_LINESTYLE = "solid"
GCC_LINESTYLE = "dashed"
def dashboard_pystencils_cpu():
data_source = "pystencils"
row_repeat = "host"
options = DashboardOptions(
title="pystencils CPU Benchmarks",
description="Benchmarks for pystencils",
tags=['benchmark', 'pystencils', 'CPU'],
timezone="browser",
)
filters = [
Filter("host", default_value="icx32"),
Filter("PYSTENCILS_PROJECT_ID", default_value="pycodegen/pystencils"),
Filter("PYSTENCILS_BRANCH", default_value="master"),
Filter("compiler"),
]
fields = [PanelInfos("Runtime (RDTSC) [s]", Units.seconds),
PanelInfos("DP [MFLOP/s]", Units.mflop_sec),
PanelInfos("Operational intensity", Units.flop_per_byte),
PanelInfos('AVX DP [MFLOP/s]" / "DP [MFLOP/s]', Units.percent),
PanelInfos('Memory bandwidth [MBytes/s]', Units.mbytes_per_second),
PanelInfos('Memory write bandwidth [MBytes/s]', Units.mbytes_per_second),
PanelInfos('Memory read bandwidth [MBytes/s]', Units.mbytes_per_second),
PanelInfos('Memory data volume [GBytes]', Units.gigabyte),
PanelInfos('Memory read data volume [GBytes]', Units.gigabyte),
PanelInfos('Memory write data volume [GBytes]', Units.gigabyte),
PanelInfos('Energy [J]', Units.joule),
PanelInfos('Power [W]', Units.watt),
PanelInfos('Clock [MHz] STAT Avg', Units.megahertz), ]
filter_vars = [get_dashboard_variable(filter, "", data_source) for filter in filters]
benchmark = get_measurement_filter("benchmark", data_source, filter_pattern="[^u]$")
row_repeat_var = [fv for fv in filter_vars if fv.name == row_repeat][0]
where = join_variable_and([f.name for f in filters])
annotations = get_commit_annotation(data_source, "red", "commits", "vadd", commit_key="pystencils-commit")
group_by = [f.name for f in filters]
group_by.append("array_shape")
panels = [
get_time_series_panel(
field,
data_source,
f"/^${benchmark.name}$/",
where=where,
group_by=group_by,
)
for field in fields]
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=[*filter_vars, benchmark],
annotations=annotations)
......@@ -4,6 +4,7 @@ import logging
import dashboards.dashboard_list as boards
from dashboards.upload import upload_dashboard
from dashboards.dashboard_fe2ti import dashboard_fe2ti
from dashboard_pystencils import dashboard_pystencils_cpu
logger = logging.getLogger(__file__)
logger.setLevel(logging.INFO)
......@@ -31,10 +32,13 @@ def main():
walberla_folder = 8
fe2ti_folder = 40
pystencils_foler = 41
for board_name in dashboards:
logger.info(f"Try to upload {board_name}")
if "fe2ti" in board_name:
upload_dashboard(dashboard_fe2ti(), folder=fe2ti_folder)
elif "pystencils" in board_name:
upload_dashboard(dashboard_pystencils_cpu(), folder=pystencils_foler)
else:
board = getattr(boards, board_name)
upload_dashboard(board(), folder=walberla_folder)
......
......@@ -12,6 +12,11 @@ extras = dashboard
commands =
python dashboards/deploy.py "fe2ti"
[testenv:deploypystencils]
extras = dashboard
commands =
python dashboards/deploy.py "pystencils"
[testenv:deploywalberla]
extras = dashboard
commands =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment