diff options
Diffstat (limited to 'decompress')
| -rwxr-xr-x | decompress/analyze_bw.py | 345 | ||||
| -rwxr-xr-x | decompress/analyze_time.py | 332 | ||||
| -rw-r--r-- | decompress/bw.png | bin | 0 -> 68796 bytes | |||
| -rw-r--r-- | decompress/bw_VANILLA.csv | 751 | ||||
| -rw-r--r-- | decompress/bw_all.CSV | 4 | ||||
| -rwxr-xr-x | decompress/combine.py | 169 | ||||
| -rwxr-xr-x | decompress/run.sh | 150 | ||||
| -rwxr-xr-x | decompress/sum.sh | 21 | ||||
| -rw-r--r-- | decompress/summary/bw.txt | 12 | ||||
| -rw-r--r-- | decompress/summary/times.txt | 14 | ||||
| -rw-r--r-- | decompress/time_1.00G.png | bin | 0 -> 76412 bytes | |||
| -rw-r--r-- | decompress/time_268M.png | bin | 0 -> 74420 bytes | |||
| -rw-r--r-- | decompress/time_537M.png | bin | 0 -> 74040 bytes | |||
| -rw-r--r-- | decompress/times_VANILLA.csv | 751 | ||||
| -rw-r--r-- | decompress/times_all.CSV | 751 |
15 files changed, 3300 insertions, 0 deletions
diff --git a/decompress/analyze_bw.py b/decompress/analyze_bw.py new file mode 100755 index 0000000..e4fab84 --- /dev/null +++ b/decompress/analyze_bw.py @@ -0,0 +1,345 @@ +#!/usr/bin/env python3 + +import argparse +import csv +import sys +from collections import defaultdict +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + + +KIBPS_TO_UNIT = { + "KiBps": 1.0, + "MiBps": 1.0 / 1024.0, + "GiBps": 1.0 / (1024.0 * 1024.0), +} + + +UNIT_DISPLAY = { + "KiBps": "KiB/s", + "MiBps": "MiB/s", + "GiBps": "GiB/s", +} + + +def format_bytes(n) -> str: + """ + Format size using the largest readable unit. + + Examples: + 246132K -> 246M + 2097148K -> 2.0G + + Notes: + - CSV normally gives integer bytes. + - This also accepts strings like "246132K" if needed. + - M is shown as rounded whole MB. + - G/T are shown with one decimal place. + """ + if isinstance(n, str): + s = n.strip() + suffix = s[-1].upper() + + if suffix in {"K", "M", "G", "T"}: + value = float(s[:-1]) + # Interpret suffix input as decimal-style units. + scale = { + "K": 1_000, + "M": 1_000_000, + "G": 1_000_000_000, + "T": 1_000_000_000_000, + }[suffix] + n = int(value * scale) + else: + n = int(s) + + n = int(n) + + # Use G/T when the value is large enough. + if n >= 1024 ** 4: + return f"{n / (1024 ** 4):.2f}T" + + if n >= 1024 ** 3: + return f"{n / (1024 ** 3):.2f}G" + + if n >= 1_000_000: + return f"{round(n / 1_000_000)}M" + + if n >= 1_000: + return f"{round(n / 1_000)}K" + + return f"{n}B" + +def experiment_label(path: str) -> str: + name = Path(path).name + + if name.startswith("bw_") and name.endswith(".csv"): + return name[len("bw_") : -len(".csv")] + + if name.startswith("bandwidth_") and name.endswith(".csv"): + return name[len("bandwidth_") : -len(".csv")] + + return Path(path).stem + + +def percentile(values, p: float) -> float: + return float(np.percentile(np.array(values, dtype=float), p)) + + +def read_bw_csv(path: str, unit: str): + grouped = defaultdict(list) + + with open(path, newline="") as f: + reader = csv.DictReader(f) + + if reader.fieldnames is None: + raise ValueError(f"{path}: empty CSV or missing header") + + fieldnames = [name.strip() for name in reader.fieldnames] + if fieldnames != ["bytes", "bw_KiBps"]: + raise ValueError( + f"{path}: expected header 'bytes,bw_KiBps', got: {','.join(fieldnames)}" + ) + + for line_no, row in enumerate(reader, start=2): + try: + nbytes = int(row["bytes"].strip()) + bw_kibps = float(row["bw_KiBps"].strip()) + except Exception as e: + raise ValueError(f"{path}: invalid row at line {line_no}: {row} ({e})") + + grouped[nbytes].append(bw_kibps * KIBPS_TO_UNIT[unit]) + + return grouped + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Create grouped bandwidth bar graph from bw_*.csv files." + ) + parser.add_argument( + "inputs", + nargs="+", + help="Input CSV files with header: bytes,bw_KiBps. Recommended naming: bw_<label>.csv", + ) + parser.add_argument( + "--unit", + default="GiBps", + choices=sorted(KIBPS_TO_UNIT.keys()), + help="Output bandwidth unit. Input is always bw_KiBps. Default: GiBps", + ) + parser.add_argument( + "--out", + default="bandwidth_bar.png", + help="Output bar graph filename. Default: bandwidth_bar.png", + ) + parser.add_argument( + "--no-errorbar", + action="store_true", + help="Disable standard-deviation error bars.", + ) + parser.add_argument( + "--legend-outside", + action="store_true", + help="Place legend outside the plot.", + ) + + args = parser.parse_args() + + output_unit = UNIT_DISPLAY[args.unit] + all_data = [] + + for path in args.inputs: + try: + grouped = read_bw_csv(path, args.unit) + except ValueError as e: + print(f"ERROR: {e}", file=sys.stderr) + return 1 + + if not grouped: + print(f"ERROR: {path}: no data rows", file=sys.stderr) + return 1 + + all_data.append( + { + "path": path, + "label": experiment_label(path), + "grouped": grouped, + } + ) + + print("Bandwidth summary") + print("=================") + print(f"input_files: {len(all_data)}") + print(f"input_unit: KiB/s") + print(f"output_unit: {output_unit}") + print() + + print( + f"{'file_label':>18} {'bytes':>14} {'size':>8} {'n':>8} " + f"{'min':>12} {'avg':>12} {'std':>12} " + f"{'p1':>12} {'p5':>12} {'p10':>12} {'p50':>12} " + f"{'p90':>12} {'p99':>12} {'max':>12}" + ) + + # stats[label][nbytes] = dict(...) + stats = defaultdict(dict) + all_sizes = set() + + for item in all_data: + file_label = item["label"] + grouped = item["grouped"] + + for nbytes in sorted(grouped.keys()): + bws = np.array(grouped[nbytes], dtype=float) + all_sizes.add(nbytes) + + min_v = float(np.min(bws)) + avg = float(np.mean(bws)) + std = float(np.std(bws)) + p1 = percentile(bws, 1) + p5 = percentile(bws, 5) + p10 = percentile(bws, 10) + p50 = percentile(bws, 50) + p90 = percentile(bws, 90) + p99 = percentile(bws, 99) + max_v = float(np.max(bws)) + + size_label = format_bytes(nbytes) + + print( + f"{file_label:>18} {nbytes:14d} {size_label:>8} {len(bws):8d} " + f"{min_v:12.6f} {avg:12.6f} {std:12.6f} " + f"{p1:12.6f} {p5:12.6f} {p10:12.6f} {p50:12.6f} " + f"{p90:12.6f} {p99:12.6f} {max_v:12.6f}" + ) + + stats[file_label][nbytes] = { + "n": len(bws), + "avg": avg, + "std": std, + "min": min_v, + "max": max_v, + "p50": p50, + "p90": p90, + "p99": p99, + } + + sizes = sorted(all_sizes) + size_labels = [format_bytes(s) for s in sizes] + experiment_labels = [item["label"] for item in all_data] + + x = np.arange(len(sizes)) + num_experiments = len(experiment_labels) + + # Bar width shrinks as the number of experiments grows. + total_group_width = 0.82 + bar_width = total_group_width / max(1, num_experiments) + + fig_width = max(9, len(sizes) * 1.4) + fig, ax = plt.subplots(figsize=(fig_width, 6)) + + for idx, label in enumerate(experiment_labels): + offsets = x - total_group_width / 2 + bar_width / 2 + idx * bar_width + + means = [] + errors = [] + + for nbytes in sizes: + if nbytes in stats[label]: + means.append(stats[label][nbytes]["avg"]) + errors.append(stats[label][nbytes]["std"]) + else: + means.append(np.nan) + errors.append(0.0) + + if args.no_errorbar: + ax.bar( + offsets, + means, + width=bar_width, + label=label, + ) + else: + ax.bar( + offsets, + means, + width=bar_width, + yerr=errors, + capsize=3, + label=label, + ) + + # Automatically cut off the bottom of the y-axis to make bar differences visible. + # This intentionally truncates the y-axis. + all_bar_values = [] + all_error_values = [] + + for label in experiment_labels: + for nbytes in sizes: + if nbytes in stats[label]: + all_bar_values.append(stats[label][nbytes]["avg"]) + all_error_values.append(stats[label][nbytes]["std"]) + + if all_bar_values: + values = np.array(all_bar_values, dtype=float) + errors = np.array(all_error_values, dtype=float) + + if args.no_errorbar: + low = float(np.nanmin(values)) + high = float(np.nanmax(values)) + else: + low = float(np.nanmin(values - errors)) + high = float(np.nanmax(values + errors)) + + span = max(high - low, 1e-9) + + # Leave 10% padding below the lowest visible bar/error. + auto_bottom = low - 0.10 * span + + # Avoid negative y-axis for bandwidth. + auto_bottom = max(0.0, auto_bottom) + + ax.set_ylim(bottom=auto_bottom) + + ax.text( + 0.01, + 0.98, + "Y-axis truncated", + transform=ax.transAxes, + va="top", + fontsize=9, + ) + + ax.set_xlabel("Transfer size") + ax.set_ylabel(f"Bandwidth ({output_unit})") + ax.set_title("DMA Bandwidth by Transfer Size") + ax.set_xticks(x) + ax.set_xticklabels(size_labels) + ax.grid(axis="y", linestyle="--", alpha=0.6) + + if args.legend_outside: + ax.legend( + title="Experiment", + fontsize=8, + loc="center left", + bbox_to_anchor=(1.02, 0.5), + ) + fig.tight_layout(rect=[0, 0, 0.80, 1]) + else: + ax.legend(title="Experiment", fontsize=8) + fig.tight_layout() + + fig.savefig(args.out, dpi=200) + plt.close(fig) + + print() + print(f"Wrote bar graph: {args.out}") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/decompress/analyze_time.py b/decompress/analyze_time.py new file mode 100755 index 0000000..8f467e4 --- /dev/null +++ b/decompress/analyze_time.py @@ -0,0 +1,332 @@ +#!/usr/bin/env python3 + +import argparse +import csv +import sys +from collections import defaultdict +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + + +USEC_TO_UNIT = { + "sec": 1.0 / 1_000_000.0, + "msec": 1.0 / 1_000.0, + "usec": 1.0, + "nsec": 1_000.0, +} + + +LINESTYLES = ["-", "--", "-.", ":"] +MARKERS = ["o", "s", "^", "D", "v", "P", "X", "*"] + +def format_bytes(n) -> str: + """ + Format size using the largest readable unit. + + Examples: + 246132K -> 246M + 2097148K -> 2.0G + + Notes: + - CSV normally gives integer bytes. + - This also accepts strings like "246132K" if needed. + - M is shown as rounded whole MB. + - G/T are shown with one decimal place. + """ + if isinstance(n, str): + s = n.strip() + suffix = s[-1].upper() + + if suffix in {"K", "M", "G", "T"}: + value = float(s[:-1]) + # Interpret suffix input as decimal-style units. + scale = { + "K": 1_000, + "M": 1_000_000, + "G": 1_000_000_000, + "T": 1_000_000_000_000, + }[suffix] + n = int(value * scale) + else: + n = int(s) + + n = int(n) + + # Use G/T when the value is large enough. + if n >= 1024 ** 4: + return f"{n / (1024 ** 4):.2f}T" + + if n >= 1024 ** 3: + return f"{n / (1024 ** 3):.2f}G" + + if n >= 1_000_000: + return f"{round(n / 1_000_000)}M" + + if n >= 1_000: + return f"{round(n / 1_000)}K" + + return f"{n}B" + +def experiment_label(path: str) -> str: + name = Path(path).name + + if name.startswith("times_") and name.endswith(".csv"): + return name[len("times_") : -len(".csv")] + + return Path(path).stem + + +def percentile(values, p: float) -> float: + return float(np.percentile(np.array(values, dtype=float), p)) + + +def read_times_csv(path: str, unit: str): + grouped = defaultdict(list) + + with open(path, newline="") as f: + reader = csv.DictReader(f) + + if reader.fieldnames is None: + raise ValueError(f"{path}: empty CSV or missing header") + + fieldnames = [name.strip() for name in reader.fieldnames] + if fieldnames != ["bytes", "time_usec"]: + raise ValueError( + f"{path}: expected header 'bytes,time_usec', got: {','.join(fieldnames)}" + ) + + for line_no, row in enumerate(reader, start=2): + try: + nbytes = int(row["bytes"].strip()) + time_usec = float(row["time_usec"].strip()) + except Exception as e: + raise ValueError(f"{path}: invalid row at line {line_no}: {row} ({e})") + + grouped[nbytes].append(time_usec * USEC_TO_UNIT[unit]) + + return grouped + + +def add_legend_and_save(fig, ax, out_path: Path, legend_title: str, legend_outside: bool): + if legend_outside: + ax.legend( + title=legend_title, + fontsize=8, + loc="center left", + bbox_to_anchor=(1.02, 0.5), + ) + fig.tight_layout(rect=[0, 0, 0.78, 1]) + else: + ax.legend(title=legend_title, fontsize=8) + fig.tight_layout() + + fig.savefig(out_path, dpi=200) + plt.close(fig) + + +def plot_size_graph( + nbytes: int, + series, + unit: str, + out_path: Path, + markers_mode: str, + line_markers: bool, + legend_outside: bool, +): + size_label = format_bytes(nbytes) + fig, ax = plt.subplots(figsize=(10, 6)) + + for item in series: + x = item["x"] + y = item["y"] + marker = item["marker"] if line_markers else None + + ax.plot( + x, + y, + linestyle=item["linestyle"], + marker=marker, + markersize=3, + markevery=max(1, len(x) // 25), + linewidth=1.8, + label=f"{item['file_label']} (n={item['n']})", + ) + + if markers_mode == "tail": + ax.scatter([item["p90"]], [0.90], marker="x", s=70, zorder=5) + ax.scatter([item["p99"]], [0.99], marker="*", s=100, zorder=5) + + ax.annotate( + "P90", + xy=(item["p90"], 0.90), + xytext=(5, 5), + textcoords="offset points", + fontsize=8, + ) + ax.annotate( + "P99", + xy=(item["p99"], 0.99), + xytext=(5, 5), + textcoords="offset points", + fontsize=8, + ) + + ax.set_xlabel(f"Latency ({unit})") + ax.set_ylabel("CDF") + ax.set_title(f"DMA Latency CDF - {size_label}") + ax.grid(True) + + add_legend_and_save( + fig, + ax, + out_path, + "Experiment", + legend_outside, + ) + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Create separate latency CDF graphs per byte count from times_*.csv files." + ) + parser.add_argument( + "inputs", + nargs="+", + help="Input CSV files with header: bytes,time_usec. Recommended naming: times_<label>.csv", + ) + parser.add_argument( + "--unit", + default="usec", + choices=sorted(USEC_TO_UNIT.keys()), + help="Output time unit. Input is always time_usec. Default: usec", + ) + parser.add_argument( + "--out", + default="latency_cdf.png", + help="Output base filename. Per-size graphs are generated from this name.", + ) + parser.add_argument( + "--markers", + default="none", + choices=["none", "tail"], + help="Marker mode. 'none' disables percentile markers; 'tail' shows P90 and P99 markers. Default: none", + ) + parser.add_argument( + "--legend-outside", + action="store_true", + help="Place legend outside the plot.", + ) + parser.add_argument( + "--line-markers", + action="store_true", + help="Show point markers on CDF lines. Default: no line markers.", + ) + + args = parser.parse_args() + + all_data = [] + + for path in args.inputs: + try: + grouped = read_times_csv(path, args.unit) + except ValueError as e: + print(f"ERROR: {e}", file=sys.stderr) + return 1 + + if not grouped: + print(f"ERROR: {path}: no data rows", file=sys.stderr) + return 1 + + all_data.append( + { + "path": path, + "label": experiment_label(path), + "grouped": grouped, + } + ) + + print("Latency summary") + print("================") + print(f"input_files: {len(all_data)}") + print(f"input_unit: usec") + print(f"output_unit: {args.unit}") + print() + + print( + f"{'file_label':>18} {'bytes':>14} {'size':>8} {'n':>8} " + f"{'min':>12} {'avg':>12} {'std':>12} " + f"{'p50':>12} {'p90':>12} {'p99':>12} {'max':>12}" + ) + + series_by_size = defaultdict(list) + + for file_idx, item in enumerate(all_data): + file_label = item["label"] + grouped = item["grouped"] + linestyle = LINESTYLES[file_idx % len(LINESTYLES)] + + for size_idx, nbytes in enumerate(sorted(grouped.keys())): + times = np.array(grouped[nbytes], dtype=float) + sorted_times = np.sort(times) + cdf = np.arange(1, len(sorted_times) + 1) / len(sorted_times) + + min_v = float(np.min(times)) + avg = float(np.mean(times)) + std = float(np.std(times)) + p50 = percentile(times, 50) + p90 = percentile(times, 90) + p99 = percentile(times, 99) + max_v = float(np.max(times)) + + size_label = format_bytes(nbytes) + + print( + f"{file_label:>18} {nbytes:14d} {size_label:>8} {len(times):8d} " + f"{min_v:12.6f} {avg:12.6f} {std:12.6f} " + f"{p50:12.6f} {p90:12.6f} {p99:12.6f} {max_v:12.6f}" + ) + + series_by_size[nbytes].append( + { + "file_label": file_label, + "nbytes": nbytes, + "size_label": size_label, + "x": sorted_times, + "y": cdf, + "n": len(times), + "p90": p90, + "p99": p99, + "linestyle": linestyle, + "marker": MARKERS[size_idx % len(MARKERS)], + } + ) + + out_base = Path(args.out) + stem = out_base.stem + suffix = out_base.suffix or ".png" + + print() + + for nbytes in sorted(series_by_size.keys()): + size_label = format_bytes(nbytes) + out_path = out_base.with_name(f"{stem}_{size_label}{suffix}") + + plot_size_graph( + nbytes=nbytes, + series=series_by_size[nbytes], + unit=args.unit, + out_path=out_path, + markers_mode=args.markers, + line_markers=args.line_markers, + legend_outside=args.legend_outside, + ) + + print(f"Wrote CDF graph: {out_path}") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/decompress/bw.png b/decompress/bw.png Binary files differnew file mode 100644 index 0000000..8d01e74 --- /dev/null +++ b/decompress/bw.png diff --git a/decompress/bw_VANILLA.csv b/decompress/bw_VANILLA.csv new file mode 100644 index 0000000..418f2e8 --- /dev/null +++ b/decompress/bw_VANILLA.csv @@ -0,0 +1,751 @@ +bytes,bw_KiBps +1073741824,3448798.624768 +1073741824,3448491.660288 +1073741824,3445689.852928 +1073741824,3442474.722304 +1073741824,3449114.630144 +1073741824,3444636.783616 +1073741824,3444600.720384 +1073741824,3447153.239040 +1073741824,3446643.912704 +1073741824,3447379.062784 +1073741824,3444459.552768 +1073741824,3441856.836608 +1073741824,3451319.576576 +1073741824,3443677.060096 +1073741824,3446698.179584 +1073741824,3446929.281024 +1073741824,3446003.601408 +1073741824,3446155.881472 +1073741824,3444572.578816 +1073741824,3447942.255616 +1073741824,3446527.760384 +1073741824,3446319.808512 +1073741824,3444942.101504 +1073741824,3444964.228096 +1073741824,3444791.976960 +1073741824,3445728.996352 +1073741824,3447829.405696 +1073741824,3442614.212608 +1073741824,3453045.310464 +1073741824,3446847.258624 +1073741824,3445738.303488 +1073741824,3445442.785280 +1073741824,3447581.316096 +1073741824,3444128.596992 +1073741824,3446428.232704 +1073741824,3441760.302080 +1073741824,3449356.687360 +1073741824,3442341.221376 +1073741824,3451627.784192 +1073741824,3448078.720000 +1073741824,3450244.866048 +1073741824,3446490.739712 +1073741824,3450273.838080 +1073741824,3448359.733248 +1073741824,3445133.304832 +1073741824,3441504.681984 +1073741824,3445433.989120 +1073741824,3448344.174592 +1073741824,3445855.422464 +1073741824,3446308.322304 +1073741824,3446748.867584 +1073741824,3444570.882048 +1073741824,3443676.144640 +1073741824,3442721.421312 +1073741824,3450645.005312 +1073741824,3444390.523904 +1073741824,3447666.276352 +1073741824,3446855.630848 +1073741824,3447561.412608 +1073741824,3444645.723136 +1073741824,3450422.636544 +1073741824,3450611.507200 +1073741824,3452772.276224 +1073741824,3448704.581632 +1073741824,3450167.045120 +1073741824,3444988.142592 +1073741824,3443740.078080 +1073741824,3445431.792640 +1073741824,3449581.971456 +1073741824,3446210.008064 +1073741824,3447478.928384 +1073741824,3447831.514112 +1073741824,3444021.877760 +1073741824,3445674.963968 +1073741824,3446504.695808 +1073741824,3446639.030272 +1073741824,3446025.129984 +1073741824,3447144.921088 +1073741824,3442723.512320 +1073741824,3444729.757696 +1073741824,3446270.095360 +1073741824,3448411.332608 +1073741824,3453328.816128 +1073741824,3444558.276608 +1073741824,3446088.460288 +1073741824,3451282.487296 +1073741824,3446988.655616 +1073741824,3446509.566976 +1073741824,3444398.194688 +1073741824,3444256.444416 +1073741824,3447661.707264 +1073741824,3444923.574272 +1073741824,3446877.669376 +1073741824,3445871.434752 +1073741824,3444025.067520 +1073741824,3441576.295424 +1073741824,3443074.683904 +1073741824,3443079.478272 +1073741824,3455004.579840 +1073741824,3447354.208256 +1073741824,3442825.673728 +1073741824,3448962.860032 +1073741824,3450485.412864 +1073741824,3445049.895936 +1073741824,3444159.129600 +1073741824,3444014.716928 +1073741824,3445201.390592 +1073741824,3444065.349632 +1073741824,3444391.609344 +1073741824,3445491.116032 +1073741824,3446302.432256 +1073741824,3447443.293184 +1073741824,3444334.678016 +1073741824,3451487.357952 +1073741824,3443721.722880 +1073741824,3444059.116544 +1073741824,3446382.662656 +1073741824,3442427.312128 +1073741824,3443964.595200 +1073741824,3444235.174912 +1073741824,3450483.812352 +1073741824,3445057.003520 +1073741824,3445888.386048 +1073741824,3441631.363072 +1073741824,3442076.171264 +1073741824,3444782.821376 +1073741824,3446067.078144 +1073741824,3449278.305280 +1073741824,3444328.466432 +1073741824,3449630.077952 +1073741824,3445545.867264 +1073741824,3447070.163968 +1073741824,3444661.757952 +1073741824,3452120.059904 +1073741824,3440477.751296 +1073741824,3446975.851520 +1073741824,3444182.218752 +1073741824,3453044.912128 +1073741824,3436456.840192 +1073741824,3446825.832448 +1073741824,3444111.356928 +1073741824,3444400.061440 +1073741824,3435997.630464 +1073741824,3451019.340800 +1073741824,3443841.837056 +1073741824,3447252.048896 +1073741824,3447567.964160 +1073741824,3454737.667072 +1073741824,3441157.466112 +1073741824,3448056.904704 +1073741824,3445311.815680 +1073741824,3447363.627008 +1073741824,3447048.032256 +1073741824,3447816.980480 +1073741824,3443484.764160 +1073741824,3446892.637184 +1073741824,3444758.320128 +1073741824,3447384.322048 +1073741824,3443649.601536 +1073741824,3446721.552384 +1073741824,3448349.458432 +1073741824,3446125.529088 +1073741824,3443264.232448 +1073741824,3441860.745216 +1073741824,3443082.598400 +1073741824,3445277.945856 +1073741824,3442806.434816 +1073741824,3444166.279168 +1073741824,3443153.350656 +1073741824,3442747.169792 +1073741824,3443119.612928 +1073741824,3445945.234432 +1073741824,3443928.965120 +1073741824,3443930.921984 +1073741824,3447817.955328 +1073741824,3443375.281152 +1073741824,3448252.456960 +1073741824,3444795.133952 +1073741824,3444921.616384 +1073741824,3445557.313536 +1073741824,3445592.400896 +1073741824,3445476.669440 +1073741824,3449592.990720 +1073741824,3445667.580928 +1073741824,3443931.634688 +1073741824,3444049.139712 +1073741824,3444545.196032 +1073741824,3445376.433152 +1073741824,3445508.471808 +1073741824,3445843.566592 +1073741824,3445011.616768 +1073741824,3445083.240448 +1073741824,3443740.100608 +1073741824,3446532.959232 +1073741824,3447460.215808 +1073741824,3449153.828864 +1073741824,3441675.847680 +1073741824,3449831.914496 +1073741824,3449026.695168 +1073741824,3448034.308096 +1073741824,3445832.763392 +1073741824,3444616.246272 +1073741824,3444895.495168 +1073741824,3443538.140160 +1073741824,3445994.744832 +1073741824,3446895.401984 +1073741824,3446911.276032 +1073741824,3454721.083392 +1073741824,3445108.934656 +1073741824,3448046.756864 +1073741824,3442112.338944 +1073741824,3449650.007040 +1073741824,3444702.134272 +1073741824,3445746.965504 +1073741824,3444087.781376 +1073741824,3446404.456448 +1073741824,3442233.155584 +1073741824,3443307.448320 +1073741824,3446557.146112 +1073741824,3448380.950528 +1073741824,3443778.294784 +1073741824,3448582.403072 +1073741824,3454115.940352 +1073741824,3445044.497408 +1073741824,3445037.830144 +1073741824,3444472.418304 +1073741824,3447985.112064 +1073741824,3445578.021888 +1073741824,3446829.186048 +1073741824,3454584.251392 +1073741824,3445052.680192 +1073741824,3447213.381632 +1073741824,3446863.981568 +1073741824,3445047.609344 +1073741824,3447006.763008 +1073741824,3447026.185216 +1073741824,3445018.452992 +1073741824,3449584.150528 +1073741824,3445736.832000 +1073741824,3446141.486080 +1073741824,3446948.271104 +1073741824,3440842.770432 +1073741824,3441852.622848 +1073741824,3441573.607424 +1073741824,3447712.470016 +1073741824,3443950.739456 +1073741824,3442118.339584 +1073741824,3444598.412288 +1073741824,3446591.867904 +1073741824,3448680.195072 +536870912,3449337.228288 +536870912,3447986.178048 +536870912,3443867.614208 +536870912,3447874.208768 +536870912,3447618.621440 +536870912,3447323.494400 +536870912,3445197.303808 +536870912,3445361.263616 +536870912,3454980.696064 +536870912,3447529.209856 +536870912,3447271.881728 +536870912,3444903.315456 +536870912,3455383.209984 +536870912,3445324.313600 +536870912,3454927.511552 +536870912,3448163.533824 +536870912,3450358.805504 +536870912,3435785.205760 +536870912,3447858.019328 +536870912,3441828.491264 +536870912,3445542.448128 +536870912,3446440.341504 +536870912,3451423.226880 +536870912,3457923.938304 +536870912,3452375.246848 +536870912,3449858.167808 +536870912,3446713.701376 +536870912,3449592.298496 +536870912,3448932.649984 +536870912,3455350.735872 +536870912,3447144.071168 +536870912,3445810.840576 +536870912,3451721.056256 +536870912,3445916.379136 +536870912,3449286.304768 +536870912,3449550.401536 +536870912,3451360.835584 +536870912,3443026.658304 +536870912,3453523.487744 +536870912,3449236.766720 +536870912,3453946.368000 +536870912,3452626.038784 +536870912,3446342.088704 +536870912,3456319.689728 +536870912,3447031.817216 +536870912,3450531.023872 +536870912,3445988.290560 +536870912,3446594.609152 +536870912,3458700.723200 +536870912,3446210.291712 +536870912,3447304.431616 +536870912,3446987.646976 +536870912,3449059.981312 +536870912,3444756.215808 +536870912,3436715.280384 +536870912,3451835.092992 +536870912,3444357.169152 +536870912,3449201.866752 +536870912,3455200.032768 +536870912,3440340.973568 +536870912,3450484.560896 +536870912,3449605.054464 +536870912,3449126.599680 +536870912,3445513.283584 +536870912,3461050.243072 +536870912,3456530.308096 +536870912,3445862.658048 +536870912,3452109.786112 +536870912,3449823.209472 +536870912,3448773.772288 +536870912,3447448.529920 +536870912,3445265.833984 +536870912,3445852.082176 +536870912,3450832.878592 +536870912,3450516.694016 +536870912,3448494.143488 +536870912,3449852.582912 +536870912,3448257.582080 +536870912,3456376.220672 +536870912,3449398.864896 +536870912,3445576.074240 +536870912,3460453.741568 +536870912,3450798.717952 +536870912,3443432.588288 +536870912,3443961.247744 +536870912,3449873.331200 +536870912,3450952.648704 +536870912,3450916.533248 +536870912,3447785.646080 +536870912,3446309.262336 +536870912,3448229.551104 +536870912,3452024.140800 +536870912,3452035.551232 +536870912,3449695.368192 +536870912,3449262.386176 +536870912,3452348.966912 +536870912,3451004.643328 +536870912,3447248.989184 +536870912,3453713.768448 +536870912,3438490.029056 +536870912,3453349.492736 +536870912,3447916.065792 +536870912,3443800.407040 +536870912,3452395.435008 +536870912,3450261.827584 +536870912,3450399.202304 +536870912,3447450.320896 +536870912,3435053.381632 +536870912,3454054.294528 +536870912,3451258.371072 +536870912,3449624.029184 +536870912,3454368.783360 +536870912,3446906.381312 +536870912,3452046.483456 +536870912,3445311.114240 +536870912,3449011.992576 +536870912,3451801.253888 +536870912,3446498.477056 +536870912,3451361.994752 +536870912,3449319.572480 +536870912,3442783.815680 +536870912,3449565.289472 +536870912,3449503.011840 +536870912,3438675.814400 +536870912,3446274.897920 +536870912,3443541.712896 +536870912,3450582.188032 +536870912,3443702.507520 +536870912,3454145.319936 +536870912,3450057.079808 +536870912,3447200.190464 +536870912,3449621.419008 +536870912,3461528.400896 +536870912,3448449.391616 +536870912,3447861.964800 +536870912,3446271.567872 +536870912,3446483.387392 +536870912,3450345.204736 +536870912,3448342.313984 +536870912,3449242.053632 +536870912,3445591.200768 +536870912,3454177.065984 +536870912,3444045.497344 +536870912,3448679.264256 +536870912,3452314.118144 +536870912,3444828.055552 +536870912,3447490.807808 +536870912,3443395.407872 +536870912,3446152.936448 +536870912,3458361.401344 +536870912,3448339.842048 +536870912,3450304.286720 +536870912,3450201.022464 +536870912,3448256.425984 +536870912,3440849.601536 +536870912,3451471.826944 +536870912,3444285.009920 +536870912,3449192.812544 +536870912,3437142.594560 +536870912,3437118.281728 +536870912,3429180.433408 +536870912,3448239.190016 +536870912,3454840.247296 +536870912,3443776.112640 +536870912,3445891.987456 +536870912,3449193.311232 +536870912,3449310.813184 +536870912,3450593.270784 +536870912,3448822.389760 +536870912,3454661.293056 +536870912,3445154.448384 +536870912,3448061.848576 +536870912,3449196.443648 +536870912,3455409.307648 +536870912,3451071.769600 +536870912,3450183.675904 +536870912,3445296.262144 +536870912,3446153.186304 +536870912,3455017.740288 +536870912,3457479.950336 +536870912,3450012.514304 +536870912,3449457.144832 +536870912,3449868.881920 +536870912,3443872.070656 +536870912,3459357.562880 +536870912,3446380.192768 +536870912,3448022.890496 +536870912,3450701.896704 +536870912,3447387.869184 +536870912,3444782.312448 +536870912,3453844.409344 +536870912,3453221.891072 +536870912,3453952.171008 +536870912,3446489.142272 +536870912,3449383.568384 +536870912,3446259.742720 +536870912,3460290.946048 +536870912,3446720.000000 +536870912,3451656.995840 +536870912,3449657.871360 +536870912,3448086.475776 +536870912,3457631.558656 +536870912,3457282.187264 +536870912,3444347.597824 +536870912,3451544.083456 +536870912,3456937.194496 +536870912,3447010.627584 +536870912,3456520.714240 +536870912,3450380.945408 +536870912,3443959.030784 +536870912,3445176.724480 +536870912,3445353.475072 +536870912,3442576.835584 +536870912,3448826.449920 +536870912,3446867.448832 +536870912,3450191.804416 +536870912,3445160.425472 +536870912,3446422.851584 +536870912,3454616.722432 +536870912,3449329.193984 +536870912,3446355.295232 +536870912,3434644.790272 +536870912,3447525.355520 +536870912,3456827.583488 +536870912,3448879.969280 +536870912,3449759.014912 +536870912,3448717.647872 +536870912,3446717.643776 +536870912,3446898.970624 +536870912,3448839.154688 +536870912,3447831.241728 +536870912,3447451.748352 +536870912,3445480.836096 +536870912,3443843.047424 +536870912,3448341.271552 +536870912,3451050.302464 +536870912,3450539.380736 +536870912,3447875.683328 +536870912,3451511.885824 +536870912,3447458.503680 +536870912,3443479.245824 +536870912,3447164.039168 +536870912,3451339.865088 +536870912,3440927.352832 +536870912,3446677.650432 +536870912,3451717.533696 +536870912,3454385.261568 +536870912,3448134.755328 +536870912,3450587.252736 +536870912,3454527.812608 +268435456,3459163.694080 +268435456,3430796.759040 +268435456,3451239.310336 +268435456,3461031.758848 +268435456,3447169.682432 +268435456,3462529.155072 +268435456,3447317.600256 +268435456,3460763.320320 +268435456,3448875.840512 +268435456,3450054.627328 +268435456,3462016.634880 +268435456,3450032.197632 +268435456,3459465.029632 +268435456,3450830.516224 +268435456,3456008.331264 +268435456,3440884.830208 +268435456,3455782.992896 +268435456,3452809.920512 +268435456,3451877.091328 +268435456,3462016.360448 +268435456,3446026.885120 +268435456,3451500.502016 +268435456,3447577.382912 +268435456,3449440.667648 +268435456,3448527.350784 +268435456,3458503.414784 +268435456,3455835.611136 +268435456,3449396.867072 +268435456,3449557.141504 +268435456,3450246.251520 +268435456,3462823.848960 +268435456,3453087.952896 +268435456,3449960.730624 +268435456,3429425.197056 +268435456,3424818.157568 +268435456,3450483.948544 +268435456,3453894.785024 +268435456,3458960.079872 +268435456,3455463.305216 +268435456,3447817.977856 +268435456,3452376.429568 +268435456,3445090.971648 +268435456,3441819.543552 +268435456,3449083.850752 +268435456,3457229.524992 +268435456,3449535.081472 +268435456,3459326.246912 +268435456,3449360.284672 +268435456,3447553.580032 +268435456,3456761.282560 +268435456,3448087.586816 +268435456,3456028.241920 +268435456,3453598.605312 +268435456,3449144.253440 +268435456,3449489.326080 +268435456,3449164.902400 +268435456,3456261.586944 +268435456,3451641.702400 +268435456,3454617.906176 +268435456,3449624.051712 +268435456,3451792.186368 +268435456,3462618.110976 +268435456,3456045.739008 +268435456,3453919.313920 +268435456,3450469.642240 +268435456,3462478.298112 +268435456,3449657.690112 +268435456,3462567.709696 +268435456,3452225.713152 +268435456,3436880.709632 +268435456,3453210.723328 +268435456,3445811.905536 +268435456,3441777.925120 +268435456,3453664.716800 +268435456,3465267.999744 +268435456,3446127.136768 +268435456,3457344.837632 +268435456,3448291.420160 +268435456,3451190.239232 +268435456,3462929.335296 +268435456,3450030.562304 +268435456,3454039.003136 +268435456,3457569.148928 +268435456,3454912.803840 +268435456,3449758.652416 +268435456,3446647.515136 +268435456,3451505.819648 +268435456,3450159.472640 +268435456,3460315.268096 +268435456,3453920.087040 +268435456,3426721.597440 +268435456,3453095.184384 +268435456,3456754.900992 +268435456,3452683.268096 +268435456,3447922.279424 +268435456,3453326.314496 +268435456,3440587.355136 +268435456,3451439.881216 +268435456,3445326.283776 +268435456,3459686.967296 +268435456,3449051.495424 +268435456,3456593.546240 +268435456,3460191.991808 +268435456,3450090.544128 +268435456,3464546.183168 +268435456,3450541.310976 +268435456,3456955.839488 +268435456,3449476.843520 +268435456,3451995.321344 +268435456,3466050.518016 +268435456,3447101.870080 +268435456,3457395.544064 +268435456,3431074.445312 +268435456,3454015.974400 +268435456,3454068.948992 +268435456,3450687.156224 +268435456,3459653.361664 +268435456,3449191.496704 +268435456,3465345.781760 +268435456,3450736.031744 +268435456,3451400.074240 +268435456,3460238.123008 +268435456,3461413.310464 +268435456,3462527.508480 +268435456,3442372.615168 +268435456,3459402.895360 +268435456,3454431.032320 +268435456,3457940.130816 +268435456,3449780.579328 +268435456,3454832.484352 +268435456,3451976.774656 +268435456,3452863.358976 +268435456,3452691.499008 +268435456,3446001.607680 +268435456,3445225.761792 +268435456,3452305.593344 +268435456,3449335.775232 +268435456,3457150.327808 +268435456,3451479.780352 +268435456,3454427.663360 +268435456,3447008.905216 +268435456,3459015.990272 +268435456,3447523.020800 +268435456,3446355.567616 +268435456,3461536.262144 +268435456,3458601.928704 +268435456,3458215.704576 +268435456,3447785.418752 +268435456,3453562.706944 +268435456,3450771.144704 +268435456,3459505.022976 +268435456,3441299.176448 +268435456,3454529.997824 +268435456,3453218.775040 +268435456,3445528.250368 +268435456,3465046.490112 +268435456,3451445.425152 +268435456,3456749.568000 +268435456,3453221.230592 +268435456,3461697.529856 +268435456,3449465.950208 +268435456,3452803.189760 +268435456,3454269.440000 +268435456,3449436.310528 +268435456,3441366.037504 +268435456,3454108.636160 +268435456,3447598.557184 +268435456,3452715.509760 +268435456,3450015.306752 +268435456,3458644.046848 +268435456,3454546.841600 +268435456,3451898.318848 +268435456,3445510.317056 +268435456,3447040.225280 +268435456,3456508.135424 +268435456,3445874.775040 +268435456,3461728.294912 +268435456,3445911.917568 +268435456,3442757.343232 +268435456,3442532.418560 +268435456,3458100.560896 +268435456,3447822.422016 +268435456,3451278.249984 +268435456,3457788.472320 +268435456,3452337.646592 +268435456,3461041.354752 +268435456,3454872.325120 +268435456,3458932.558848 +268435456,3447894.479872 +268435456,3453178.835968 +268435456,3451966.501888 +268435456,3451977.866240 +268435456,3462654.518272 +268435456,3448724.975616 +268435456,3449925.680128 +268435456,3460866.669568 +268435456,3447391.224832 +268435456,3453424.989184 +268435456,3450164.513792 +268435456,3450452.383744 +268435456,3454423.930880 +268435456,3455018.263552 +268435456,3446601.882624 +268435456,3448767.896576 +268435456,3462170.951680 +268435456,3447963.411456 +268435456,3446291.819520 +268435456,3448611.098624 +268435456,3461471.814656 +268435456,3448885.096448 +268435456,3458446.699520 +268435456,3444729.938944 +268435456,3458624.379904 +268435456,3462996.261888 +268435456,3438707.141632 +268435456,3449308.497920 +268435456,3446658.164736 +268435456,3456377.747456 +268435456,3459131.240448 +268435456,3448215.853056 +268435456,3454670.580736 +268435456,3446826.886144 +268435456,3459203.999744 +268435456,3448007.764992 +268435456,3447926.133760 +268435456,3458219.035648 +268435456,3425448.358912 +268435456,3448087.495680 +268435456,3456012.250112 +268435456,3461090.158592 +268435456,3449974.124544 +268435456,3451482.779648 +268435456,3442437.122048 +268435456,3443090.060288 +268435456,3463405.518848 +268435456,3450580.734976 +268435456,3456815.891456 +268435456,3445751.120896 +268435456,3455884.678144 +268435456,3450542.810112 +268435456,3449184.734208 +268435456,3451539.993600 +268435456,3452629.880832 +268435456,3461000.274944 +268435456,3456057.083904 +268435456,3462168.207360 +268435456,3456814.796800 +268435456,3452302.729216 +268435456,3457794.583552 +268435456,3446548.230144 diff --git a/decompress/bw_all.CSV b/decompress/bw_all.CSV new file mode 100644 index 0000000..c025bfe --- /dev/null +++ b/decompress/bw_all.CSV @@ -0,0 +1,4 @@ +bytes,size,VANILLA,VANILLA_err,FALCO,FALCO_err,TETRA,TETRA_err,TRACE,TRACE_err
+268435456,256M,3371.312850,6.685594,,,,,,
+536870912,512M,3367.953428,4.529973,,,,,,
+1073741824,1G,3365.289682,2.809557,,,,,,
diff --git a/decompress/combine.py b/decompress/combine.py new file mode 100755 index 0000000..7397449 --- /dev/null +++ b/decompress/combine.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 + +import csv +import glob +import math +from collections import defaultdict +from pathlib import Path + + +LABELS = ["VANILLA", "FALCO", "TETRA", "TRACE"] + + +def label_from_path(path: str, prefix: str) -> str: + stem = Path(path).stem + if stem.startswith(prefix): + stem = stem[len(prefix):] + return stem.upper() + + +def format_size(n: int) -> str: + gib = 1024 ** 3 + mib = 1024 ** 2 + kib = 1024 + + if n >= gib: + v = n / gib + if abs(v - round(v)) < 0.03: + return f"{int(round(v))}G" + return f"{v:.1f}G" + + if n >= mib: + v = n / mib + if abs(v - round(v)) < 0.03: + return f"{int(round(v))}M" + return f"{round(n / 1_000_000)}M" + + if n >= kib: + return f"{round(n / 1000)}K" + + return f"{n}B" + + +def mean(xs): + return sum(xs) / len(xs) + + +def stddev(xs): + m = mean(xs) + return math.sqrt(sum((x - m) ** 2 for x in xs) / len(xs)) + + +def prepare_times(): + groups = defaultdict(list) + + for path in sorted(glob.glob("times_*.csv")): + label = label_from_path(path, "times_") + + if label not in LABELS: + print(f"Skipping unknown latency label: {path}") + continue + + with open(path, newline="") as f: + r = csv.DictReader(f) + if r.fieldnames != ["bytes", "time_usec"]: + raise ValueError(f"{path}: expected bytes,time_usec, got {r.fieldnames}") + + for row in r: + nbytes = int(row["bytes"]) + time_usec = float(row["time_usec"]) + groups[(label, nbytes)].append(time_usec) + + sizes = sorted({nbytes for (_, nbytes) in groups.keys()}) + + fieldnames = ["bytes"] + for label in LABELS: + fieldnames += [f"{label}_time_usec", f"{label}_cdf"] + + with open("times_all.CSV", "w", newline="") as f: + w = csv.DictWriter(f, fieldnames=fieldnames) + w.writeheader() + + for nbytes in sizes: + per_label = {} + max_n = 0 + + for label in LABELS: + values = sorted(groups.get((label, nbytes), [])) + n = len(values) + max_n = max(max_n, n) + + per_label[label] = [ + (v, (i + 1) / n) for i, v in enumerate(values) + ] if n else [] + + for i in range(max_n): + row = {"bytes": nbytes} + + for label in LABELS: + if i < len(per_label[label]): + t, cdf = per_label[label][i] + row[f"{label}_time_usec"] = f"{t / 1000.0:.6f}" + row[f"{label}_cdf"] = f"{cdf:.9f}" + else: + row[f"{label}_time_usec"] = "" + row[f"{label}_cdf"] = "" + + w.writerow(row) + + print("Wrote times_all.CSV") + + +def prepare_bw(): + groups = defaultdict(list) + + for path in sorted(glob.glob("bw_*.csv")): + label = label_from_path(path, "bw_") + + if label not in LABELS: + print(f"Skipping unknown bandwidth label: {path}") + continue + + with open(path, newline="") as f: + r = csv.DictReader(f) + if r.fieldnames != ["bytes", "bw_KiBps"]: + raise ValueError(f"{path}: expected bytes,bw_KiBps, got {r.fieldnames}") + + for row in r: + nbytes = int(row["bytes"]) + bw_mibps = float(row["bw_KiBps"]) / 1024.0 + groups[(label, nbytes)].append(bw_mibps) + + sizes = sorted({nbytes for (_, nbytes) in groups.keys()}) + + fieldnames = ["bytes", "size"] + for label in LABELS: + fieldnames += [label, f"{label}_err"] + + with open("bw_all.CSV", "w", newline="") as f: + w = csv.DictWriter(f, fieldnames=fieldnames) + w.writeheader() + + for nbytes in sizes: + row = { + "bytes": nbytes, + "size": format_size(nbytes), + } + + for label in LABELS: + values = groups.get((label, nbytes), []) + + if values: + row[label] = f"{mean(values):.6f}" + row[f"{label}_err"] = f"{stddev(values):.6f}" + else: + row[label] = "" + row[f"{label}_err"] = "" + + w.writerow(row) + + print("Wrote bw_all.CSV") + + +def main(): + prepare_times() + prepare_bw() + + +if __name__ == "__main__": + main() diff --git a/decompress/run.sh b/decompress/run.sh new file mode 100755 index 0000000..e75b465 --- /dev/null +++ b/decompress/run.sh @@ -0,0 +1,150 @@ +#!/usr/bin/env bash + +set -euo pipefail + +usage() { + echo "Usage: $0 <tag> <runs> <remote-chunk-directory> <chunk-size> [remote-log-prefix-base]" + echo + echo "Examples:" + echo " $0 VANILLA_1G 10 bins/1G 1M" + echo " $0 TRACE_5G 10 bins/5G 1M TRACE_5G" +} + +if [[ $# -lt 4 || $# -gt 5 ]]; then + usage + exit 1 +fi + +TAG="$1" +RUNS="$2" +REMOTE_CHUNK_DIR="$3" +CHUNK_SIZE="$4" +REMOTE_PREFIX_BASE="${5:-${TAG}}" + +SSH_KEY="$HOME/.ssh/id_ed25519" +REMOTE_HOST="ubuntu@143.248.53.46" +REMOTE_DIR="/home/ubuntu/siho-benchmark/compress" + +# DPU-side PCI BDF. +DPU_PCI="03:00.0" + +# DPU-side wrapper script. +DPU_SCRIPT="./run.sh" + +TIMES_CSV="times_${TAG}.csv" +BW_CSV="bw_${TAG}.csv" + +SSH_OPTS=( + -i "$SSH_KEY" + -n + -o BatchMode=yes + -o StrictHostKeyChecking=accept-new +) + +echo "=====" +echo "SIHO'S DOCA DECOMPRESS BENCHMARKING" +echo "SSH KEY LOCATION: $SSH_KEY" +echo "REMOTE HOST: $REMOTE_HOST" +echo "REMOTE DIR: $REMOTE_DIR" +echo "TAG: $TAG" +echo "DPU PCIE ADDRESS: $DPU_PCI" +echo "RUNS: $RUNS" +echo "REMOTE CHUNK DIR: $REMOTE_CHUNK_DIR" +echo "CHUNK SIZE: $CHUNK_SIZE" +echo "DPU SCRIPT: $DPU_SCRIPT" +echo "=====" +echo "PROCEED (y/N)?" + +read -r proceed + +if [[ "${proceed:-}" != "y" ]]; then + echo "TERMINATING..." + exit 0 +fi + +for i in $(seq 1 "$RUNS"); do + echo "===== RUN $i/$RUNS =====" + + RUN_LABEL="${REMOTE_PREFIX_BASE}_run_${i}" + + echo "[dpu] Running decompressor through wrapper..." + + if ! dpu_out="$( + ssh "${SSH_OPTS[@]}" "$REMOTE_HOST" \ + "cd '$REMOTE_DIR' && sudo -n '$DPU_SCRIPT' '$REMOTE_PREFIX_BASE' '$DPU_PCI' '$REMOTE_CHUNK_DIR' '$CHUNK_SIZE' '$RUN_LABEL'" \ + 2>&1 + )"; then + echo "ERROR: DPU decompressor failed" + echo "$dpu_out" + exit 1 + fi + + compressed_bytes="$( + awk '/^[[:space:]]*compressed_bytes:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + bytes="$( + awk '/^[[:space:]]*bytes:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + time_val="$( + awk '/^[[:space:]]*time:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + time_unit="$( + awk '/^[[:space:]]*time:/ {print $3}' <<< "$dpu_out" | tail -n1 + )" + + bw_val="$( + awk '/^[[:space:]]*BW:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + bw_unit="$( + awk '/^[[:space:]]*BW:/ {print $3}' <<< "$dpu_out" | tail -n1 + )" + + chunks="$( + awk '/^[[:space:]]*chunks:/ {print $2}' <<< "$dpu_out" | tail -n1 + )" + + if [[ -z "${bytes:-}" || -z "${time_val:-}" || -z "${bw_val:-}" ]]; then + echo "ERROR: failed to parse DPU output" + echo "$dpu_out" + exit 1 + fi + + # Convert time to usec. + case "$time_unit" in + usec) time_usec="$time_val" ;; + msec) time_usec="$(awk -v x="$time_val" 'BEGIN { printf "%.6f", x * 1000.0 }')" ;; + sec) time_usec="$(awk -v x="$time_val" 'BEGIN { printf "%.6f", x * 1000000.0 }')" ;; + nsec) time_usec="$(awk -v x="$time_val" 'BEGIN { printf "%.6f", x / 1000.0 }')" ;; + *) time_usec="$time_val" ;; + esac + + # Convert bandwidth to KiB/s. + case "$bw_unit" in + KiB/s|KiBps) bw_kibps="$bw_val" ;; + MiB/s|MiBps) bw_kibps="$(awk -v x="$bw_val" 'BEGIN { printf "%.6f", x * 1024.0 }')" ;; + GiB/s|GiBps) bw_kibps="$(awk -v x="$bw_val" 'BEGIN { printf "%.6f", x * 1024.0 * 1024.0 }')" ;; + B/s|Bps) bw_kibps="$(awk -v x="$bw_val" 'BEGIN { printf "%.6f", x / 1024.0 }')" ;; + *) bw_kibps="$bw_val" ;; + esac + + if [[ ! -f "$TIMES_CSV" ]]; then + echo "bytes,time_usec" > "$TIMES_CSV" + fi + + if [[ ! -f "$BW_CSV" ]]; then + echo "bytes,bw_KiBps" > "$BW_CSV" + fi + + echo "$bytes,$time_usec" >> "$TIMES_CSV" + echo "$bytes,$bw_kibps" >> "$BW_CSV" + + echo "[result] chunks=${chunks:-N/A} compressed_bytes=${compressed_bytes:-N/A} bytes=$bytes time_usec=$time_usec bw_KiBps=$bw_kibps" + echo "===== RUN $i/$RUNS DONE =====" +done + +echo "Wrote: $TIMES_CSV" +echo "Wrote: $BW_CSV" diff --git a/decompress/sum.sh b/decompress/sum.sh new file mode 100755 index 0000000..1958da7 --- /dev/null +++ b/decompress/sum.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -euo pipefail + + #times_FALCO.csv \ + #times_TETRA.csv \ + #times_TRACE.csv \ + #bw_FALCO.csv \ + #bw_TETRA.csv \ + #bw_TRACE.csv \ + +./analyze_time.py \ + --unit msec \ + --out time \ + times_VANILLA.csv \ + | tee ./summary/times.txt +./analyze_bw.py \ + --unit MiBps \ + --out bw \ + bw_VANILLA.csv \ + | tee ./summary/bw.txt diff --git a/decompress/summary/bw.txt b/decompress/summary/bw.txt new file mode 100644 index 0000000..f1b25a2 --- /dev/null +++ b/decompress/summary/bw.txt @@ -0,0 +1,12 @@ +Bandwidth summary +================= +input_files: 1 +input_unit: KiB/s +output_unit: MiB/s + + file_label bytes size n min avg std p1 p5 p10 p50 p90 p99 max + VANILLA 268435456 268M 250 3344.548982 3371.312850 6.685594 3347.701525 3361.129544 3364.969564 3371.066053 3379.927964 3383.944785 3384.814959 + VANILLA 536870912 537M 250 3348.809017 3367.953428 4.529973 3354.894507 3361.489498 3363.155884 3367.992598 3373.710145 3379.271457 3380.398829 + VANILLA 1073741824 1.00G 250 3355.466436 3365.289682 2.809557 3360.016221 3361.190035 3362.109871 3364.983041 3368.781319 3373.685582 3374.027910 + +Wrote bar graph: bw diff --git a/decompress/summary/times.txt b/decompress/summary/times.txt new file mode 100644 index 0000000..bddaed3 --- /dev/null +++ b/decompress/summary/times.txt @@ -0,0 +1,14 @@ +Latency summary +================ +input_files: 1 +input_unit: usec +output_unit: msec + + file_label bytes size n min avg std p50 p90 p99 max + VANILLA 268435456 268M 250 75.631904 75.935109 0.150845 75.940369 76.077954 76.470390 76.542458 + VANILLA 536870912 537M 250 151.461418 152.021380 0.204555 152.019337 152.237963 152.612848 152.890176 + VANILLA 1073741824 1.00G 250 303.494822 304.283081 0.253941 304.310597 304.570653 304.760434 305.173668 + +Wrote CDF graph: time_268M.png +Wrote CDF graph: time_537M.png +Wrote CDF graph: time_1.00G.png diff --git a/decompress/time_1.00G.png b/decompress/time_1.00G.png Binary files differnew file mode 100644 index 0000000..48ea6be --- /dev/null +++ b/decompress/time_1.00G.png diff --git a/decompress/time_268M.png b/decompress/time_268M.png Binary files differnew file mode 100644 index 0000000..9f6c7f5 --- /dev/null +++ b/decompress/time_268M.png diff --git a/decompress/time_537M.png b/decompress/time_537M.png Binary files differnew file mode 100644 index 0000000..baed4d3 --- /dev/null +++ b/decompress/time_537M.png diff --git a/decompress/times_VANILLA.csv b/decompress/times_VANILLA.csv new file mode 100644 index 0000000..94b7098 --- /dev/null +++ b/decompress/times_VANILLA.csv @@ -0,0 +1,751 @@ +bytes,time_usec +1073741824,304040.947 +1073741824,304068.011 +1073741824,304315.259 +1073741824,304599.477 +1073741824,304013.091 +1073741824,304408.292 +1073741824,304411.479 +1073741824,304186.071 +1073741824,304231.022 +1073741824,304166.145 +1073741824,304423.955 +1073741824,304654.159 +1073741824,303818.866 +1073741824,304493.128 +1073741824,304226.232 +1073741824,304205.835 +1073741824,304287.552 +1073741824,304274.106 +1073741824,304413.966 +1073741824,304116.462 +1073741824,304241.275 +1073741824,304259.633 +1073741824,304381.313 +1073741824,304379.358 +1073741824,304394.578 +1073741824,304311.802 +1073741824,304126.416 +1073741824,304587.135 +1073741824,303667.026 +1073741824,304213.074 +1073741824,304310.980 +1073741824,304337.081 +1073741824,304148.301 +1073741824,304453.208 +1073741824,304250.061 +1073741824,304662.704 +1073741824,303991.757 +1073741824,304611.290 +1073741824,303791.737 +1073741824,304104.426 +1073741824,303913.502 +1073741824,304244.543 +1073741824,303910.950 +1073741824,304079.644 +1073741824,304364.420 +1073741824,304685.333 +1073741824,304337.858 +1073741824,304081.016 +1073741824,304300.637 +1073741824,304260.647 +1073741824,304221.758 +1073741824,304414.116 +1073741824,304493.209 +1073741824,304577.650 +1073741824,303878.260 +1073741824,304430.056 +1073741824,304140.806 +1073741824,304212.335 +1073741824,304150.057 +1073741824,304407.502 +1073741824,303897.844 +1073741824,303881.210 +1073741824,303691.039 +1073741824,304049.238 +1073741824,303920.357 +1073741824,304377.245 +1073741824,304487.556 +1073741824,304338.052 +1073741824,303971.904 +1073741824,304269.327 +1073741824,304157.334 +1073741824,304126.230 +1073741824,304462.642 +1073741824,304316.574 +1073741824,304243.311 +1073741824,304231.453 +1073741824,304285.651 +1073741824,304186.805 +1073741824,304577.465 +1073741824,304400.076 +1073741824,304264.022 +1073741824,304075.094 +1073741824,303642.096 +1073741824,304415.230 +1073741824,304280.059 +1073741824,303822.131 +1073741824,304200.595 +1073741824,304242.881 +1073741824,304429.378 +1073741824,304441.907 +1073741824,304141.209 +1073741824,304382.950 +1073741824,304210.390 +1073741824,304299.223 +1073741824,304462.360 +1073741824,304678.993 +1073741824,304546.400 +1073741824,304545.976 +1073741824,303494.822 +1073741824,304168.338 +1073741824,304568.427 +1073741824,304026.469 +1073741824,303892.315 +1073741824,304371.789 +1073741824,304450.509 +1073741824,304463.275 +1073741824,304358.405 +1073741824,304458.799 +1073741824,304429.960 +1073741824,304332.812 +1073741824,304261.167 +1073741824,304160.478 +1073741824,304434.992 +1073741824,303804.097 +1073741824,304489.179 +1073741824,304459.350 +1073741824,304254.084 +1073741824,304603.672 +1073741824,304467.706 +1073741824,304443.787 +1073741824,303892.456 +1073741824,304371.161 +1073741824,304297.726 +1073741824,304674.118 +1073741824,304634.746 +1073741824,304395.387 +1073741824,304281.947 +1073741824,303998.665 +1073741824,304435.541 +1073741824,303967.665 +1073741824,304327.976 +1073741824,304193.402 +1073741824,304406.085 +1073741824,303748.416 +1073741824,304776.277 +1073741824,304201.725 +1073741824,304448.468 +1073741824,303667.061 +1073741824,305132.888 +1073741824,304214.965 +1073741824,304454.732 +1073741824,304429.213 +1073741824,305173.668 +1073741824,303845.298 +1073741824,304478.559 +1073741824,304177.352 +1073741824,304149.479 +1073741824,303518.270 +1073741824,304716.076 +1073741824,304106.350 +1073741824,304348.650 +1073741824,304167.507 +1073741824,304195.355 +1073741824,304127.512 +1073741824,304510.132 +1073741824,304209.069 +1073741824,304397.552 +1073741824,304165.681 +1073741824,304495.556 +1073741824,304224.169 +1073741824,304080.550 +1073741824,304276.786 +1073741824,304529.635 +1073741824,304653.813 +1073741824,304545.700 +1073741824,304351.642 +1073741824,304570.129 +1073741824,304449.877 +1073741824,304539.442 +1073741824,304575.372 +1073741824,304542.426 +1073741824,304292.706 +1073741824,304470.856 +1073741824,304470.683 +1073741824,304127.426 +1073741824,304519.814 +1073741824,304089.104 +1073741824,304394.299 +1073741824,304383.123 +1073741824,304326.965 +1073741824,304323.866 +1073741824,304334.088 +1073741824,303970.933 +1073741824,304317.226 +1073741824,304470.620 +1073741824,304460.232 +1073741824,304416.386 +1073741824,304342.942 +1073741824,304331.279 +1073741824,304301.684 +1073741824,304375.171 +1073741824,304368.843 +1073741824,304487.554 +1073741824,304240.816 +1073741824,304158.985 +1073741824,304009.636 +1073741824,304670.180 +1073741824,303949.881 +1073741824,304020.842 +1073741824,304108.343 +1073741824,304302.638 +1073741824,304410.107 +1073741824,304385.431 +1073741824,304505.412 +1073741824,304288.334 +1073741824,304208.825 +1073741824,304207.424 +1073741824,303519.727 +1073741824,304366.573 +1073741824,304107.245 +1073741824,304631.545 +1073741824,303965.909 +1073741824,304402.517 +1073741824,304310.215 +1073741824,304456.816 +1073741824,304252.160 +1073741824,304620.853 +1073741824,304525.813 +1073741824,304238.681 +1073741824,304077.773 +1073741824,304484.177 +1073741824,304060.010 +1073741824,303572.902 +1073741824,304372.266 +1073741824,304372.855 +1073741824,304422.818 +1073741824,304112.682 +1073741824,304325.136 +1073741824,304214.669 +1073741824,303531.749 +1073741824,304371.543 +1073741824,304180.764 +1073741824,304211.598 +1073741824,304371.991 +1073741824,304198.997 +1073741824,304197.283 +1073741824,304374.567 +1073741824,303971.712 +1073741824,304311.110 +1073741824,304275.377 +1073741824,304204.159 +1073741824,304743.945 +1073741824,304654.532 +1073741824,304679.231 +1073741824,304136.731 +1073741824,304468.931 +1073741824,304631.014 +1073741824,304411.683 +1073741824,304235.616 +1073741824,304051.388 +536870912,151996.736 +536870912,152056.294 +536870912,152238.140 +536870912,152061.232 +536870912,152072.505 +536870912,152085.524 +536870912,152179.383 +536870912,152172.141 +536870912,151748.460 +536870912,152076.449 +536870912,152087.801 +536870912,152192.370 +536870912,151730.783 +536870912,152173.773 +536870912,151750.796 +536870912,152048.473 +536870912,151951.733 +536870912,152596.268 +536870912,152061.946 +536870912,152328.334 +536870912,152164.139 +536870912,152124.496 +536870912,151904.871 +536870912,151619.298 +536870912,151862.982 +536870912,151973.784 +536870912,152112.431 +536870912,151985.497 +536870912,152014.566 +536870912,151732.209 +536870912,152093.440 +536870912,152152.287 +536870912,151891.764 +536870912,152147.627 +536870912,151998.980 +536870912,151987.343 +536870912,151907.617 +536870912,152275.324 +536870912,151812.490 +536870912,152001.163 +536870912,151793.903 +536870912,151851.951 +536870912,152128.833 +536870912,151689.672 +536870912,152098.393 +536870912,151944.149 +536870912,152144.452 +536870912,152117.687 +536870912,151585.246 +536870912,152134.651 +536870912,152086.365 +536870912,152100.342 +536870912,152008.954 +536870912,152198.869 +536870912,152554.971 +536870912,151886.746 +536870912,152216.502 +536870912,152002.701 +536870912,151738.827 +536870912,152394.197 +536870912,151946.195 +536870912,151984.935 +536870912,152006.018 +536870912,152165.427 +536870912,151482.343 +536870912,151680.429 +536870912,152149.999 +536870912,151874.660 +536870912,151975.324 +536870912,152021.569 +536870912,152080.008 +536870912,152176.356 +536870912,152150.466 +536870912,151930.858 +536870912,151944.780 +536870912,152033.896 +536870912,151974.030 +536870912,152044.326 +536870912,151687.191 +536870912,151994.020 +536870912,152162.654 +536870912,151508.455 +536870912,151932.362 +536870912,152257.373 +536870912,152234.001 +536870912,151973.116 +536870912,151925.585 +536870912,151927.175 +536870912,152065.138 +536870912,152130.282 +536870912,152045.562 +536870912,151878.428 +536870912,151877.926 +536870912,151980.956 +536870912,152000.034 +536870912,151864.138 +536870912,151923.296 +536870912,152088.811 +536870912,151804.126 +536870912,152476.231 +536870912,151820.139 +536870912,152059.386 +536870912,152241.111 +536870912,151862.094 +536870912,151956.004 +536870912,151949.954 +536870912,152079.929 +536870912,152628.778 +536870912,151789.160 +536870912,151912.127 +536870912,151984.099 +536870912,151775.341 +536870912,152103.928 +536870912,151877.445 +536870912,152174.356 +536870912,152011.069 +536870912,151888.235 +536870912,152121.930 +536870912,151907.566 +536870912,151997.514 +536870912,152286.065 +536870912,151986.687 +536870912,151989.431 +536870912,152467.993 +536870912,152131.799 +536870912,152252.548 +536870912,151941.896 +536870912,152245.439 +536870912,151785.160 +536870912,151965.022 +536870912,152090.964 +536870912,151984.214 +536870912,151461.418 +536870912,152035.869 +536870912,152061.772 +536870912,152131.946 +536870912,152122.596 +536870912,151952.332 +536870912,152040.590 +536870912,152000.930 +536870912,152161.986 +536870912,151783.765 +536870912,152230.277 +536870912,152025.735 +536870912,151865.671 +536870912,152195.695 +536870912,152078.143 +536870912,152259.017 +536870912,152137.183 +536870912,151600.119 +536870912,152040.699 +536870912,151954.134 +536870912,151958.682 +536870912,152044.377 +536870912,152371.670 +536870912,151902.732 +536870912,152219.691 +536870912,152003.100 +536870912,152536.005 +536870912,152537.084 +536870912,152890.176 +536870912,152045.137 +536870912,151754.629 +536870912,152242.185 +536870912,152148.704 +536870912,152003.078 +536870912,151997.900 +536870912,151941.408 +536870912,152019.426 +536870912,151762.490 +536870912,152181.276 +536870912,152052.957 +536870912,152002.940 +536870912,151729.637 +536870912,151920.341 +536870912,151959.446 +536870912,152175.012 +536870912,152137.172 +536870912,151746.833 +536870912,151638.768 +536870912,151966.985 +536870912,151991.452 +536870912,151973.312 +536870912,152237.943 +536870912,151556.464 +536870912,152127.151 +536870912,152054.675 +536870912,151936.625 +536870912,152082.684 +536870912,152197.716 +536870912,151798.384 +536870912,151825.749 +536870912,151793.648 +536870912,152122.342 +536870912,151994.694 +536870912,152132.468 +536870912,151515.583 +536870912,152112.153 +536870912,151894.583 +536870912,151982.608 +536870912,152051.871 +536870912,151632.119 +536870912,151647.442 +536870912,152216.925 +536870912,151899.552 +536870912,151662.576 +536870912,152099.328 +536870912,151680.850 +536870912,151950.758 +536870912,152234.099 +536870912,152180.292 +536870912,152172.485 +536870912,152295.221 +536870912,152019.247 +536870912,152105.646 +536870912,151959.088 +536870912,152181.012 +536870912,152125.268 +536870912,151764.448 +536870912,151997.090 +536870912,152128.250 +536870912,152646.935 +536870912,152076.619 +536870912,151667.385 +536870912,152016.888 +536870912,151978.152 +536870912,152024.043 +536870912,152112.257 +536870912,152104.255 +536870912,152018.687 +536870912,152063.127 +536870912,152079.866 +536870912,152166.860 +536870912,152239.226 +536870912,152040.636 +536870912,151921.286 +536870912,151943.781 +536870912,152061.167 +536870912,151900.969 +536870912,152079.568 +536870912,152255.310 +536870912,152092.559 +536870912,151908.540 +536870912,152368.227 +536870912,152114.022 +536870912,151891.919 +536870912,151774.617 +536870912,152049.742 +536870912,151941.673 +536870912,151768.354 +268435456,75782.479 +268435456,76409.073 +268435456,75956.483 +268435456,75741.576 +268435456,76046.155 +268435456,75708.821 +268435456,76042.892 +268435456,75747.451 +268435456,76008.535 +268435456,75982.565 +268435456,75720.029 +268435456,75983.059 +268435456,75775.878 +268435456,75965.481 +268435456,75851.669 +268435456,76185.055 +268435456,75856.615 +268435456,75921.932 +268435456,75942.449 +268435456,75720.035 +268435456,76071.374 +268435456,75950.735 +268435456,76037.162 +268435456,75996.089 +268435456,76016.216 +268435456,75796.947 +268435456,75855.460 +268435456,75997.054 +268435456,75993.523 +268435456,75978.345 +268435456,75702.378 +268435456,75915.819 +268435456,75984.633 +268435456,76439.632 +268435456,76542.458 +268435456,75973.111 +268435456,75898.085 +268435456,75786.940 +268435456,75863.633 +268435456,76031.856 +268435456,75931.465 +268435456,76092.040 +268435456,76164.365 +268435456,76003.951 +268435456,75824.876 +268435456,75994.009 +268435456,75778.918 +268435456,75997.860 +268435456,76037.687 +268435456,75835.147 +268435456,76025.911 +268435456,75851.232 +268435456,75904.594 +268435456,76002.620 +268435456,75995.017 +268435456,76002.165 +268435456,75846.111 +268435456,75947.628 +268435456,75882.198 +268435456,75992.049 +268435456,75944.317 +268435456,75706.876 +268435456,75850.848 +268435456,75897.546 +268435456,75973.426 +268435456,75709.933 +268435456,75991.308 +268435456,75707.978 +268435456,75934.780 +268435456,76273.814 +268435456,75913.120 +268435456,76076.120 +268435456,76165.286 +268435456,75903.141 +268435456,75648.983 +268435456,76069.161 +268435456,75822.347 +268435456,76021.417 +268435456,75957.563 +268435456,75700.072 +268435456,75983.095 +268435456,75894.916 +268435456,75817.428 +268435456,75875.721 +268435456,75989.084 +268435456,76057.676 +268435456,75950.618 +268435456,75980.256 +268435456,75757.259 +268435456,75897.529 +268435456,76499.941 +268435456,75915.660 +268435456,75835.287 +268435456,75924.717 +268435456,76029.556 +268435456,75910.579 +268435456,76191.642 +268435456,75952.069 +268435456,76086.843 +268435456,75771.017 +268435456,76004.664 +268435456,75838.827 +268435456,75759.958 +268435456,75981.774 +268435456,75664.744 +268435456,75971.848 +268435456,75830.879 +268435456,75995.292 +268435456,75939.848 +268435456,75631.904 +268435456,76047.651 +268435456,75821.235 +268435456,76402.889 +268435456,75895.422 +268435456,75894.258 +268435456,75968.637 +268435456,75771.753 +268435456,76001.579 +268435456,75647.285 +268435456,75967.561 +268435456,75952.945 +268435456,75758.948 +268435456,75733.227 +268435456,75708.857 +268435456,76152.128 +268435456,75777.239 +268435456,75886.303 +268435456,75809.294 +268435456,75988.601 +268435456,75877.485 +268435456,75940.256 +268435456,75920.757 +268435456,75924.536 +268435456,76071.932 +268435456,76089.063 +268435456,75933.023 +268435456,75998.400 +268435456,75826.613 +268435456,75951.191 +268435456,75886.377 +268435456,76049.702 +268435456,75785.715 +268435456,76038.361 +268435456,76064.119 +268435456,75730.537 +268435456,75794.788 +268435456,75803.253 +268435456,76032.574 +268435456,75905.383 +268435456,75966.788 +268435456,75775.002 +268435456,76175.882 +268435456,75884.129 +268435456,75912.943 +268435456,76082.383 +268435456,75653.819 +268435456,75951.947 +268435456,75835.404 +268435456,75912.889 +268435456,75727.009 +268435456,75995.532 +268435456,75922.080 +268435456,75889.853 +268435456,75996.185 +268435456,76174.402 +268435456,75893.386 +268435456,76036.695 +268435456,75924.008 +268435456,75983.431 +268435456,75793.865 +268435456,75883.759 +268435456,75941.982 +268435456,76082.779 +268435456,76049.011 +268435456,75840.701 +268435456,76074.732 +268435456,75726.336 +268435456,76073.912 +268435456,76143.618 +268435456,76148.593 +268435456,75805.777 +268435456,76031.758 +268435456,75955.626 +268435456,75812.619 +268435456,75932.318 +268435456,75741.366 +268435456,75876.610 +268435456,75787.543 +268435456,76030.169 +268435456,75913.821 +268435456,75940.482 +268435456,75940.232 +268435456,75706.080 +268435456,76011.860 +268435456,75985.405 +268435456,75745.189 +268435456,76041.268 +268435456,75908.410 +268435456,75980.145 +268435456,75973.806 +268435456,75886.459 +268435456,75873.405 +268435456,76058.683 +268435456,76010.914 +268435456,75716.654 +268435456,76028.649 +268435456,76065.526 +268435456,76014.370 +268435456,75731.947 +268435456,76008.331 +268435456,75798.190 +268435456,76100.015 +268435456,75794.296 +268435456,75698.609 +268435456,76233.302 +268435456,75999.001 +268435456,76057.441 +268435456,75843.562 +268435456,75783.190 +268435456,76023.083 +268435456,75881.041 +268435456,76053.718 +268435456,75781.596 +268435456,76027.671 +268435456,76029.471 +268435456,75803.180 +268435456,76528.376 +268435456,76025.913 +268435456,75851.583 +268435456,75740.298 +268435456,75984.338 +268435456,75951.125 +268435456,76150.701 +268435456,76136.260 +268435456,75689.664 +268435456,75970.980 +268435456,75833.949 +268435456,76077.462 +268435456,75854.383 +268435456,75971.815 +268435456,76001.728 +268435456,75949.866 +268435456,75925.891 +268435456,75742.265 +268435456,75850.599 +268435456,75716.714 +268435456,75833.973 +268435456,75933.086 +268435456,75812.485 +268435456,76059.867 diff --git a/decompress/times_all.CSV b/decompress/times_all.CSV new file mode 100644 index 0000000..1c08448 --- /dev/null +++ b/decompress/times_all.CSV @@ -0,0 +1,751 @@ +bytes,VANILLA_time_usec,VANILLA_cdf,FALCO_time_usec,FALCO_cdf,TETRA_time_usec,TETRA_cdf,TRACE_time_usec,TRACE_cdf
+268435456,75.631904,0.004000000,,,,,,
+268435456,75.647285,0.008000000,,,,,,
+268435456,75.648983,0.012000000,,,,,,
+268435456,75.653819,0.016000000,,,,,,
+268435456,75.664744,0.020000000,,,,,,
+268435456,75.689664,0.024000000,,,,,,
+268435456,75.698609,0.028000000,,,,,,
+268435456,75.700072,0.032000000,,,,,,
+268435456,75.702378,0.036000000,,,,,,
+268435456,75.706080,0.040000000,,,,,,
+268435456,75.706876,0.044000000,,,,,,
+268435456,75.707978,0.048000000,,,,,,
+268435456,75.708821,0.052000000,,,,,,
+268435456,75.708857,0.056000000,,,,,,
+268435456,75.709933,0.060000000,,,,,,
+268435456,75.716654,0.064000000,,,,,,
+268435456,75.716714,0.068000000,,,,,,
+268435456,75.720029,0.072000000,,,,,,
+268435456,75.720035,0.076000000,,,,,,
+268435456,75.726336,0.080000000,,,,,,
+268435456,75.727009,0.084000000,,,,,,
+268435456,75.730537,0.088000000,,,,,,
+268435456,75.731947,0.092000000,,,,,,
+268435456,75.733227,0.096000000,,,,,,
+268435456,75.740298,0.100000000,,,,,,
+268435456,75.741366,0.104000000,,,,,,
+268435456,75.741576,0.108000000,,,,,,
+268435456,75.742265,0.112000000,,,,,,
+268435456,75.745189,0.116000000,,,,,,
+268435456,75.747451,0.120000000,,,,,,
+268435456,75.757259,0.124000000,,,,,,
+268435456,75.758948,0.128000000,,,,,,
+268435456,75.759958,0.132000000,,,,,,
+268435456,75.771017,0.136000000,,,,,,
+268435456,75.771753,0.140000000,,,,,,
+268435456,75.775002,0.144000000,,,,,,
+268435456,75.775878,0.148000000,,,,,,
+268435456,75.777239,0.152000000,,,,,,
+268435456,75.778918,0.156000000,,,,,,
+268435456,75.781596,0.160000000,,,,,,
+268435456,75.782479,0.164000000,,,,,,
+268435456,75.783190,0.168000000,,,,,,
+268435456,75.785715,0.172000000,,,,,,
+268435456,75.786940,0.176000000,,,,,,
+268435456,75.787543,0.180000000,,,,,,
+268435456,75.793865,0.184000000,,,,,,
+268435456,75.794296,0.188000000,,,,,,
+268435456,75.794788,0.192000000,,,,,,
+268435456,75.796947,0.196000000,,,,,,
+268435456,75.798190,0.200000000,,,,,,
+268435456,75.803180,0.204000000,,,,,,
+268435456,75.803253,0.208000000,,,,,,
+268435456,75.805777,0.212000000,,,,,,
+268435456,75.809294,0.216000000,,,,,,
+268435456,75.812485,0.220000000,,,,,,
+268435456,75.812619,0.224000000,,,,,,
+268435456,75.817428,0.228000000,,,,,,
+268435456,75.821235,0.232000000,,,,,,
+268435456,75.822347,0.236000000,,,,,,
+268435456,75.824876,0.240000000,,,,,,
+268435456,75.826613,0.244000000,,,,,,
+268435456,75.830879,0.248000000,,,,,,
+268435456,75.833949,0.252000000,,,,,,
+268435456,75.833973,0.256000000,,,,,,
+268435456,75.835147,0.260000000,,,,,,
+268435456,75.835287,0.264000000,,,,,,
+268435456,75.835404,0.268000000,,,,,,
+268435456,75.838827,0.272000000,,,,,,
+268435456,75.840701,0.276000000,,,,,,
+268435456,75.843562,0.280000000,,,,,,
+268435456,75.846111,0.284000000,,,,,,
+268435456,75.850599,0.288000000,,,,,,
+268435456,75.850848,0.292000000,,,,,,
+268435456,75.851232,0.296000000,,,,,,
+268435456,75.851583,0.300000000,,,,,,
+268435456,75.851669,0.304000000,,,,,,
+268435456,75.854383,0.308000000,,,,,,
+268435456,75.855460,0.312000000,,,,,,
+268435456,75.856615,0.316000000,,,,,,
+268435456,75.863633,0.320000000,,,,,,
+268435456,75.873405,0.324000000,,,,,,
+268435456,75.875721,0.328000000,,,,,,
+268435456,75.876610,0.332000000,,,,,,
+268435456,75.877485,0.336000000,,,,,,
+268435456,75.881041,0.340000000,,,,,,
+268435456,75.882198,0.344000000,,,,,,
+268435456,75.883759,0.348000000,,,,,,
+268435456,75.884129,0.352000000,,,,,,
+268435456,75.886303,0.356000000,,,,,,
+268435456,75.886377,0.360000000,,,,,,
+268435456,75.886459,0.364000000,,,,,,
+268435456,75.889853,0.368000000,,,,,,
+268435456,75.893386,0.372000000,,,,,,
+268435456,75.894258,0.376000000,,,,,,
+268435456,75.894916,0.380000000,,,,,,
+268435456,75.895422,0.384000000,,,,,,
+268435456,75.897529,0.388000000,,,,,,
+268435456,75.897546,0.392000000,,,,,,
+268435456,75.898085,0.396000000,,,,,,
+268435456,75.903141,0.400000000,,,,,,
+268435456,75.904594,0.404000000,,,,,,
+268435456,75.905383,0.408000000,,,,,,
+268435456,75.908410,0.412000000,,,,,,
+268435456,75.910579,0.416000000,,,,,,
+268435456,75.912889,0.420000000,,,,,,
+268435456,75.912943,0.424000000,,,,,,
+268435456,75.913120,0.428000000,,,,,,
+268435456,75.913821,0.432000000,,,,,,
+268435456,75.915660,0.436000000,,,,,,
+268435456,75.915819,0.440000000,,,,,,
+268435456,75.920757,0.444000000,,,,,,
+268435456,75.921932,0.448000000,,,,,,
+268435456,75.922080,0.452000000,,,,,,
+268435456,75.924008,0.456000000,,,,,,
+268435456,75.924536,0.460000000,,,,,,
+268435456,75.924717,0.464000000,,,,,,
+268435456,75.925891,0.468000000,,,,,,
+268435456,75.931465,0.472000000,,,,,,
+268435456,75.932318,0.476000000,,,,,,
+268435456,75.933023,0.480000000,,,,,,
+268435456,75.933086,0.484000000,,,,,,
+268435456,75.934780,0.488000000,,,,,,
+268435456,75.939848,0.492000000,,,,,,
+268435456,75.940232,0.496000000,,,,,,
+268435456,75.940256,0.500000000,,,,,,
+268435456,75.940482,0.504000000,,,,,,
+268435456,75.941982,0.508000000,,,,,,
+268435456,75.942449,0.512000000,,,,,,
+268435456,75.944317,0.516000000,,,,,,
+268435456,75.947628,0.520000000,,,,,,
+268435456,75.949866,0.524000000,,,,,,
+268435456,75.950618,0.528000000,,,,,,
+268435456,75.950735,0.532000000,,,,,,
+268435456,75.951125,0.536000000,,,,,,
+268435456,75.951191,0.540000000,,,,,,
+268435456,75.951947,0.544000000,,,,,,
+268435456,75.952069,0.548000000,,,,,,
+268435456,75.952945,0.552000000,,,,,,
+268435456,75.955626,0.556000000,,,,,,
+268435456,75.956483,0.560000000,,,,,,
+268435456,75.957563,0.564000000,,,,,,
+268435456,75.965481,0.568000000,,,,,,
+268435456,75.966788,0.572000000,,,,,,
+268435456,75.967561,0.576000000,,,,,,
+268435456,75.968637,0.580000000,,,,,,
+268435456,75.970980,0.584000000,,,,,,
+268435456,75.971815,0.588000000,,,,,,
+268435456,75.971848,0.592000000,,,,,,
+268435456,75.973111,0.596000000,,,,,,
+268435456,75.973426,0.600000000,,,,,,
+268435456,75.973806,0.604000000,,,,,,
+268435456,75.978345,0.608000000,,,,,,
+268435456,75.980145,0.612000000,,,,,,
+268435456,75.980256,0.616000000,,,,,,
+268435456,75.981774,0.620000000,,,,,,
+268435456,75.982565,0.624000000,,,,,,
+268435456,75.983059,0.628000000,,,,,,
+268435456,75.983095,0.632000000,,,,,,
+268435456,75.983431,0.636000000,,,,,,
+268435456,75.984338,0.640000000,,,,,,
+268435456,75.984633,0.644000000,,,,,,
+268435456,75.985405,0.648000000,,,,,,
+268435456,75.988601,0.652000000,,,,,,
+268435456,75.989084,0.656000000,,,,,,
+268435456,75.991308,0.660000000,,,,,,
+268435456,75.992049,0.664000000,,,,,,
+268435456,75.993523,0.668000000,,,,,,
+268435456,75.994009,0.672000000,,,,,,
+268435456,75.995017,0.676000000,,,,,,
+268435456,75.995292,0.680000000,,,,,,
+268435456,75.995532,0.684000000,,,,,,
+268435456,75.996089,0.688000000,,,,,,
+268435456,75.996185,0.692000000,,,,,,
+268435456,75.997054,0.696000000,,,,,,
+268435456,75.997860,0.700000000,,,,,,
+268435456,75.998400,0.704000000,,,,,,
+268435456,75.999001,0.708000000,,,,,,
+268435456,76.001579,0.712000000,,,,,,
+268435456,76.001728,0.716000000,,,,,,
+268435456,76.002165,0.720000000,,,,,,
+268435456,76.002620,0.724000000,,,,,,
+268435456,76.003951,0.728000000,,,,,,
+268435456,76.004664,0.732000000,,,,,,
+268435456,76.008331,0.736000000,,,,,,
+268435456,76.008535,0.740000000,,,,,,
+268435456,76.010914,0.744000000,,,,,,
+268435456,76.011860,0.748000000,,,,,,
+268435456,76.014370,0.752000000,,,,,,
+268435456,76.016216,0.756000000,,,,,,
+268435456,76.021417,0.760000000,,,,,,
+268435456,76.023083,0.764000000,,,,,,
+268435456,76.025911,0.768000000,,,,,,
+268435456,76.025913,0.772000000,,,,,,
+268435456,76.027671,0.776000000,,,,,,
+268435456,76.028649,0.780000000,,,,,,
+268435456,76.029471,0.784000000,,,,,,
+268435456,76.029556,0.788000000,,,,,,
+268435456,76.030169,0.792000000,,,,,,
+268435456,76.031758,0.796000000,,,,,,
+268435456,76.031856,0.800000000,,,,,,
+268435456,76.032574,0.804000000,,,,,,
+268435456,76.036695,0.808000000,,,,,,
+268435456,76.037162,0.812000000,,,,,,
+268435456,76.037687,0.816000000,,,,,,
+268435456,76.038361,0.820000000,,,,,,
+268435456,76.041268,0.824000000,,,,,,
+268435456,76.042892,0.828000000,,,,,,
+268435456,76.046155,0.832000000,,,,,,
+268435456,76.047651,0.836000000,,,,,,
+268435456,76.049011,0.840000000,,,,,,
+268435456,76.049702,0.844000000,,,,,,
+268435456,76.053718,0.848000000,,,,,,
+268435456,76.057441,0.852000000,,,,,,
+268435456,76.057676,0.856000000,,,,,,
+268435456,76.058683,0.860000000,,,,,,
+268435456,76.059867,0.864000000,,,,,,
+268435456,76.064119,0.868000000,,,,,,
+268435456,76.065526,0.872000000,,,,,,
+268435456,76.069161,0.876000000,,,,,,
+268435456,76.071374,0.880000000,,,,,,
+268435456,76.071932,0.884000000,,,,,,
+268435456,76.073912,0.888000000,,,,,,
+268435456,76.074732,0.892000000,,,,,,
+268435456,76.076120,0.896000000,,,,,,
+268435456,76.077462,0.900000000,,,,,,
+268435456,76.082383,0.904000000,,,,,,
+268435456,76.082779,0.908000000,,,,,,
+268435456,76.086843,0.912000000,,,,,,
+268435456,76.089063,0.916000000,,,,,,
+268435456,76.092040,0.920000000,,,,,,
+268435456,76.100015,0.924000000,,,,,,
+268435456,76.136260,0.928000000,,,,,,
+268435456,76.143618,0.932000000,,,,,,
+268435456,76.148593,0.936000000,,,,,,
+268435456,76.150701,0.940000000,,,,,,
+268435456,76.152128,0.944000000,,,,,,
+268435456,76.164365,0.948000000,,,,,,
+268435456,76.165286,0.952000000,,,,,,
+268435456,76.174402,0.956000000,,,,,,
+268435456,76.175882,0.960000000,,,,,,
+268435456,76.185055,0.964000000,,,,,,
+268435456,76.191642,0.968000000,,,,,,
+268435456,76.233302,0.972000000,,,,,,
+268435456,76.273814,0.976000000,,,,,,
+268435456,76.402889,0.980000000,,,,,,
+268435456,76.409073,0.984000000,,,,,,
+268435456,76.439632,0.988000000,,,,,,
+268435456,76.499941,0.992000000,,,,,,
+268435456,76.528376,0.996000000,,,,,,
+268435456,76.542458,1.000000000,,,,,,
+536870912,151.461418,0.004000000,,,,,,
+536870912,151.482343,0.008000000,,,,,,
+536870912,151.508455,0.012000000,,,,,,
+536870912,151.515583,0.016000000,,,,,,
+536870912,151.556464,0.020000000,,,,,,
+536870912,151.585246,0.024000000,,,,,,
+536870912,151.600119,0.028000000,,,,,,
+536870912,151.619298,0.032000000,,,,,,
+536870912,151.632119,0.036000000,,,,,,
+536870912,151.638768,0.040000000,,,,,,
+536870912,151.647442,0.044000000,,,,,,
+536870912,151.662576,0.048000000,,,,,,
+536870912,151.667385,0.052000000,,,,,,
+536870912,151.680429,0.056000000,,,,,,
+536870912,151.680850,0.060000000,,,,,,
+536870912,151.687191,0.064000000,,,,,,
+536870912,151.689672,0.068000000,,,,,,
+536870912,151.729637,0.072000000,,,,,,
+536870912,151.730783,0.076000000,,,,,,
+536870912,151.732209,0.080000000,,,,,,
+536870912,151.738827,0.084000000,,,,,,
+536870912,151.746833,0.088000000,,,,,,
+536870912,151.748460,0.092000000,,,,,,
+536870912,151.750796,0.096000000,,,,,,
+536870912,151.754629,0.100000000,,,,,,
+536870912,151.762490,0.104000000,,,,,,
+536870912,151.764448,0.108000000,,,,,,
+536870912,151.768354,0.112000000,,,,,,
+536870912,151.774617,0.116000000,,,,,,
+536870912,151.775341,0.120000000,,,,,,
+536870912,151.783765,0.124000000,,,,,,
+536870912,151.785160,0.128000000,,,,,,
+536870912,151.789160,0.132000000,,,,,,
+536870912,151.793648,0.136000000,,,,,,
+536870912,151.793903,0.140000000,,,,,,
+536870912,151.798384,0.144000000,,,,,,
+536870912,151.804126,0.148000000,,,,,,
+536870912,151.812490,0.152000000,,,,,,
+536870912,151.820139,0.156000000,,,,,,
+536870912,151.825749,0.160000000,,,,,,
+536870912,151.851951,0.164000000,,,,,,
+536870912,151.862094,0.168000000,,,,,,
+536870912,151.862982,0.172000000,,,,,,
+536870912,151.864138,0.176000000,,,,,,
+536870912,151.865671,0.180000000,,,,,,
+536870912,151.874660,0.184000000,,,,,,
+536870912,151.877445,0.188000000,,,,,,
+536870912,151.877926,0.192000000,,,,,,
+536870912,151.878428,0.196000000,,,,,,
+536870912,151.886746,0.200000000,,,,,,
+536870912,151.888235,0.204000000,,,,,,
+536870912,151.891764,0.208000000,,,,,,
+536870912,151.891919,0.212000000,,,,,,
+536870912,151.894583,0.216000000,,,,,,
+536870912,151.899552,0.220000000,,,,,,
+536870912,151.900969,0.224000000,,,,,,
+536870912,151.902732,0.228000000,,,,,,
+536870912,151.904871,0.232000000,,,,,,
+536870912,151.907566,0.236000000,,,,,,
+536870912,151.907617,0.240000000,,,,,,
+536870912,151.908540,0.244000000,,,,,,
+536870912,151.912127,0.248000000,,,,,,
+536870912,151.920341,0.252000000,,,,,,
+536870912,151.921286,0.256000000,,,,,,
+536870912,151.923296,0.260000000,,,,,,
+536870912,151.925585,0.264000000,,,,,,
+536870912,151.927175,0.268000000,,,,,,
+536870912,151.930858,0.272000000,,,,,,
+536870912,151.932362,0.276000000,,,,,,
+536870912,151.936625,0.280000000,,,,,,
+536870912,151.941408,0.284000000,,,,,,
+536870912,151.941673,0.288000000,,,,,,
+536870912,151.941896,0.292000000,,,,,,
+536870912,151.943781,0.296000000,,,,,,
+536870912,151.944149,0.300000000,,,,,,
+536870912,151.944780,0.304000000,,,,,,
+536870912,151.946195,0.308000000,,,,,,
+536870912,151.949954,0.312000000,,,,,,
+536870912,151.950758,0.316000000,,,,,,
+536870912,151.951733,0.320000000,,,,,,
+536870912,151.952332,0.324000000,,,,,,
+536870912,151.954134,0.328000000,,,,,,
+536870912,151.956004,0.332000000,,,,,,
+536870912,151.958682,0.336000000,,,,,,
+536870912,151.959088,0.340000000,,,,,,
+536870912,151.959446,0.344000000,,,,,,
+536870912,151.965022,0.348000000,,,,,,
+536870912,151.966985,0.352000000,,,,,,
+536870912,151.973116,0.356000000,,,,,,
+536870912,151.973312,0.360000000,,,,,,
+536870912,151.973784,0.364000000,,,,,,
+536870912,151.974030,0.368000000,,,,,,
+536870912,151.975324,0.372000000,,,,,,
+536870912,151.978152,0.376000000,,,,,,
+536870912,151.980956,0.380000000,,,,,,
+536870912,151.982608,0.384000000,,,,,,
+536870912,151.984099,0.388000000,,,,,,
+536870912,151.984214,0.392000000,,,,,,
+536870912,151.984935,0.396000000,,,,,,
+536870912,151.985497,0.400000000,,,,,,
+536870912,151.986687,0.404000000,,,,,,
+536870912,151.987343,0.408000000,,,,,,
+536870912,151.989431,0.412000000,,,,,,
+536870912,151.991452,0.416000000,,,,,,
+536870912,151.994020,0.420000000,,,,,,
+536870912,151.994694,0.424000000,,,,,,
+536870912,151.996736,0.428000000,,,,,,
+536870912,151.997090,0.432000000,,,,,,
+536870912,151.997514,0.436000000,,,,,,
+536870912,151.997900,0.440000000,,,,,,
+536870912,151.998980,0.444000000,,,,,,
+536870912,152.000034,0.448000000,,,,,,
+536870912,152.000930,0.452000000,,,,,,
+536870912,152.001163,0.456000000,,,,,,
+536870912,152.002701,0.460000000,,,,,,
+536870912,152.002940,0.464000000,,,,,,
+536870912,152.003078,0.468000000,,,,,,
+536870912,152.003100,0.472000000,,,,,,
+536870912,152.006018,0.476000000,,,,,,
+536870912,152.008954,0.480000000,,,,,,
+536870912,152.011069,0.484000000,,,,,,
+536870912,152.014566,0.488000000,,,,,,
+536870912,152.016888,0.492000000,,,,,,
+536870912,152.018687,0.496000000,,,,,,
+536870912,152.019247,0.500000000,,,,,,
+536870912,152.019426,0.504000000,,,,,,
+536870912,152.021569,0.508000000,,,,,,
+536870912,152.024043,0.512000000,,,,,,
+536870912,152.025735,0.516000000,,,,,,
+536870912,152.033896,0.520000000,,,,,,
+536870912,152.035869,0.524000000,,,,,,
+536870912,152.040590,0.528000000,,,,,,
+536870912,152.040636,0.532000000,,,,,,
+536870912,152.040699,0.536000000,,,,,,
+536870912,152.044326,0.540000000,,,,,,
+536870912,152.044377,0.544000000,,,,,,
+536870912,152.045137,0.548000000,,,,,,
+536870912,152.045562,0.552000000,,,,,,
+536870912,152.048473,0.556000000,,,,,,
+536870912,152.049742,0.560000000,,,,,,
+536870912,152.051871,0.564000000,,,,,,
+536870912,152.052957,0.568000000,,,,,,
+536870912,152.054675,0.572000000,,,,,,
+536870912,152.056294,0.576000000,,,,,,
+536870912,152.059386,0.580000000,,,,,,
+536870912,152.061167,0.584000000,,,,,,
+536870912,152.061232,0.588000000,,,,,,
+536870912,152.061772,0.592000000,,,,,,
+536870912,152.061946,0.596000000,,,,,,
+536870912,152.063127,0.600000000,,,,,,
+536870912,152.065138,0.604000000,,,,,,
+536870912,152.072505,0.608000000,,,,,,
+536870912,152.076449,0.612000000,,,,,,
+536870912,152.076619,0.616000000,,,,,,
+536870912,152.078143,0.620000000,,,,,,
+536870912,152.079568,0.624000000,,,,,,
+536870912,152.079866,0.628000000,,,,,,
+536870912,152.079929,0.632000000,,,,,,
+536870912,152.080008,0.636000000,,,,,,
+536870912,152.082684,0.640000000,,,,,,
+536870912,152.085524,0.644000000,,,,,,
+536870912,152.086365,0.648000000,,,,,,
+536870912,152.087801,0.652000000,,,,,,
+536870912,152.088811,0.656000000,,,,,,
+536870912,152.090964,0.660000000,,,,,,
+536870912,152.092559,0.664000000,,,,,,
+536870912,152.093440,0.668000000,,,,,,
+536870912,152.098393,0.672000000,,,,,,
+536870912,152.099328,0.676000000,,,,,,
+536870912,152.100342,0.680000000,,,,,,
+536870912,152.103928,0.684000000,,,,,,
+536870912,152.104255,0.688000000,,,,,,
+536870912,152.105646,0.692000000,,,,,,
+536870912,152.112153,0.696000000,,,,,,
+536870912,152.112257,0.700000000,,,,,,
+536870912,152.112431,0.704000000,,,,,,
+536870912,152.114022,0.708000000,,,,,,
+536870912,152.117687,0.712000000,,,,,,
+536870912,152.121930,0.716000000,,,,,,
+536870912,152.122342,0.720000000,,,,,,
+536870912,152.122596,0.724000000,,,,,,
+536870912,152.124496,0.728000000,,,,,,
+536870912,152.125268,0.732000000,,,,,,
+536870912,152.127151,0.736000000,,,,,,
+536870912,152.128250,0.740000000,,,,,,
+536870912,152.128833,0.744000000,,,,,,
+536870912,152.130282,0.748000000,,,,,,
+536870912,152.131799,0.752000000,,,,,,
+536870912,152.131946,0.756000000,,,,,,
+536870912,152.132468,0.760000000,,,,,,
+536870912,152.134651,0.764000000,,,,,,
+536870912,152.137172,0.768000000,,,,,,
+536870912,152.137183,0.772000000,,,,,,
+536870912,152.144452,0.776000000,,,,,,
+536870912,152.147627,0.780000000,,,,,,
+536870912,152.148704,0.784000000,,,,,,
+536870912,152.149999,0.788000000,,,,,,
+536870912,152.150466,0.792000000,,,,,,
+536870912,152.152287,0.796000000,,,,,,
+536870912,152.161986,0.800000000,,,,,,
+536870912,152.162654,0.804000000,,,,,,
+536870912,152.164139,0.808000000,,,,,,
+536870912,152.165427,0.812000000,,,,,,
+536870912,152.166860,0.816000000,,,,,,
+536870912,152.172141,0.820000000,,,,,,
+536870912,152.172485,0.824000000,,,,,,
+536870912,152.173773,0.828000000,,,,,,
+536870912,152.174356,0.832000000,,,,,,
+536870912,152.175012,0.836000000,,,,,,
+536870912,152.176356,0.840000000,,,,,,
+536870912,152.179383,0.844000000,,,,,,
+536870912,152.180292,0.848000000,,,,,,
+536870912,152.181012,0.852000000,,,,,,
+536870912,152.181276,0.856000000,,,,,,
+536870912,152.192370,0.860000000,,,,,,
+536870912,152.195695,0.864000000,,,,,,
+536870912,152.197716,0.868000000,,,,,,
+536870912,152.198869,0.872000000,,,,,,
+536870912,152.216502,0.876000000,,,,,,
+536870912,152.216925,0.880000000,,,,,,
+536870912,152.219691,0.884000000,,,,,,
+536870912,152.230277,0.888000000,,,,,,
+536870912,152.234001,0.892000000,,,,,,
+536870912,152.234099,0.896000000,,,,,,
+536870912,152.237943,0.900000000,,,,,,
+536870912,152.238140,0.904000000,,,,,,
+536870912,152.239226,0.908000000,,,,,,
+536870912,152.241111,0.912000000,,,,,,
+536870912,152.242185,0.916000000,,,,,,
+536870912,152.245439,0.920000000,,,,,,
+536870912,152.252548,0.924000000,,,,,,
+536870912,152.255310,0.928000000,,,,,,
+536870912,152.257373,0.932000000,,,,,,
+536870912,152.259017,0.936000000,,,,,,
+536870912,152.275324,0.940000000,,,,,,
+536870912,152.286065,0.944000000,,,,,,
+536870912,152.295221,0.948000000,,,,,,
+536870912,152.328334,0.952000000,,,,,,
+536870912,152.368227,0.956000000,,,,,,
+536870912,152.371670,0.960000000,,,,,,
+536870912,152.394197,0.964000000,,,,,,
+536870912,152.467993,0.968000000,,,,,,
+536870912,152.476231,0.972000000,,,,,,
+536870912,152.536005,0.976000000,,,,,,
+536870912,152.537084,0.980000000,,,,,,
+536870912,152.554971,0.984000000,,,,,,
+536870912,152.596268,0.988000000,,,,,,
+536870912,152.628778,0.992000000,,,,,,
+536870912,152.646935,0.996000000,,,,,,
+536870912,152.890176,1.000000000,,,,,,
+1073741824,303.494822,0.004000000,,,,,,
+1073741824,303.518270,0.008000000,,,,,,
+1073741824,303.519727,0.012000000,,,,,,
+1073741824,303.531749,0.016000000,,,,,,
+1073741824,303.572902,0.020000000,,,,,,
+1073741824,303.642096,0.024000000,,,,,,
+1073741824,303.667026,0.028000000,,,,,,
+1073741824,303.667061,0.032000000,,,,,,
+1073741824,303.691039,0.036000000,,,,,,
+1073741824,303.748416,0.040000000,,,,,,
+1073741824,303.791737,0.044000000,,,,,,
+1073741824,303.804097,0.048000000,,,,,,
+1073741824,303.818866,0.052000000,,,,,,
+1073741824,303.822131,0.056000000,,,,,,
+1073741824,303.845298,0.060000000,,,,,,
+1073741824,303.878260,0.064000000,,,,,,
+1073741824,303.881210,0.068000000,,,,,,
+1073741824,303.892315,0.072000000,,,,,,
+1073741824,303.892456,0.076000000,,,,,,
+1073741824,303.897844,0.080000000,,,,,,
+1073741824,303.910950,0.084000000,,,,,,
+1073741824,303.913502,0.088000000,,,,,,
+1073741824,303.920357,0.092000000,,,,,,
+1073741824,303.949881,0.096000000,,,,,,
+1073741824,303.965909,0.100000000,,,,,,
+1073741824,303.967665,0.104000000,,,,,,
+1073741824,303.970933,0.108000000,,,,,,
+1073741824,303.971712,0.112000000,,,,,,
+1073741824,303.971904,0.116000000,,,,,,
+1073741824,303.991757,0.120000000,,,,,,
+1073741824,303.998665,0.124000000,,,,,,
+1073741824,304.009636,0.128000000,,,,,,
+1073741824,304.013091,0.132000000,,,,,,
+1073741824,304.020842,0.136000000,,,,,,
+1073741824,304.026469,0.140000000,,,,,,
+1073741824,304.040947,0.144000000,,,,,,
+1073741824,304.049238,0.148000000,,,,,,
+1073741824,304.051388,0.152000000,,,,,,
+1073741824,304.060010,0.156000000,,,,,,
+1073741824,304.068011,0.160000000,,,,,,
+1073741824,304.075094,0.164000000,,,,,,
+1073741824,304.077773,0.168000000,,,,,,
+1073741824,304.079644,0.172000000,,,,,,
+1073741824,304.080550,0.176000000,,,,,,
+1073741824,304.081016,0.180000000,,,,,,
+1073741824,304.089104,0.184000000,,,,,,
+1073741824,304.104426,0.188000000,,,,,,
+1073741824,304.106350,0.192000000,,,,,,
+1073741824,304.107245,0.196000000,,,,,,
+1073741824,304.108343,0.200000000,,,,,,
+1073741824,304.112682,0.204000000,,,,,,
+1073741824,304.116462,0.208000000,,,,,,
+1073741824,304.126230,0.212000000,,,,,,
+1073741824,304.126416,0.216000000,,,,,,
+1073741824,304.127426,0.220000000,,,,,,
+1073741824,304.127512,0.224000000,,,,,,
+1073741824,304.136731,0.228000000,,,,,,
+1073741824,304.140806,0.232000000,,,,,,
+1073741824,304.141209,0.236000000,,,,,,
+1073741824,304.148301,0.240000000,,,,,,
+1073741824,304.149479,0.244000000,,,,,,
+1073741824,304.150057,0.248000000,,,,,,
+1073741824,304.157334,0.252000000,,,,,,
+1073741824,304.158985,0.256000000,,,,,,
+1073741824,304.160478,0.260000000,,,,,,
+1073741824,304.165681,0.264000000,,,,,,
+1073741824,304.166145,0.268000000,,,,,,
+1073741824,304.167507,0.272000000,,,,,,
+1073741824,304.168338,0.276000000,,,,,,
+1073741824,304.177352,0.280000000,,,,,,
+1073741824,304.180764,0.284000000,,,,,,
+1073741824,304.186071,0.288000000,,,,,,
+1073741824,304.186805,0.292000000,,,,,,
+1073741824,304.193402,0.296000000,,,,,,
+1073741824,304.195355,0.300000000,,,,,,
+1073741824,304.197283,0.304000000,,,,,,
+1073741824,304.198997,0.308000000,,,,,,
+1073741824,304.200595,0.312000000,,,,,,
+1073741824,304.201725,0.316000000,,,,,,
+1073741824,304.204159,0.320000000,,,,,,
+1073741824,304.205835,0.324000000,,,,,,
+1073741824,304.207424,0.328000000,,,,,,
+1073741824,304.208825,0.332000000,,,,,,
+1073741824,304.209069,0.336000000,,,,,,
+1073741824,304.210390,0.340000000,,,,,,
+1073741824,304.211598,0.344000000,,,,,,
+1073741824,304.212335,0.348000000,,,,,,
+1073741824,304.213074,0.352000000,,,,,,
+1073741824,304.214669,0.356000000,,,,,,
+1073741824,304.214965,0.360000000,,,,,,
+1073741824,304.221758,0.364000000,,,,,,
+1073741824,304.224169,0.368000000,,,,,,
+1073741824,304.226232,0.372000000,,,,,,
+1073741824,304.231022,0.376000000,,,,,,
+1073741824,304.231453,0.380000000,,,,,,
+1073741824,304.235616,0.384000000,,,,,,
+1073741824,304.238681,0.388000000,,,,,,
+1073741824,304.240816,0.392000000,,,,,,
+1073741824,304.241275,0.396000000,,,,,,
+1073741824,304.242881,0.400000000,,,,,,
+1073741824,304.243311,0.404000000,,,,,,
+1073741824,304.244543,0.408000000,,,,,,
+1073741824,304.250061,0.412000000,,,,,,
+1073741824,304.252160,0.416000000,,,,,,
+1073741824,304.254084,0.420000000,,,,,,
+1073741824,304.259633,0.424000000,,,,,,
+1073741824,304.260647,0.428000000,,,,,,
+1073741824,304.261167,0.432000000,,,,,,
+1073741824,304.264022,0.436000000,,,,,,
+1073741824,304.269327,0.440000000,,,,,,
+1073741824,304.274106,0.444000000,,,,,,
+1073741824,304.275377,0.448000000,,,,,,
+1073741824,304.276786,0.452000000,,,,,,
+1073741824,304.280059,0.456000000,,,,,,
+1073741824,304.281947,0.460000000,,,,,,
+1073741824,304.285651,0.464000000,,,,,,
+1073741824,304.287552,0.468000000,,,,,,
+1073741824,304.288334,0.472000000,,,,,,
+1073741824,304.292706,0.476000000,,,,,,
+1073741824,304.297726,0.480000000,,,,,,
+1073741824,304.299223,0.484000000,,,,,,
+1073741824,304.300637,0.488000000,,,,,,
+1073741824,304.301684,0.492000000,,,,,,
+1073741824,304.302638,0.496000000,,,,,,
+1073741824,304.310215,0.500000000,,,,,,
+1073741824,304.310980,0.504000000,,,,,,
+1073741824,304.311110,0.508000000,,,,,,
+1073741824,304.311802,0.512000000,,,,,,
+1073741824,304.315259,0.516000000,,,,,,
+1073741824,304.316574,0.520000000,,,,,,
+1073741824,304.317226,0.524000000,,,,,,
+1073741824,304.323866,0.528000000,,,,,,
+1073741824,304.325136,0.532000000,,,,,,
+1073741824,304.326965,0.536000000,,,,,,
+1073741824,304.327976,0.540000000,,,,,,
+1073741824,304.331279,0.544000000,,,,,,
+1073741824,304.332812,0.548000000,,,,,,
+1073741824,304.334088,0.552000000,,,,,,
+1073741824,304.337081,0.556000000,,,,,,
+1073741824,304.337858,0.560000000,,,,,,
+1073741824,304.338052,0.564000000,,,,,,
+1073741824,304.342942,0.568000000,,,,,,
+1073741824,304.348650,0.572000000,,,,,,
+1073741824,304.351642,0.576000000,,,,,,
+1073741824,304.358405,0.580000000,,,,,,
+1073741824,304.364420,0.584000000,,,,,,
+1073741824,304.366573,0.588000000,,,,,,
+1073741824,304.368843,0.592000000,,,,,,
+1073741824,304.371161,0.596000000,,,,,,
+1073741824,304.371543,0.600000000,,,,,,
+1073741824,304.371789,0.604000000,,,,,,
+1073741824,304.371991,0.608000000,,,,,,
+1073741824,304.372266,0.612000000,,,,,,
+1073741824,304.372855,0.616000000,,,,,,
+1073741824,304.374567,0.620000000,,,,,,
+1073741824,304.375171,0.624000000,,,,,,
+1073741824,304.377245,0.628000000,,,,,,
+1073741824,304.379358,0.632000000,,,,,,
+1073741824,304.381313,0.636000000,,,,,,
+1073741824,304.382950,0.640000000,,,,,,
+1073741824,304.383123,0.644000000,,,,,,
+1073741824,304.385431,0.648000000,,,,,,
+1073741824,304.394299,0.652000000,,,,,,
+1073741824,304.394578,0.656000000,,,,,,
+1073741824,304.395387,0.660000000,,,,,,
+1073741824,304.397552,0.664000000,,,,,,
+1073741824,304.400076,0.668000000,,,,,,
+1073741824,304.402517,0.672000000,,,,,,
+1073741824,304.406085,0.676000000,,,,,,
+1073741824,304.407502,0.680000000,,,,,,
+1073741824,304.408292,0.684000000,,,,,,
+1073741824,304.410107,0.688000000,,,,,,
+1073741824,304.411479,0.692000000,,,,,,
+1073741824,304.411683,0.696000000,,,,,,
+1073741824,304.413966,0.700000000,,,,,,
+1073741824,304.414116,0.704000000,,,,,,
+1073741824,304.415230,0.708000000,,,,,,
+1073741824,304.416386,0.712000000,,,,,,
+1073741824,304.422818,0.716000000,,,,,,
+1073741824,304.423955,0.720000000,,,,,,
+1073741824,304.429213,0.724000000,,,,,,
+1073741824,304.429378,0.728000000,,,,,,
+1073741824,304.429960,0.732000000,,,,,,
+1073741824,304.430056,0.736000000,,,,,,
+1073741824,304.434992,0.740000000,,,,,,
+1073741824,304.435541,0.744000000,,,,,,
+1073741824,304.441907,0.748000000,,,,,,
+1073741824,304.443787,0.752000000,,,,,,
+1073741824,304.448468,0.756000000,,,,,,
+1073741824,304.449877,0.760000000,,,,,,
+1073741824,304.450509,0.764000000,,,,,,
+1073741824,304.453208,0.768000000,,,,,,
+1073741824,304.454732,0.772000000,,,,,,
+1073741824,304.456816,0.776000000,,,,,,
+1073741824,304.458799,0.780000000,,,,,,
+1073741824,304.459350,0.784000000,,,,,,
+1073741824,304.460232,0.788000000,,,,,,
+1073741824,304.462360,0.792000000,,,,,,
+1073741824,304.462642,0.796000000,,,,,,
+1073741824,304.463275,0.800000000,,,,,,
+1073741824,304.467706,0.804000000,,,,,,
+1073741824,304.468931,0.808000000,,,,,,
+1073741824,304.470620,0.812000000,,,,,,
+1073741824,304.470683,0.816000000,,,,,,
+1073741824,304.470856,0.820000000,,,,,,
+1073741824,304.478559,0.824000000,,,,,,
+1073741824,304.484177,0.828000000,,,,,,
+1073741824,304.487554,0.832000000,,,,,,
+1073741824,304.487556,0.836000000,,,,,,
+1073741824,304.489179,0.840000000,,,,,,
+1073741824,304.493128,0.844000000,,,,,,
+1073741824,304.493209,0.848000000,,,,,,
+1073741824,304.495556,0.852000000,,,,,,
+1073741824,304.505412,0.856000000,,,,,,
+1073741824,304.510132,0.860000000,,,,,,
+1073741824,304.519814,0.864000000,,,,,,
+1073741824,304.525813,0.868000000,,,,,,
+1073741824,304.529635,0.872000000,,,,,,
+1073741824,304.539442,0.876000000,,,,,,
+1073741824,304.542426,0.880000000,,,,,,
+1073741824,304.545700,0.884000000,,,,,,
+1073741824,304.545976,0.888000000,,,,,,
+1073741824,304.546400,0.892000000,,,,,,
+1073741824,304.568427,0.896000000,,,,,,
+1073741824,304.570129,0.900000000,,,,,,
+1073741824,304.575372,0.904000000,,,,,,
+1073741824,304.577465,0.908000000,,,,,,
+1073741824,304.577650,0.912000000,,,,,,
+1073741824,304.587135,0.916000000,,,,,,
+1073741824,304.599477,0.920000000,,,,,,
+1073741824,304.603672,0.924000000,,,,,,
+1073741824,304.611290,0.928000000,,,,,,
+1073741824,304.620853,0.932000000,,,,,,
+1073741824,304.631014,0.936000000,,,,,,
+1073741824,304.631545,0.940000000,,,,,,
+1073741824,304.634746,0.944000000,,,,,,
+1073741824,304.653813,0.948000000,,,,,,
+1073741824,304.654159,0.952000000,,,,,,
+1073741824,304.654532,0.956000000,,,,,,
+1073741824,304.662704,0.960000000,,,,,,
+1073741824,304.670180,0.964000000,,,,,,
+1073741824,304.674118,0.968000000,,,,,,
+1073741824,304.678993,0.972000000,,,,,,
+1073741824,304.679231,0.976000000,,,,,,
+1073741824,304.685333,0.980000000,,,,,,
+1073741824,304.716076,0.984000000,,,,,,
+1073741824,304.743945,0.988000000,,,,,,
+1073741824,304.776277,0.992000000,,,,,,
+1073741824,305.132888,0.996000000,,,,,,
+1073741824,305.173668,1.000000000,,,,,,
|
