Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions examples/mapping_tester/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ MAPPING_TESTER="${TEST_LOCATION}"/../../tools/mapping-tester/
TEST_CASE_LOCATION="${TEST_LOCATION}"/case

# Generate the run scripts
python3 "${MAPPING_TESTER}"/generate.py --setup "${TEST_LOCATION}"/setup-test.json --outdir "${TEST_CASE_LOCATION}" --template "${MAPPING_TESTER}"/config-template.xml
python3 "${MAPPING_TESTER}"/generate_mapping_test.py --setup "${TEST_LOCATION}"/setup-test.json --outdir "${TEST_CASE_LOCATION}" --template "${MAPPING_TESTER}"/config-template.xml

# Prepare the meshes
python3 "${MAPPING_TESTER}"/preparemeshes.py --setup "${TEST_LOCATION}"/setup-test.json --outdir "${TEST_CASE_LOCATION}" --force
python3 "${MAPPING_TESTER}"/prepare_mapping_teest_meshes.py --setup "${TEST_LOCATION}"/setup-test.json --outdir "${TEST_CASE_LOCATION}" --force
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
python3 "${MAPPING_TESTER}"/prepare_mapping_teest_meshes.py --setup "${TEST_LOCATION}"/setup-test.json --outdir "${TEST_CASE_LOCATION}" --force
python3 "${MAPPING_TESTER}"/prepare_mapping_test_meshes.py --setup "${TEST_LOCATION}"/setup-test.json --outdir "${TEST_CASE_LOCATION}" --force


export ASTE_A_MPIARGS=""
export ASTE_B_MPIARGS=""
Expand All @@ -29,4 +29,4 @@ bash ./postprocessall.sh
cd "${TEST_LOCATION}"

# Gather the generated statistics
python3 "${MAPPING_TESTER}"/gatherstats.py --outdir "${TEST_CASE_LOCATION}" --file test-statistics.csv
python3 "${MAPPING_TESTER}"/gather_stats.py --outdir "${TEST_CASE_LOCATION}" --file test-statistics.csv
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,28 @@

import argparse
import math
import sys

import matplotlib.pyplot as plt
import numpy as np
import pandas

style_colours = [
"#0173b2",
"#de8f05",
"#029e73",
"#d55e00",
"#cc78bc",
"#ca9161",
"#fbafe4",
"#949494",
"#ece133",
"#56b4e9",
]
style_markers = ["o", "D", "s"]
styles = [(c, m) for m in style_markers for c in style_colours]

def parseArguments(args):

def parse_arguments(args):
parser = argparse.ArgumentParser(
description="Creates convergence plots from gathered stats"
)
Expand All @@ -32,32 +47,12 @@ def lavg(l):
return math.exp(sum(map(math.log, l)) / len(l))


# seaborn.color_palette("colorblind", 10).as_hex()
style_colours = [
"#0173b2",
"#de8f05",
"#029e73",
"#d55e00",
"#cc78bc",
"#ca9161",
"#fbafe4",
"#949494",
"#ece133",
"#56b4e9",
]
style_markers = ["o", "D", "s"]
styles = [(c, m) for m in style_markers for c in style_colours]


def plotConv(ax, df, yname):
def plot_convergence(ax, df, yname):
xmin = df["mesh A"].min()
xmax = df["mesh A"].max()
ymin = df[yname].min()
ymax = df[yname].max()

print(xmin, xmax)
print(ymin, ymax)

# 1st order line
fox = [xmax, xmin]
foy1 = ymax
Expand All @@ -68,7 +63,7 @@ def plotConv(ax, df, yname):
)
ax.annotate("1st order", xy=(lavg(fox), lavg(foy)), color="gray", zorder=-1)

# # 2nd order line
# 2nd order line
sox = [xmin, xmax]
soy1 = ymin
soy2 = soy1 * ((sox[1] / sox[0]) ** 2)
Expand All @@ -80,7 +75,7 @@ def plotConv(ax, df, yname):
ax.annotate("2nd order", xy=(lavg(sox), lavg(soy)), color="gray", zorder=-1)


def plotError(df, prefix):
def plot_error(df, prefix):
yname = "relative-l2"
fig, ax = plt.subplots(sharex=True, sharey=True)
series = df.groupby("mapping")
Expand All @@ -102,14 +97,14 @@ def plotError(df, prefix):
ax.set_xlabel("edge length(h) of mesh A")
ax.set_ylabel("relative-l2 error mapping to mesh B")

plotConv(ax, df, yname)
plot_convergence(ax, df, yname)

plt.gca().invert_xaxis()
plt.grid()
plt.savefig(prefix + "-error.pdf")


def plotMemory(df, prefix):
def plot_memory_usage(df, prefix):
yname = "peakMemB"
fig, ax = plt.subplots(sharex=True, sharey=True)
series = df.groupby("mapping")
Expand All @@ -131,14 +126,12 @@ def plotMemory(df, prefix):
ax.set_xlabel("edge length(h) of mesh A")
ax.set_ylabel("peak memory of participant B [bytes]")

# plotConv(ax, df, yname)

plt.gca().invert_xaxis()
plt.grid()
plt.savefig(prefix + "-peakMemB.pdf")


def plotComputeMappingTime(df, prefix):
def plot_compute_mapping_time(df, prefix):
yname = "computeMappingTime"
fig, ax = plt.subplots(sharex=True, sharey=True)
series = df.groupby("mapping")
Expand All @@ -161,14 +154,12 @@ def plotComputeMappingTime(df, prefix):
ax.set_xlabel("edge length(h) of mesh A")
ax.set_ylabel("time to compute mapping [ms]")

# plotConv(ax, df, yname)

plt.gca().invert_xaxis()
plt.grid()
plt.savefig(prefix + "-computet.pdf")


def plotMapDataTime(df, prefix):
def plot_map_data_time(df, prefix):
yname = "mapDataTime"
fig, ax = plt.subplots(sharex=True, sharey=True)
series = df.groupby("mapping")
Expand All @@ -191,34 +182,30 @@ def plotMapDataTime(df, prefix):
ax.set_xlabel("edge length(h) of mesh A")
ax.set_ylabel("time to map Data [ms]")

# plotConv(ax, df, yname)

plt.gca().invert_xaxis()
plt.grid()
plt.savefig(prefix + "-mapt.pdf")


def main(argv):
args = parseArguments(argv[1:])
args = parse_arguments(argv[1:])

plt.rcParams["legend.fontsize"] = "small"
plt.rcParams["figure.figsize"] = "8, 8"
plt.rcParams["figure.autolayout"] = "true"

df = pandas.read_csv(args.file)
toMeshes = df["mesh B"].unique()
to_meshes = df["mesh B"].unique()
assert (
len(toMeshes) == 1
), f"There are {len(toMeshes)} to-meshes but only 1 is allowed. Fix your dataset!"
len(to_meshes) == 1
), f"There are {len(to_meshes)} to-meshes but only 1 is allowed. Fix your dataset!"
df.sort_values("mesh A", inplace=True)
plotError(df, args.prefix)
plotMemory(df, args.prefix)
plotMapDataTime(df, args.prefix)
plotComputeMappingTime(df, args.prefix)
plot_error(df, args.prefix)
plot_memory_usage(df, args.prefix)
plot_map_data_time(df, args.prefix)
plot_compute_mapping_time(df, args.prefix)
return 0


if __name__ == "__main__":
import sys

sys.exit(main(sys.argv))
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
import glob
import json
import os
import sys


def parseArguments(args):
def parse_arguments(args):
parser = argparse.ArgumentParser(description="Gathers stats after a run")
parser.add_argument(
"-o",
Expand All @@ -25,7 +26,7 @@ def parseArguments(args):
return parser.parse_args(args)


def statsFromTimings(dir):
def stats_from_timings(dir):
stats = {}
assert os.path.isdir(dir)
file = os.path.join(dir, "precice-B-events.json")
Expand Down Expand Up @@ -55,7 +56,7 @@ def statsFromTimings(dir):
return stats


def memoryStats(dir):
def memory_stats(dir):
stats = {}
assert os.path.isdir(dir)
for P in "A", "B":
Expand All @@ -73,23 +74,23 @@ def memoryStats(dir):


def main(argv):
args = parseArguments(argv[1:])
args = parse_arguments(argv[1:])

globber = os.path.join(args.outdir, "**", "*.stats.json")
statFiles = [
stat_files = [
os.path.relpath(path, args.outdir)
for path in glob.iglob(globber, recursive=True)
]
allstats = []
fields = []
for file in statFiles:
for file in stat_files:
print("Found: " + file)
casedir = os.path.join(args.outdir, os.path.dirname(file))
parts = os.path.normpath(file).split(os.sep)
assert len(parts) >= 5
mapping, constraint, meshes, ranks, _ = parts[-5:]
meshA, meshB = meshes.split("-")
ranksA, ranksB = meshes.split("-")
ranksA, ranksB = ranks.split("-")

with open(os.path.join(args.outdir, file), "r") as jsonfile:
stats = json.load(jsonfile)
Expand All @@ -99,8 +100,8 @@ def main(argv):
stats["mesh B"] = meshB
stats["ranks A"] = ranksA
stats["ranks B"] = ranksB
stats.update(statsFromTimings(casedir))
stats.update(memoryStats(casedir))
stats.update(stats_from_timings(casedir))
stats.update(memory_stats(casedir))
allstats.append(stats)
if not fields:
fields += stats.keys()
Expand All @@ -113,6 +114,4 @@ def main(argv):


if __name__ == "__main__":
import sys

sys.exit(main(sys.argv))
Loading