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

added a dashboard for gpu profiles

parent 1755b13c
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,19 @@ from dashboards.variables import get_dashboard_variable, Filter
from dashboards.influx_queries import join_variable_and
from dashboards.legends import Units
from cbutil.ncu_keys import (
memory_write_data_key,
memory_read_data_key,
memory_data_key,
memory_write_bandwidth_key,
memory_read_bandwidth_key,
memory_bandwidth_key,
runtime_key,
operational_intensity_key,
p_max_key,
dp_key,
)
def dashboard_uniformgridcpu():
data_source = 'InfluxDB-1'
......@@ -153,3 +166,84 @@ def dashboard_uniformgridgpu():
rows=[row],
templating=[*filter_vars],
annotations=annotations)
def dashboard_uniformgridgpu_profile():
data_source = 'InfluxDB-1'
arch = 'GPU'
measurment_name = f'UniformGrid{arch}_profile'
row_repeat = "host"
options = DashboardOptions(
title=f'Uniform Grid {arch} GPU Profiling',
description=f"Benchmark dashboard for the Uniform Grid {arch} Benchmark from walberla",
tags=[arch, 'benchmark', 'walberla', 'Uniform Grid', 'profiling'],
timezone="browser",
)
filters = [
Filter("project_id", multi=True, default_value='walberla/walberla'),
Filter("branch", multi=True, default_value='master'),
Filter("host", multi=False, default_value='medusa'),
Filter("GPU"),
Filter("collisionSetup"),
Filter("mpi_num_processes"),
Filter("streamingPattern"),
Filter("timeStepStrategy"),
Filter("stencil"),
Filter("blocks_0"),
Filter("blocks_1"),
Filter("blocks_2"),
Filter("cellsPerBlock_0"),
Filter("cellsPerBlock_1"),
Filter("cellsPerBlock_2"),
Filter("gpuBlockSize_0"),
Filter("gpuBlockSize_1"),
Filter("gpuBlockSize_2"),
Filter("periodic_0"),
Filter("periodic_1"),
Filter("periodic_2"),
]
fields = [
PanelInfos("mlupsPerProcess", Units.number),
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, measurment_name, data_source) for filter in filters]
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", measurment_name)
panels = [
get_time_series_panel(
field,
data_source,
measurment_name,
where=where,
group_by=[f.name for f in filters],
)
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],
annotations=annotations)
......@@ -5,7 +5,7 @@ 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, dashboard_pystencils_gpu
from dashboard_walberla import dashboard_uniformgridcpu, dashboard_uniformgridgpu
from dashboard_walberla import dashboard_uniformgridcpu, dashboard_uniformgridgpu, dashboard_uniformgridgpu_profile
logger = logging.getLogger(__file__)
logger.setLevel(logging.INFO)
......@@ -44,6 +44,7 @@ def main():
elif "walberla" in board_name:
upload_dashboard(dashboard_uniformgridcpu(), folder=walberla_folder)
upload_dashboard(dashboard_uniformgridgpu(), folder=walberla_folder)
upload_dashboard(dashboard_uniformgridgpu_profile(), folder=walberla_folder)
else:
board = getattr(boards, board_name)
upload_dashboard(board(), folder=walberla_folder)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment