1
0
Fork 0

Graphs and results. Here we go bro. Wait, are we actually done?

This commit is contained in:
Casper V. Kristensen 2019-12-13 19:19:06 +01:00
parent 847f7ae287
commit 04528a928a
20 changed files with 6149 additions and 39 deletions

View file

@ -1,12 +1,21 @@
import subprocess
def main():
def simple_collect():
for num_servers in [2]:
for database_size in [2, 64, 512, 2048, 8192, 32_768, 65_536, 131_072, 262_144, 524_288, 1_048_576, 2_097_152, 4_194_304, 8_388_608]:
for block_size in [2, 64, 512, 1024, 4096, 8192, 16_384]:
subprocess.run(["java", "dk.au.pir.Driver", "-Xmx60G", str(num_servers), str(database_size), str(block_size)])
for block_size in [1]:
for database_size in [2, 4, 8, 16, 32, 64, 128, 256, 512, 1_024, 2_048, 4_096, 8_192, 16_384, 32_768, 65_536, 131_072, 262_144, 524_288, 1_048_576, 2_097_152, 4_194_304, 8_388_608]:
subprocess.run(["java", "dk.au.pir.Driver", "-Xmx250G", str(num_servers), str(database_size), str(block_size)])
def smarter_but_still_not_very_smart_collect():
combinations = set()
for block_size in [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1_024, 2_048, 4_096, 8_192, 16_384, 32_768, 65_536, 131_072, 262_144, 524_288, 1_048_576]:
for database_size in [2, 4, 8, 16, 32, 64, 128, 256, 512, 1_024, 2_048, 4_096, 8_192, 16_384, 32_768, 65_536, 131_072, 262_144, 524_288, 1_048_576, 2_097_152, 4_194_304, 8_388_608, 16_777_216, 33_554_432, 67_108_864, 134_217_728, 268_435_456, 536_870_912]:
combinations.add((block_size, database_size))
for block_size, database_size in sorted(combinations, key=lambda c: c[0] * c[1]):
subprocess.run(["java", "dk.au.pir.Driver", "-Xmx250G", "2", str(database_size), str(block_size)])
if __name__ == '__main__':
main()
smarter_but_still_not_very_smart_collect()

View file

@ -1,13 +1,19 @@
import math
import re
import statistics
from collections import defaultdict
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.artist import setp
import util
def load_results(filename) -> dict:
results = defaultdict(list)
with open(filename, "r") as file:
with open(f"results/{filename}", "r") as file:
for line in file:
if "error" in line:
continue
@ -18,8 +24,8 @@ def load_results(filename) -> dict:
("block_size", int),
("protocol_name", str),
("total_cpu_time", int),
("bytes_sent", int),
("bytes_received", int)
("bits_sent", int),
("bits_received", int)
]
d = dict([(a[0], a[1](b)) for a, b in zip(keys, values)])
results[(d["num_servers"], d["database_size"], d["block_size"], d["protocol_name"])].append(d)
@ -29,60 +35,295 @@ def load_results(filename) -> dict:
def clean_results(results) -> dict:
cleaned_results = defaultdict(list)
for test, result in results.items():
cpu_time = statistics.mean(sorted([int(r["total_cpu_time"]) for r in result])) # [1:-1]
cleaned_results[result[0]["protocol_name"]].append({**result[0], "total_cpu_time": cpu_time})
cpu_time = statistics.mean(sorted([int(r["total_cpu_time"]) for r in result]))
bits_sent = statistics.mean(sorted([int(r["bits_sent"]) for r in result]))
bits_received = statistics.mean(sorted([int(r["bits_received"]) for r in result]))
cleaned_results[result[0]["protocol_name"]].append({
**result[0],
"total_cpu_time": cpu_time,
"bits_sent": bits_sent,
"bits_received": bits_received
})
return cleaned_results
def plot(all_results: dict, y_func: callable, x_func: callable, title=None, y_label=None, x_label=None):
def filter_results(results: dict, func: callable):
return {protocol_name: [r for r in results if func(r)]
for protocol_name, results in results.items()}
def save_fig(plt, title):
clean_title = re.sub(r"\W", r"_", title)
plt.savefig(f"plots/{clean_title}.pdf")
def with_bandwidth(result: dict, bandwidth=10):
return max(1, result["total_cpu_time"] + ((result["bits_sent"] + result["bits_received"]) / (bandwidth * 1000))) # 1000 bits/ms = 1 Mbit/s
def plot(all_results: dict, y_func: callable, x_func: callable, title=None, y_label=None, x_label=None,
logx=False, logy=False, scatter=False):
fig, ax = plt.subplots()
for protocol_name, results in all_results.items():
sorted_results = sorted(results, key=lambda r: x_func(r))
ax.plot(
if scatter:
plot_func = ax.scatter
else:
plot_func = ax.plot
plot_func(
[x_func(r) for r in sorted_results],
[y_func(r) for r in sorted_results],
label=protocol_name.replace("_", " ")
)
#for results in all_results.values():
# for r in results:
# ax.annotate(f"{r['database_size']}, {r['block_size']}", (x_func(r), y_func(r)), fontsize=3)
if logx:
ax.set_xscale("log", basex=2)
#ax.set_yscale("log", basey=10)
if logy:
ax.set_yscale("log", basey=2)
if x_label is not None:
plt.xlabel(x_label)
if y_label is not None:
plt.ylabel(y_label)
plt.legend(all_results.keys(), loc="upper left")
if title is not None:
plt.title(title)
plt.legend(loc="upper left")
#if title is not None:
# plt.title(title)
plt.savefig(title.replace(" ", "_").replace("/", "") + ".pdf")
save_fig(plt, title)
#plt.show()
if __name__ == '__main__':
def plot_3x_with_simulated_bandwidth(all_results: dict, title: str):
ax1 = plt.subplot(121)
ax2 = plt.subplot(122, sharex=ax1, sharey=ax1)
ax1.set_ylabel("Time (ms)")
setp(ax2.get_yticklabels(), visible=False)
ax1.set_xlabel("Total Database Size (bits)")
ax2.set_xlabel("Total Database Size (bits)")
for ax in (ax1, ax2):
ax.tick_params("y")
ax.set_xscale("log", basex=2)
ax.set_yscale("log", basey=2)
ax1.set_title("10 Mbit/s)")
ax2.set_title("100 Mbit/s")
for protocol_name, results in all_results.items():
x_func = lambda r: r["database_size"] * r["block_size"]
sorted_results = sorted(results, key=lambda r: x_func(r))
ax1.plot(
[x_func(r) for r in sorted_results],
[with_bandwidth(r, 10) for r in sorted_results],
label=protocol_name.replace("_", " ")
)
ax2.plot(
[x_func(r) for r in sorted_results],
[with_bandwidth(r, 100) for r in sorted_results],
label=protocol_name.replace("_", " ")
)
ax1.legend(loc="upper left")
# fig.subplots_adjust(wspace=0)
save_fig(plt, title)
#plt.show()
def plot_send_receive(all_results: dict, title: str):
ax1 = plt.subplot(121)
ax2 = plt.subplot(122, sharex=ax1)
ax1.set_ylabel("Sent (bits)")
ax2.set_ylabel("Received (bits)")
setp(ax2.get_yticklabels(), visible=False)
ax2.yaxis.set_label_position("left")
for ax in (ax1, ax2):
ax.set_xlabel("Total Database Size (bits)")
ax.tick_params("y")
ax.set_xscale("log", basex=2)
ax.set_yscale("log", basey=2)
for protocol_name, results in all_results.items():
x_func = lambda r: r["database_size"] * r["block_size"]
sorted_results = sorted(results, key=lambda r: x_func(r))
ax1.plot(
[x_func(r) for r in sorted_results],
[max(1, r["bits_sent"]) for r in sorted_results],
label=protocol_name.replace("_", " ")
)
ax2.plot(
[x_func(r) for r in sorted_results],
[max(1, r["bits_received"]) for r in sorted_results],
label=protocol_name.replace("_", " ")
)
ax1.legend(loc="upper left")
# fig.subplots_adjust(wspace=0)
save_fig(plt, title)
#plt.show()
def matrixify(results: list, x_func: callable, y_func: callable, z_func: callable):
x_labels = list(sorted(set(x_func(r) for r in results)))
y_labels = list(sorted(set(y_func(r) for r in results)))
data = {y: {x: 1 for x in x_labels}
for y in y_labels}
for r in results:
data[y_func(r)][x_func(r)] = z_func(r)
return np.array([list(y.values()) for y in data.values()]), x_labels, y_labels
def plot_scheme_heatmap(results: list, title: str, bandwidth: int):
data, x_labels, y_labels = matrixify(
results,
x_func=lambda r: r["database_size"],
y_func=lambda r: r["block_size"],
z_func=lambda r: with_bandwidth(r, bandwidth)
)
im, cbar = util.heatmap(
data,
[f"$2^{{{int(math.log2(y))}}}$" for y in y_labels],
[f"$2^{{{int(math.log2(x))}}}$" for x in x_labels],
xlabel="Database Size (bits)",
ylabel="Block Size (bits)",
cbarlabel="Time (ms)",
logcolor=True,
origin="lower",
cmap=cm.gray
)
save_fig(plt, title)
def plot_old_vs_new_heatmap(all_results: dict, old_func: callable, new_func: callable, title: str):
data_old, x_labels, y_labels = matrixify(
old_func(all_results),
x_func=lambda r: r["database_size"],
y_func=lambda r: r["block_size"],
z_func=lambda r: with_bandwidth(r, 10)
)
data_new, x_labels, y_labels = matrixify(
new_func(all_results),
x_func=lambda r: r["database_size"],
y_func=lambda r: r["block_size"],
z_func=lambda r: with_bandwidth(r, 10)
)
def calc(i, j):
try:
return data_new[i, j] - data_old[i, j]
except IndexError:
return 0
im, cbar = util.heatmap(
np.array([[calc(i, j) for j, y in enumerate(x)] for i, x in enumerate(data_new)]),
[f"$2^{{{int(math.log2(y))}}}$" for y in y_labels],
[f"$2^{{{int(math.log2(x))}}}$" for x in x_labels],
xlabel="Database Size (bits)",
ylabel="Block Size (bits)",
cbarlabel="Time Difference (ms)",
sym_logcolor=True,
origin="lower",
)
save_fig(plt, title)
def main():
# Simple CPU Time
plot(
clean_results(load_results("results_only_with_8_bs.log")),
y_label="Time",
x_label="Total Database Size",
title="Fixed 8-bit block size",
filter_results(clean_results(load_results("results_combined.log")), lambda r: r["block_size"] == 1),
y_label="Time (ms)",
x_label="Total Database Size (bits)",
title="Computation Time - 1-bit Block Size",
y_func=lambda r: max(1, r["total_cpu_time"]),
x_func=lambda r: r["database_size"] * r["block_size"]
)
plot(
clean_results(load_results("results_only_with_8_bs.log")),
y_label="Time",
x_label="Total Database Size",
title="Fixed 8-bit block size - simulated 1MiB/s tx, 5MiB/s rx",
y_func=lambda r: r["total_cpu_time"] + (r["bytes_sent"]/(1*1024)) + (r["bytes_received"]/(5*1024)), # 1024 B/ms = 1MiB/s
x_func=lambda r: r["database_size"] * r["block_size"]
x_func=lambda r: r["database_size"] * r["block_size"],
logx=True,
logy=True
)
plt.close()
# ... with simulated bandwidth, e.g. estimated total real time
plot_3x_with_simulated_bandwidth(
filter_results(clean_results(load_results("results_combined.log")), lambda r: r["block_size"] == 1),
title="Total Time with Simulated Bandwidth - 1-bit Block Size"
)
# CPU Time per bit as a function of block/database-ratio
#plot(
# {n: [r for r in rs if r["block_size"] == 2] for n, rs in clean_results(load_results("results_overflow.log")).items()},
# y_label="Time",
# x_label="Total Database Size",
# title="lol",
# y_func=lambda r: r["total_cpu_time"] + (r["bytes_sent"]/(1*1024)) + (r["bytes_received"]/(10*1024)), # 1024 B/ms = 1MiB/s
# x_func=lambda r: r["database_size"] * r["block_size"]
# filter_results(clean_results(load_results("results_combined.log")),
# lambda r: r["protocol_name"] != "Interpolation" and r["database_size"] * r["block_size"] > 1024),
# y_label="Time (ms)",
# x_label="Block Size / Database Size (ratio)",
# title="Computation Time per bit - Block Size / Database Size Ratio",
# y_func=lambda r: max(1, r["total_cpu_time"] / (r["database_size"] * r["block_size"])),
# x_func=lambda r: r["block_size"] / r["database_size"],
# logx=True
#)
plt.close()
# Simple Network Traffic
plot_send_receive(
filter_results(clean_results(load_results("results_combined.log")), lambda r: r["block_size"] == 1),
title="Network Traffic - 1-bit Block Size"
)
# Scatter-plot of total real-time (cpu + simulated bandwidth), varying both block size and database size
#plot(
# clean_results(load_results("results_fast_var-bs_var-db.log")),
# y_label="Time (ms)",
# x_label="Total Database Size (bits)",
# title="Total Time with Simulated Bandwidth - Varying Block and Database Size",
# y_func=lambda r: max(1, r["total_cpu_time"] + ((r["bits_sent"]+r["bits_received"])/(10*1000))), # 1000 bits/ms = 1 Mbit/s
# x_func=lambda r: r["database_size"] * r["block_size"],
# scatter=True
#)
plt.close()
# 2D Heatmap of CPU time for Simple/XOR/Balanced XOR - varying both database size and block size
plot_scheme_heatmap(
clean_results(load_results("results_fast_var-bs_var-db.log"))["Send_All"],
title="Total Simulated Time Heatmap: Send All - Varying Database Size and Block Size - 10Mbit/s",
bandwidth=10
)
plt.close()
plot_scheme_heatmap(
clean_results(load_results("results_fast_var-bs_var-db.log"))["XOR"],
title="Total Simulated Time Heatmap: XOR - Varying Database Size and Block Size - 10Mbit/s",
bandwidth=10
)
plt.close()
plot_scheme_heatmap(
clean_results(load_results("results_fast_var-bs_var-db.log"))["Balanced_XOR"],
title="Total Simulated Time Heatmap: Balanced XOR - Varying Database Size and Block Size - 10Mbit/s",
bandwidth=10
)
plt.close()
# 2D Heatmaps of Schemes Versus (CPU + simulated bandwidth), varying both block size and database size
plot_old_vs_new_heatmap(
clean_results(load_results("results_fast_var-bs_var-db.log")),
old_func=lambda rs: rs["Send_All"],
new_func=lambda rs: rs["Balanced_XOR"],
title="Total Simulated Time Heatmap: Send All vs Balanced XOR - Varying Database Size and Block Size - 10 Mbit/s"
)
plt.close()
plot_old_vs_new_heatmap(
clean_results(load_results("results_fast_var-bs_var-db.log")),
old_func=lambda rs: rs["XOR"],
new_func=lambda rs: rs["Balanced_XOR"],
title="Total Simulated Time Heatmap: XOR vs Balanced XOR - Varying Database Size and Block Size - 10 Mbit/s"
)
plt.close()
if __name__ == '__main__':
main()

View file

@ -0,0 +1,173 @@
2 2 1 SendAllScheme 0 0 2
2 2 1 XORScheme 0 4 2
2 2 1 SqrtXORScheme 0 4 4
2 2 1 SendAllScheme 0 0 2
2 2 1 XORScheme 0 4 2
2 2 1 SqrtXORScheme 0 4 4
2 2 1 SendAllScheme 0 0 2
2 2 1 XORScheme 0 4 2
2 2 1 SqrtXORScheme 0 4 4
2 64 1 SendAllScheme 0 0 64
2 64 1 XORScheme 1 128 2
2 64 1 SqrtXORScheme 1 16 16
2 64 1 SendAllScheme 0 0 64
2 64 1 XORScheme 0 128 2
2 64 1 SqrtXORScheme 0 16 16
2 64 1 SendAllScheme 0 0 64
2 64 1 XORScheme 0 128 2
2 64 1 SqrtXORScheme 0 16 16
2 512 1 SendAllScheme 0 0 512
2 512 1 XORScheme 0 1024 2
2 512 1 SqrtXORScheme 0 46 46
2 512 1 SendAllScheme 0 0 512
2 512 1 XORScheme 0 1024 2
2 512 1 SqrtXORScheme 0 46 46
2 512 1 SendAllScheme 0 0 512
2 512 1 XORScheme 0 1024 2
2 512 1 SqrtXORScheme 0 46 46
2 2048 1 SendAllScheme 0 0 2048
2 2048 1 XORScheme 1 4096 2
2 2048 1 SqrtXORScheme 0 92 92
2 2048 1 SendAllScheme 0 0 2048
2 2048 1 XORScheme 1 4096 2
2 2048 1 SqrtXORScheme 0 92 92
2 2048 1 SendAllScheme 0 0 2048
2 2048 1 XORScheme 1 4096 2
2 2048 1 SqrtXORScheme 0 92 92
2 8192 1 SendAllScheme 1 0 8192
2 8192 1 XORScheme 3 16384 2
2 8192 1 SqrtXORScheme 1 182 182
2 8192 1 SendAllScheme 0 0 8192
2 8192 1 XORScheme 2 16384 2
2 8192 1 SqrtXORScheme 1 182 182
2 8192 1 SendAllScheme 0 0 8192
2 8192 1 XORScheme 2 16384 2
2 8192 1 SqrtXORScheme 1 182 182
2 32768 1 SendAllScheme 0 0 32768
2 32768 1 XORScheme 8 65536 2
2 32768 1 SqrtXORScheme 4 364 364
2 32768 1 SendAllScheme 0 0 32768
2 32768 1 XORScheme 4 65536 2
2 32768 1 SqrtXORScheme 1 364 364
2 32768 1 SendAllScheme 0 0 32768
2 32768 1 XORScheme 2 65536 2
2 32768 1 SqrtXORScheme 1 364 364
2 65536 1 SendAllScheme 0 0 65536
2 65536 1 XORScheme 12 131072 2
2 65536 1 SqrtXORScheme 5 512 512
2 65536 1 SendAllScheme 0 0 65536
2 65536 1 XORScheme 2 131072 2
2 65536 1 SqrtXORScheme 1 512 512
2 65536 1 SendAllScheme 0 0 65536
2 65536 1 XORScheme 2 131072 2
2 65536 1 SqrtXORScheme 2 512 512
2 131072 1 SendAllScheme 0 0 131072
2 131072 1 XORScheme 16 262144 2
2 131072 1 SqrtXORScheme 6 726 726
2 131072 1 SendAllScheme 0 0 131072
2 131072 1 XORScheme 5 262144 2
2 131072 1 SqrtXORScheme 0 726 726
2 131072 1 SendAllScheme 0 0 131072
2 131072 1 XORScheme 4 262144 2
2 131072 1 SqrtXORScheme 0 726 726
2 262144 1 SendAllScheme 0 0 262144
2 262144 1 XORScheme 20 524288 2
2 262144 1 SqrtXORScheme 9 1024 1024
2 262144 1 SendAllScheme 0 0 262144
2 262144 1 XORScheme 5 524288 2
2 262144 1 SqrtXORScheme 4 1024 1024
2 262144 1 SendAllScheme 0 0 262144
2 262144 1 XORScheme 7 524288 2
2 262144 1 SqrtXORScheme 1 1024 1024
2 524288 1 SendAllScheme 0 0 524288
2 524288 1 XORScheme 29 1048576 2
2 524288 1 SqrtXORScheme 10 1450 1450
2 524288 1 SendAllScheme 0 0 524288
2 524288 1 XORScheme 15 1048576 2
2 524288 1 SqrtXORScheme 1 1450 1450
2 524288 1 SendAllScheme 0 0 524288
2 524288 1 XORScheme 10 1048576 2
2 524288 1 SqrtXORScheme 2 1450 1450
2 1048576 1 SendAllScheme 0 0 1048576
2 1048576 1 XORScheme 43 2097152 2
2 1048576 1 SqrtXORScheme 19 2048 2048
2 1048576 1 SendAllScheme 0 0 1048576
2 1048576 1 XORScheme 25 2097152 2
2 1048576 1 SqrtXORScheme 2 2048 2048
2 1048576 1 SendAllScheme 0 0 1048576
2 1048576 1 XORScheme 21 2097152 2
2 1048576 1 SqrtXORScheme 2 2048 2048
2 2097152 1 SendAllScheme 0 0 2097152
2 2097152 1 XORScheme 67 4194304 2
2 2097152 1 SqrtXORScheme 25 2898 2898
2 2097152 1 SendAllScheme 0 0 2097152
2 2097152 1 XORScheme 46 4194304 2
2 2097152 1 SqrtXORScheme 4 2898 2898
2 2097152 1 SendAllScheme 0 0 2097152
2 2097152 1 XORScheme 42 4194304 2
2 2097152 1 SqrtXORScheme 5 2898 2898
2 4194304 1 SendAllScheme 0 0 4194304
2 4194304 1 XORScheme 112 8388608 2
2 4194304 1 SqrtXORScheme 37 4096 4096
2 4194304 1 SendAllScheme 0 0 4194304
2 4194304 1 XORScheme 89 8388608 2
2 4194304 1 SqrtXORScheme 9 4096 4096
2 4194304 1 SendAllScheme 0 0 4194304
2 4194304 1 XORScheme 84 8388608 2
2 4194304 1 SqrtXORScheme 10 4096 4096
2 8388608 1 SendAllScheme 0 0 8388608
2 8388608 1 XORScheme 196 16777216 2
2 8388608 1 SqrtXORScheme 46 5794 5794
2 8388608 1 SendAllScheme 0 0 8388608
2 8388608 1 XORScheme 170 16777216 2
2 8388608 1 SqrtXORScheme 28 5794 5794
2 8388608 1 SendAllScheme 0 0 8388608
2 8388608 1 XORScheme 164 16777216 2
2 8388608 1 SqrtXORScheme 36 5794 5794
2 2 8192 SendAllScheme 1 0 16384
2 2 8192 XORScheme 2835 268435456 16384
2 2 8192 SqrtXORScheme 347 2097152 2097152
2 2 8192 SendAllScheme 1 0 16384
2 2 8192 XORScheme 2831 268435456 16384
2 2 8192 SqrtXORScheme 329 2097152 2097152
2 2 8192 SendAllScheme 1 0 16384
2 2 8192 XORScheme 2761 268435456 16384
2 2 8192 SqrtXORScheme 328 2097152 2097152
2 64 8192 SendAllScheme 1 0 524288
2 64 8192 XORScheme 84464 8589934592 16384
2 64 8192 SqrtXORScheme 9673 11878400 11878400
2 64 8192 SendAllScheme 1 0 524288
2 64 8192 XORScheme 83689 8589934592 16384
2 64 8192 SqrtXORScheme 11038 11878400 11878400
2 64 8192 SendAllScheme 1 0 524288
2 64 8192 XORScheme 83580 8589934592 16384
2 64 8192 SqrtXORScheme 11040 11878400 11878400
2 512 8192 SendAllScheme 1 0 4194304
2 512 8192 XORScheme error:oom
2 512 8192 SqrtXORScheme 88384 33554432 33554432
2 512 8192 SendAllScheme 1 0 4194304
2 512 8192 XORScheme error:oom
2 512 8192 SqrtXORScheme 78220 33554432 33554432
2 512 8192 SendAllScheme 1 0 4194304
2 512 8192 XORScheme error:oom
2 512 8192 SqrtXORScheme 78214 33554432 33554432
2 2048 8192 SendAllScheme 2 0 16777216
2 2048 8192 XORScheme error:oom
2 2048 8192 SqrtXORScheme 410902 67108864 67108864
2 2048 8192 SendAllScheme 1 0 16777216
2 2048 8192 XORScheme error:oom
2 2048 8192 SqrtXORScheme 403634 67108864 67108864
2 2048 8192 SendAllScheme 1 0 16777216
2 2048 8192 XORScheme error:oom
2 2048 8192 SqrtXORScheme 403194 67108864 67108864
2 8192 8192 SendAllScheme 1 0 67108864
2 8192 8192 XORScheme error:oom
2 8192 8192 SqrtXORScheme 2129871 134217728 134217728
2 8192 8192 SendAllScheme 1 0 67108864
2 8192 8192 XORScheme error:oom
2 8192 8192 SqrtXORScheme 2117438 134217728 134217728
2 8192 8192 SendAllScheme 1 0 67108864
2 8192 8192 XORScheme error:oom
2 8192 8192 SqrtXORScheme 2116519 134217728 134217728
2 32768 8192 SendAllScheme 1 0 268435456
2 32768 8192 XORScheme error:oom

View file

@ -0,0 +1,168 @@
2 2 1 SendAllScheme 0 0 2
2 2 1 XORScheme 0 4 2
2 2 1 SqrtXORScheme 0 4 4
2 2 1 InterPolyScheme 2 9 9
2 2 1 SendAllScheme 0 0 2
2 2 1 XORScheme 0 4 2
2 2 1 SqrtXORScheme 0 4 4
2 2 1 InterPolyScheme 1 18 10
2 2 1 SendAllScheme 0 0 2
2 2 1 XORScheme 0 4 2
2 2 1 SqrtXORScheme 0 4 4
2 2 1 InterPolyScheme 1 18 9
2 64 1 SendAllScheme 0 0 64
2 64 1 XORScheme 0 128 2
2 64 1 SqrtXORScheme 0 16 16
2 64 1 InterPolyScheme 7 482 9
2 64 1 SendAllScheme 0 0 64
2 64 1 XORScheme 0 128 2
2 64 1 SqrtXORScheme 0 16 16
2 64 1 InterPolyScheme 3 514 0
2 64 1 SendAllScheme 0 0 64
2 64 1 XORScheme 0 128 2
2 64 1 SqrtXORScheme 0 16 16
2 64 1 InterPolyScheme 2 508 9
2 512 1 SendAllScheme 0 0 512
2 512 1 XORScheme 1 1024 2
2 512 1 SqrtXORScheme 0 46 46
2 512 1 InterPolyScheme 23 4112 3
2 512 1 SendAllScheme 0 0 512
2 512 1 XORScheme 0 1024 2
2 512 1 SqrtXORScheme 0 46 46
2 512 1 InterPolyScheme 6 3905 9
2 512 1 SendAllScheme 0 0 512
2 512 1 XORScheme 0 1024 2
2 512 1 SqrtXORScheme 0 46 46
2 512 1 InterPolyScheme 6 4082 7
2 2048 1 SendAllScheme 0 0 2048
2 2048 1 XORScheme 1 4096 2
2 2048 1 SqrtXORScheme 0 92 92
2 2048 1 InterPolyScheme 69 16092 10
2 2048 1 SendAllScheme 0 0 2048
2 2048 1 XORScheme 1 4096 2
2 2048 1 SqrtXORScheme 0 92 92
2 2048 1 InterPolyScheme 45 16018 9
2 2048 1 SendAllScheme 0 0 2048
2 2048 1 XORScheme 1 4096 2
2 2048 1 SqrtXORScheme 0 92 92
2 2048 1 InterPolyScheme 40 16047 10
2 8192 1 SendAllScheme 0 0 8192
2 8192 1 XORScheme 3 16384 2
2 8192 1 SqrtXORScheme 1 182 182
2 8192 1 InterPolyScheme 684 64567 7
2 8192 1 SendAllScheme 0 0 8192
2 8192 1 XORScheme 2 16384 2
2 8192 1 SqrtXORScheme 1 182 182
2 8192 1 InterPolyScheme 363 64206 3
2 8192 1 SendAllScheme 0 0 8192
2 8192 1 XORScheme 2 16384 2
2 8192 1 SqrtXORScheme 1 182 182
2 8192 1 InterPolyScheme 342 64668 9
2 32768 1 SendAllScheme 0 0 32768
2 32768 1 XORScheme 8 65536 2
2 32768 1 SqrtXORScheme 4 364 364
2 32768 1 InterPolyScheme 4771 258217 9
2 32768 1 SendAllScheme 0 0 32768
2 32768 1 XORScheme 5 65536 2
2 32768 1 SqrtXORScheme 0 364 364
2 32768 1 InterPolyScheme 5704 257927 7
2 32768 1 SendAllScheme 0 0 32768
2 32768 1 XORScheme 2 65536 2
2 32768 1 SqrtXORScheme 1 364 364
2 32768 1 InterPolyScheme 5129 257162 9
2 65536 1 SendAllScheme 0 0 65536
2 65536 1 XORScheme 12 131072 2
2 65536 1 SqrtXORScheme 5 512 512
2 65536 1 InterPolyScheme 29591 515270 9
2 65536 1 SendAllScheme 0 0 65536
2 65536 1 XORScheme 2 131072 2
2 65536 1 SqrtXORScheme 0 512 512
2 65536 1 InterPolyScheme 17770 515170 8
2 65536 1 SendAllScheme 0 0 65536
2 65536 1 XORScheme 2 131072 2
2 65536 1 SqrtXORScheme 0 512 512
2 65536 1 InterPolyScheme 28930 515357 10
2 131072 1 SendAllScheme 0 0 131072
2 131072 1 XORScheme 15 262144 2
2 131072 1 SqrtXORScheme 7 726 726
2 131072 1 InterPolyScheme 71549 1030490 9
2 131072 1 SendAllScheme 0 0 131072
2 131072 1 XORScheme 3 262144 2
2 131072 1 SqrtXORScheme 1 726 726
2 131072 1 InterPolyScheme 26342 1030046 10
2 131072 1 SendAllScheme 0 0 131072
2 131072 1 XORScheme 2 262144 2
2 131072 1 SqrtXORScheme 1 726 726
2 131072 1 InterPolyScheme 26159 1030650 9
2 262144 1 SendAllScheme 0 0 262144
2 262144 1 XORScheme 21 524288 2
2 262144 1 SqrtXORScheme 9 1024 1024
2 262144 1 InterPolyScheme error:oom
2 262144 1 SendAllScheme 0 0 262144
2 262144 1 XORScheme 8 524288 2
2 262144 1 SqrtXORScheme 3 1024 1024
2 262144 1 InterPolyScheme error:oom
2 262144 1 SendAllScheme 0 0 262144
2 262144 1 XORScheme 5 524288 2
2 262144 1 SqrtXORScheme 1 1024 1024
2 262144 1 InterPolyScheme error:oom
2 524288 1 SendAllScheme 0 0 524288
2 524288 1 XORScheme 29 1048576 2
2 524288 1 SqrtXORScheme 10 1450 1450
2 524288 1 InterPolyScheme error:oom
2 524288 1 SendAllScheme 0 0 524288
2 524288 1 XORScheme 10 1048576 2
2 524288 1 SqrtXORScheme 2 1450 1450
2 524288 1 InterPolyScheme error:oom
2 524288 1 SendAllScheme 0 0 524288
2 524288 1 XORScheme 10 1048576 2
2 524288 1 SqrtXORScheme 1 1450 1450
2 524288 1 InterPolyScheme error:oom
2 1048576 1 SendAllScheme 0 0 1048576
2 1048576 1 XORScheme 43 2097152 2
2 1048576 1 SqrtXORScheme 17 2048 2048
2 1048576 1 InterPolyScheme error:oom
2 1048576 1 SendAllScheme 0 0 1048576
2 1048576 1 XORScheme 26 2097152 2
2 1048576 1 SqrtXORScheme 2 2048 2048
2 1048576 1 InterPolyScheme error:oom
2 1048576 1 SendAllScheme 0 0 1048576
2 1048576 1 XORScheme 31 2097152 2
2 1048576 1 SqrtXORScheme 3 2048 2048
2 1048576 1 InterPolyScheme error:oom
2 2097152 1 SendAllScheme 0 0 2097152
2 2097152 1 XORScheme 67 4194304 2
2 2097152 1 SqrtXORScheme 22 2898 2898
2 2097152 1 InterPolyScheme error:oom
2 2097152 1 SendAllScheme 0 0 2097152
2 2097152 1 XORScheme 53 4194304 2
2 2097152 1 SqrtXORScheme 5 2898 2898
2 2097152 1 InterPolyScheme error:oom
2 2097152 1 SendAllScheme 0 0 2097152
2 2097152 1 XORScheme 47 4194304 2
2 2097152 1 SqrtXORScheme 5 2898 2898
2 2097152 1 InterPolyScheme error:oom
2 4194304 1 SendAllScheme 0 0 4194304
2 4194304 1 XORScheme 109 8388608 2
2 4194304 1 SqrtXORScheme 35 4096 4096
2 4194304 1 InterPolyScheme error:oom
2 4194304 1 SendAllScheme 0 0 4194304
2 4194304 1 XORScheme 90 8388608 2
2 4194304 1 SqrtXORScheme 9 4096 4096
2 4194304 1 InterPolyScheme error:oom
2 4194304 1 SendAllScheme 0 0 4194304
2 4194304 1 XORScheme 223 8388608 2
2 4194304 1 SqrtXORScheme 9 4096 4096
2 4194304 1 InterPolyScheme error:oom
2 8388608 1 SendAllScheme 0 0 8388608
2 8388608 1 XORScheme 195 16777216 2
2 8388608 1 SqrtXORScheme 45 5794 5794
2 8388608 1 InterPolyScheme error:oom
2 8388608 1 SendAllScheme 0 0 8388608
2 8388608 1 XORScheme 287 16777216 2
2 8388608 1 SqrtXORScheme 28 5794 5794
2 8388608 1 InterPolyScheme error:oom
2 8388608 1 SendAllScheme 0 0 8388608
2 8388608 1 XORScheme 306 16777216 2
2 8388608 1 SqrtXORScheme 35 5794 5794
2 8388608 1 InterPolyScheme error:oom

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,168 @@
2 2 1 Send_All 0 0 2
2 2 1 XOR 0 4 2
2 2 1 Balanced_XOR 0 4 4
2 2 1 Interpolation 2 16 9
2 2 1 Send_All 0 0 2
2 2 1 XOR 0 4 2
2 2 1 Balanced_XOR 0 4 4
2 2 1 Interpolation 1 14 7
2 2 1 Send_All 0 0 2
2 2 1 XOR 0 4 2
2 2 1 Balanced_XOR 0 4 4
2 2 1 Interpolation 1 12 9
2 64 1 Send_All 0 0 64
2 64 1 XOR 0 128 2
2 64 1 Balanced_XOR 0 16 16
2 64 1 Interpolation 7 530 8
2 64 1 Send_All 0 0 64
2 64 1 XOR 0 128 2
2 64 1 Balanced_XOR 0 16 16
2 64 1 Interpolation 3 539 5
2 64 1 Send_All 0 0 64
2 64 1 XOR 0 128 2
2 64 1 Balanced_XOR 1 16 16
2 64 1 Interpolation 2 501 9
2 512 1 Send_All 0 0 512
2 512 1 XOR 1 1024 2
2 512 1 Balanced_XOR 0 46 46
2 512 1 Interpolation 22 3971 10
2 512 1 Send_All 0 0 512
2 512 1 XOR 0 1024 2
2 512 1 Balanced_XOR 1 46 46
2 512 1 Interpolation 7 4073 9
2 512 1 Send_All 0 0 512
2 512 1 XOR 0 1024 2
2 512 1 Balanced_XOR 0 46 46
2 512 1 Interpolation 6 3984 9
2 2048 1 Send_All 0 0 2048
2 2048 1 XOR 1 4096 2
2 2048 1 Balanced_XOR 1 92 92
2 2048 1 Interpolation 71 16150 9
2 2048 1 Send_All 0 0 2048
2 2048 1 XOR 0 4096 2
2 2048 1 Balanced_XOR 1 92 92
2 2048 1 Interpolation 41 16204 10
2 2048 1 Send_All 0 0 2048
2 2048 1 XOR 0 4096 2
2 2048 1 Balanced_XOR 1 92 92
2 2048 1 Interpolation 40 16019 3
2 8192 1 Send_All 0 0 8192
2 8192 1 XOR 3 16384 2
2 8192 1 Balanced_XOR 2 182 182
2 8192 1 Interpolation 690 64664 10
2 8192 1 Send_All 0 0 8192
2 8192 1 XOR 1 16384 2
2 8192 1 Balanced_XOR 2 182 182
2 8192 1 Interpolation 419 64248 9
2 8192 1 Send_All 0 0 8192
2 8192 1 XOR 1 16384 2
2 8192 1 Balanced_XOR 3 182 182
2 8192 1 Interpolation 337 64303 7
2 32768 1 Send_All 0 0 32768
2 32768 1 XOR 8 65536 2
2 32768 1 Balanced_XOR 7 364 364
2 32768 1 Interpolation 7269 258056 3
2 32768 1 Send_All 0 0 32768
2 32768 1 XOR 4 65536 2
2 32768 1 Balanced_XOR 1 364 364
2 32768 1 Interpolation 4309 258372 9
2 32768 1 Send_All 0 0 32768
2 32768 1 XOR 1 65536 2
2 32768 1 Balanced_XOR 1 364 364
2 32768 1 Interpolation 5130 257345 8
2 65536 1 Send_All 0 0 65536
2 65536 1 XOR 12 131072 2
2 65536 1 Balanced_XOR 9 512 512
2 65536 1 Interpolation 18598 514813 10
2 65536 1 Send_All 0 0 65536
2 65536 1 XOR 3 131072 2
2 65536 1 Balanced_XOR 2 512 512
2 65536 1 Interpolation 33620 514984 9
2 65536 1 Send_All 0 0 65536
2 65536 1 XOR 1 131072 2
2 65536 1 Balanced_XOR 2 512 512
2 65536 1 Interpolation 20348 514251 7
2 131072 1 Send_All 0 0 131072
2 131072 1 XOR 16 262144 2
2 131072 1 Balanced_XOR 11 726 726
2 131072 1 Interpolation 110963 1030674 10
2 131072 1 Send_All 0 0 131072
2 131072 1 XOR 4 262144 2
2 131072 1 Balanced_XOR 2 726 726
2 131072 1 Interpolation 72403 1032461 10
2 131072 1 Send_All 0 0 131072
2 131072 1 XOR 3 262144 2
2 131072 1 Balanced_XOR 0 726 726
2 131072 1 Interpolation 109470 1030630 9
2 262144 1 Send_All 0 0 262144
2 262144 1 XOR 21 524288 2
2 262144 1 Balanced_XOR 14 1024 1024
2 262144 1 Interpolation error:oom
2 262144 1 Send_All 0 0 262144
2 262144 1 XOR 10 524288 2
2 262144 1 Balanced_XOR 6 1024 1024
2 262144 1 Interpolation error:oom
2 262144 1 Send_All 0 0 262144
2 262144 1 XOR 5 524288 2
2 262144 1 Balanced_XOR 3 1024 1024
2 262144 1 Interpolation error:oom
2 524288 1 Send_All 0 0 524288
2 524288 1 XOR 30 1048576 2
2 524288 1 Balanced_XOR 18 1450 1450
2 524288 1 Interpolation error:oom
2 524288 1 Send_All 0 0 524288
2 524288 1 XOR 19 1048576 2
2 524288 1 Balanced_XOR 2 1450 1450
2 524288 1 Interpolation error:oom
2 524288 1 Send_All 0 0 524288
2 524288 1 XOR 19 1048576 2
2 524288 1 Balanced_XOR 2 1450 1450
2 524288 1 Interpolation error:oom
2 1048576 1 Send_All 0 0 1048576
2 1048576 1 XOR 42 2097152 2
2 1048576 1 Balanced_XOR 29 2048 2048
2 1048576 1 Interpolation error:oom
2 1048576 1 Send_All 0 0 1048576
2 1048576 1 XOR 26 2097152 2
2 1048576 1 Balanced_XOR 8 2048 2048
2 1048576 1 Interpolation error:oom
2 1048576 1 Send_All 0 0 1048576
2 1048576 1 XOR 29 2097152 2
2 1048576 1 Balanced_XOR 10 2048 2048
2 1048576 1 Interpolation error:oom
2 2097152 1 Send_All 0 0 2097152
2 2097152 1 XOR 67 4194304 2
2 2097152 1 Balanced_XOR 52 2898 2898
2 2097152 1 Interpolation error:oom
2 2097152 1 Send_All 0 0 2097152
2 2097152 1 XOR 50 4194304 2
2 2097152 1 Balanced_XOR 15 2898 2898
2 2097152 1 Interpolation error:oom
2 2097152 1 Send_All 0 0 2097152
2 2097152 1 XOR 42 4194304 2
2 2097152 1 Balanced_XOR 17 2898 2898
2 2097152 1 Interpolation error:oom
2 4194304 1 Send_All 0 0 4194304
2 4194304 1 XOR 110 8388608 2
2 4194304 1 Balanced_XOR 47 4096 4096
2 4194304 1 Interpolation error:oom
2 4194304 1 Send_All 0 0 4194304
2 4194304 1 XOR 100 8388608 2
2 4194304 1 Balanced_XOR 39 4096 4096
2 4194304 1 Interpolation error:oom
2 4194304 1 Send_All 0 0 4194304
2 4194304 1 XOR 192 8388608 2
2 4194304 1 Balanced_XOR 25 4096 4096
2 4194304 1 Interpolation error:oom
2 8388608 1 Send_All 0 0 8388608
2 8388608 1 XOR 195 16777216 2
2 8388608 1 Balanced_XOR 90 5794 5794
2 8388608 1 Interpolation error:oom
2 8388608 1 Send_All 0 0 8388608
2 8388608 1 XOR 297 16777216 2
2 8388608 1 Balanced_XOR 63 5794 5794
2 8388608 1 Interpolation error:oom
2 8388608 1 Send_All 0 0 8388608
2 8388608 1 XOR 281 16777216 2
2 8388608 1 Balanced_XOR 64 5794 5794
2 8388608 1 Interpolation error:oom

View file

@ -0,0 +1,167 @@
2 2 1 Send_All 0 0 2
2 2 1 XOR 0 4 2
2 2 1 Balanced_XOR 0 4 4
2 2 1 Interpolation 1 17 8
2 2 1 Send_All 0 0 2
2 2 1 XOR 1 4 2
2 2 1 Balanced_XOR 0 4 4
2 2 1 Interpolation 0 7 7
2 2 1 Send_All 0 0 2
2 2 1 XOR 0 4 2
2 2 1 Balanced_XOR 0 4 4
2 2 1 Interpolation 0 19 10
2 2 2 Send_All 0 0 4
2 2 2 XOR 1 16 4
2 2 2 Balanced_XOR 0 4 16
2 2 2 Interpolation 3 65 19
2 2 2 Send_All 0 0 4
2 2 2 XOR 0 16 4
2 2 2 Balanced_XOR 0 4 16
2 2 2 Interpolation 1 69 8
2 2 2 Send_All 0 0 4
2 2 2 XOR 0 16 4
2 2 2 Balanced_XOR 0 4 16
2 2 2 Interpolation 0 48 16
2 2 4 Send_All 0 0 8
2 2 4 XOR 0 64 8
2 2 4 Balanced_XOR 0 6 96
2 2 4 Interpolation 6 247 34
2 2 4 Send_All 0 0 8
2 2 4 XOR 0 64 8
2 2 4 Balanced_XOR 0 6 96
2 2 4 Interpolation 2 264 35
2 2 4 Send_All 0 0 8
2 2 4 XOR 0 64 8
2 2 4 Balanced_XOR 0 6 96
2 2 4 Interpolation 1 257 33
2 2 8 Send_All 0 0 16
2 2 8 XOR 0 256 16
2 2 8 Balanced_XOR 1 8 512
2 2 8 Interpolation 12 1012 45
2 2 8 Send_All 0 0 16
2 2 8 XOR 0 256 16
2 2 8 Balanced_XOR 0 8 512
2 2 8 Interpolation 4 1001 64
2 2 8 Send_All 0 0 16
2 2 8 XOR 0 256 16
2 2 8 Balanced_XOR 0 8 512
2 2 8 Interpolation 2 1009 66
2 2 16 Send_All 0 0 32
2 2 16 XOR 0 1024 32
2 2 16 Balanced_XOR 1 12 3072
2 2 16 Interpolation 19 4054 135
2 2 16 Send_All 0 0 32
2 2 16 XOR 1 1024 32
2 2 16 Balanced_XOR 0 12 3072
2 2 16 Interpolation 5 4016 120
2 2 16 Send_All 0 0 32
2 2 16 XOR 0 1024 32
2 2 16 Balanced_XOR 0 12 3072
2 2 16 Interpolation 5 3996 135
2 2 32 Send_All 0 0 64
2 2 32 XOR 2 4096 64
2 2 32 Balanced_XOR 1 16 16384
2 2 32 Interpolation 36 16066 238
2 2 32 Send_All 0 0 64
2 2 32 XOR 0 4096 64
2 2 32 Balanced_XOR 1 16 16384
2 2 32 Interpolation 21 16082 247
2 2 32 Send_All 0 0 64
2 2 32 XOR 1 4096 64
2 2 32 Balanced_XOR 0 16 16384
2 2 32 Interpolation 11 16219 253
2 2 64 Send_All 0 0 128
2 2 64 XOR 3 16384 128
2 2 64 Balanced_XOR 2 24 98304
2 2 64 Interpolation 83 64197 490
2 2 64 Send_All 0 0 128
2 2 64 XOR 2 16384 128
2 2 64 Balanced_XOR 1 24 98304
2 2 64 Interpolation 32 64285 509
2 2 64 Send_All 0 0 128
2 2 64 XOR 1 16384 128
2 2 64 Balanced_XOR 2 24 98304
2 2 64 Interpolation 48 64284 496
2 2 128 Send_All 0 0 256
2 2 128 XOR 8 65536 256
2 2 128 Balanced_XOR 4 32 524288
2 2 128 Interpolation 263 257438 1007
2 2 128 Send_All 0 0 256
2 2 128 XOR 2 65536 256
2 2 128 Balanced_XOR 4 32 524288
2 2 128 Interpolation 124 257035 1001
2 2 128 Send_All 0 0 256
2 2 128 XOR 2 65536 256
2 2 128 Balanced_XOR 3 32 524288
2 2 128 Interpolation 121 257298 1005
2 2 256 Send_All 0 0 512
2 2 256 XOR 15 262144 512
2 2 256 Balanced_XOR 13 46 3014656
2 2 256 Interpolation 845 1030322 2007
2 2 256 Send_All 0 0 512
2 2 256 XOR 6 262144 512
2 2 256 Balanced_XOR 2 46 3014656
2 2 256 Interpolation 657 1030828 1994
2 2 256 Send_All 0 0 512
2 2 256 XOR 3 262144 512
2 2 256 Balanced_XOR 1 46 3014656
2 2 256 Interpolation 641 1031813 2064
2 2 512 Send_All 0 0 1024
2 2 512 XOR 31 1048576 1024
2 2 512 Balanced_XOR 19 64 16777216
2 2 512 Interpolation 3957 4124571 3950
2 2 512 Send_All 0 0 1024
2 2 512 XOR 11 1048576 1024
2 2 512 Balanced_XOR 2 64 16777216
2 2 512 Interpolation 3809 4125663 4050
2 2 512 Send_All 0 0 1024
2 2 512 XOR 11 1048576 1024
2 2 512 Balanced_XOR 1 64 16777216
2 2 512 Interpolation 3676 4122795 4076
2 2 1024 Send_All 0 0 2048
2 2 1024 XOR 69 4194304 2048
2 2 1024 Balanced_XOR 32 92 96468992
2 2 1024 Interpolation 25180 16484573 8035
2 2 1024 Send_All 0 0 2048
2 2 1024 XOR 41 4194304 2048
2 2 1024 Balanced_XOR 5 92 96468992
2 2 1024 Interpolation 24573 16485363 8058
2 2 1024 Send_All 0 0 2048
2 2 1024 XOR 41 4194304 2048
2 2 1024 Balanced_XOR 5 92 96468992
2 2 1024 Interpolation 24497 16487141 7909
2 2 2048 Send_All 1 0 4096
2 2 2048 XOR 193 16777216 4096
2 2 2048 Balanced_XOR 48 128 536870912
2 2 2048 Interpolation 72656 65955335 16088
2 2 2048 Send_All 0 0 4096
2 2 2048 XOR 163 16777216 4096
2 2 2048 Balanced_XOR 14 128 536870912
2 2 2048 Interpolation 72066 65964585 16083
2 2 2048 Send_All 1 0 4096
2 2 2048 XOR 162 16777216 4096
2 2 2048 Balanced_XOR 14 128 536870912
2 2 2048 Interpolation 71350 65952857 16175
2 2 4096 Send_All 1 0 8192
2 2 4096 XOR 705 67108864 8192
2 2 4096 Balanced_XOR 136 182 3053453312
2 2 4096 Interpolation 500510 263822948 32117
2 2 4096 Send_All 1 0 8192
2 2 4096 XOR 655 67108864 8192
2 2 4096 Balanced_XOR 60 182 3053453312
2 2 4096 Interpolation 501775 263787291 31871
2 2 4096 Send_All 1 0 8192
2 2 4096 XOR 654 67108864 8192
2 2 4096 Balanced_XOR 62 182 3053453312
2 2 4096 Interpolation 506045 263791572 32100
2 2 8192 Send_All 1 0 16384
2 2 8192 XOR 2747 268435456 16384
2 2 8192 Balanced_XOR 430 256 17179869184
2 2 8192 Interpolation 3651178 1055239313 64485
2 2 8192 Send_All 1 0 16384
2 2 8192 XOR 2594 268435456 16384
2 2 8192 Balanced_XOR 235 256 17179869184
2 2 8192 Interpolation 3658435 1055229455 64194
2 2 8192 Send_All 1 0 16384
2 2 8192 XOR 2568 268435456 16384
2 2 8192 Balanced_XOR 235 256 17179869184

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

141
graph/util.py Normal file
View file

@ -0,0 +1,141 @@
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
from matplotlib.ticker import LogFormatterSciNotation, SymmetricalLogLocator, LogLocator
def heatmap(data, row_labels, col_labels, ax=None,
cbar_kw={}, cbarlabel="", logcolor=False, sym_logcolor=False, xlabel=None, ylabel=None, **kwargs):
"""
Create a heatmap from a numpy array and two lists of labels.
Parameters
----------
data
A 2D numpy array of shape (N, M).
row_labels
A list or array of length N with the labels for the rows.
col_labels
A list or array of length M with the labels for the columns.
ax
A `matplotlib.axes.Axes` instance to which the heatmap is plotted. If
not provided, use current axes or create a new one. Optional.
cbar_kw
A dictionary with arguments to `matplotlib.Figure.colorbar`. Optional.
cbarlabel
The label for the colorbar. Optional.
**kwargs
All other arguments are forwarded to `imshow`.
"""
if not ax:
ax = plt.gca()
# Plot the heatmap
im = ax.imshow(data, **kwargs)
# Create colorbar
if logcolor:
pcm = ax.pcolor(data,
norm=colors.LogNorm(vmin=data.min(), vmax=data.max()),
cmap='gray_r')
cbar = ax.figure.colorbar(pcm, ax=ax, extend="max", ticks=LogLocator(base=2), format=LogFormatterSciNotation(base=2))
elif sym_logcolor:
linthresh = 1.0
pcm = ax.pcolor(data,
norm=colors.SymLogNorm(
linthresh=linthresh,
linscale=1.0,
vmin=data.min(),
vmax=data.max()
),
cmap='RdBu_r')
cbar = ax.figure.colorbar(pcm, ax=ax, extend="both", ticks=SymmetricalLogLocator(base=2, linthresh=linthresh), format=LogFormatterSciNotation(base=2))
else:
cbar = ax.figure.colorbar(im, ax=ax, **cbar_kw)
cbar.ax.set_ylabel(cbarlabel, rotation=-90, va="bottom")
# We want to show all ticks...
ax.set_xticks(np.arange(data.shape[1]))
ax.set_yticks(np.arange(data.shape[0]))
# ... and label them with the respective list entries.
ax.set_xticklabels(col_labels)
ax.set_yticklabels(row_labels)
plt.tick_params(labelsize=6)
if xlabel is not None:
ax.set_xlabel(xlabel)
if ylabel is not None:
ax.set_ylabel(ylabel)
# Turn spines off and create white grid.
for edge, spine in ax.spines.items():
spine.set_visible(False)
ax.set_xticks(np.arange(data.shape[1]+1)-.5, minor=True)
ax.set_yticks(np.arange(data.shape[0]+1)-.5, minor=True)
ax.grid(which="minor", color="w", linestyle='-', linewidth=3)
ax.tick_params(which="minor", bottom=False, left=False)
return im, cbar
def annotate_heatmap(im, data=None, valfmt="{x:.2f}",
textcolors=["black", "white"],
threshold=None, **textkw):
"""
A function to annotate a heatmap.
Parameters
----------
im
The AxesImage to be labeled.
data
Data used to annotate. If None, the image's data is used. Optional.
valfmt
The format of the annotations inside the heatmap. This should either
use the string format method, e.g. "$ {x:.2f}", or be a
`matplotlib.ticker.Formatter`. Optional.
textcolors
A list or array of two color specifications. The first is used for
values below a threshold, the second for those above. Optional.
threshold
Value in data units according to which the colors from textcolors are
applied. If None (the default) uses the middle of the colormap as
separation. Optional.
**kwargs
All other arguments are forwarded to each call to `text` used to create
the text labels.
"""
if not isinstance(data, (list, np.ndarray)):
data = im.get_array()
# Normalize the threshold to the images color range.
if threshold is not None:
threshold = im.norm(threshold)
else:
threshold = im.norm(data.max())/2.
# Set default alignment to center, but allow it to be
# overwritten by textkw.
kw = dict(horizontalalignment="center",
verticalalignment="center")
kw.update(textkw)
# Get the formatter in case a string is supplied
if isinstance(valfmt, str):
valfmt = matplotlib.ticker.StrMethodFormatter(valfmt)
# Loop over the data and create a `Text` for each "pixel".
# Change the text's color depending on the data.
texts = []
for i in range(data.shape[0]):
for j in range(data.shape[1]):
kw.update(color=textcolors[int(im.norm(data[i, j]) > threshold)])
text = im.axes.text(j, i, valfmt(data[i, j], None), **kw)
texts.append(text)
return texts