diff options
| author | Siho Shin <victory8500@naver.com> | 2026-06-27 08:59:14 +0900 |
|---|---|---|
| committer | Siho Shin <victory8500@naver.com> | 2026-06-27 08:59:14 +0900 |
| commit | 5d2722de9290472bb8fbd120d1ec506f7765e209 (patch) | |
| tree | 1254b5f3542f528871bcfdd0356f81095e66d480 | |
28 files changed, 8728 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,,,,,,
diff --git a/dma/.gitignore b/dma/.gitignore new file mode 100644 index 0000000..5d94054 --- /dev/null +++ b/dma/.gitignore @@ -0,0 +1,4 @@ +bins/ +logs/ +summary/ +*.png diff --git a/dma/Makefile b/dma/Makefile new file mode 100644 index 0000000..7400791 --- /dev/null +++ b/dma/Makefile @@ -0,0 +1,38 @@ +CC ?= gcc + +TARGET := doca_dma_host_recv +SRCS := host_recv.c + +CFLAGS += -O2 -g -Wall -Wextra -std=gnu11 +CFLAGS += -Wno-deprecated-declarations +CFLAGS += -DALLOW_EXPERIMENTAL_API + +# Prefer pkg-config from the upgraded DOCA installation. +PKGCONFIG_PKGS := doca-common doca-dma + +PKG_CFLAGS := $(shell pkg-config --cflags $(PKGCONFIG_PKGS) 2>/dev/null) +PKG_LIBS := $(shell pkg-config --libs $(PKGCONFIG_PKGS) 2>/dev/null) + +# Fallback for common DOCA 2.9 host install paths. +ifeq ($(strip $(PKG_CFLAGS)),) +CFLAGS += -I/opt/mellanox/doca/include +else +CFLAGS += $(PKG_CFLAGS) +endif + +ifeq ($(strip $(PKG_LIBS)),) +LDFLAGS += -L/opt/mellanox/doca/lib/x86_64-linux-gnu +LDLIBS += -ldoca_dma -ldoca_common +else +LDLIBS += $(PKG_LIBS) +endif + +LDLIBS += -lpthread -lrt + +all: $(TARGET) + +$(TARGET): $(SRCS) + $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS) + +clean: + rm -f $(TARGET) descriptor.bin buffer.json diff --git a/dma/analyze_bw.py b/dma/analyze_bw.py new file mode 100755 index 0000000..e4fab84 --- /dev/null +++ b/dma/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/dma/analyze_time.py b/dma/analyze_time.py new file mode 100755 index 0000000..8f467e4 --- /dev/null +++ b/dma/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/dma/bw_VANILLA.csv b/dma/bw_VANILLA.csv new file mode 100644 index 0000000..f22505c --- /dev/null +++ b/dma/bw_VANILLA.csv @@ -0,0 +1,1348 @@ +bytes,bw_KiBps +536870912,8257831.042 +536870912,8324090.175 +536870912,8360060.467 +536870912,8314351.529 +536870912,8326655.816 +536870912,8341155.367 +536870912,8368521.941 +536870912,8312152.950 +536870912,8377241.223 +536870912,8304275.491 +536870912,8318322.698 +536870912,8364311.615 +536870912,8356575.042 +536870912,8347991.216 +536870912,8355967.319 +536870912,8255221.063 +536870912,8362123.349 +536870912,8379997.653 +536870912,8390937.190 +536870912,8370275.089 +536870912,8362438.651 +536870912,8418439.177 +536870912,8351669.834 +536870912,8348329.381 +536870912,8336122.704 +536870912,8376701.290 +536870912,8382815.273 +536870912,8400686.709 +536870912,8364877.312 +536870912,8394622.445 +536870912,8319344.862 +536870912,8346046.501 +536870912,8340120.541 +536870912,8376577.492 +536870912,8383012.038 +536870912,8354220.558 +536870912,8384682.359 +536870912,8428112.925 +536870912,8370655.288 +536870912,8352115.669 +536870912,8404573.462 +536870912,8355693.120 +536870912,8362073.202 +536870912,8314402.820 +536870912,8330648.016 +536870912,8369029.559 +536870912,8318552.082 +536870912,8364983.146 +536870912,8338038.530 +536870912,8324324.239 +536870912,8298267.352 +536870912,8355023.612 +536870912,8315627.789 +536870912,8352084.136 +536870912,8357312.339 +536870912,8378850.058 +536870912,8242566.989 +536870912,8379995.376 +536870912,8341113.433 +536870912,8327395.779 +536870912,8400024.238 +536870912,8414188.344 +536870912,8350410.284 +536870912,8363149.502 +536870912,8399987.362 +536870912,8396447.595 +536870912,8357981.947 +536870912,8391470.901 +536870912,8380716.851 +536870912,8364449.729 +536870912,8371968.545 +536870912,8379919.967 +536870912,8358402.605 +536870912,8412983.712 +536870912,8329295.288 +536870912,8350437.416 +536870912,8319960.340 +536870912,8358098.133 +536870912,8422333.043 +536870912,8422126.987 +536870912,8412045.844 +536870912,8397655.163 +536870912,8263298.841 +536870912,8374916.151 +536870912,8414252.217 +536870912,8310675.801 +536870912,8377365.174 +536870912,8350365.198 +536870912,8373457.267 +536870912,8382275.560 +536870912,8366550.159 +536870912,8347588.352 +536870912,8375883.090 +536870912,8374086.530 +536870912,8382372.856 +536870912,8361793.668 +536870912,8299831.935 +536870912,8348445.831 +536870912,8344539.618 +536870912,8354680.778 +536870912,8380529.840 +536870912,8404366.254 +536870912,8411030.596 +536870912,8367598.900 +536870912,8392297.523 +536870912,8378429.883 +536870912,8334894.208 +536870912,8396829.638 +536870912,8337279.837 +536870912,8360287.359 +536870912,8329722.327 +536870912,8418495.950 +536870912,8348249.756 +536870912,8369935.544 +536870912,8385466.201 +536870912,8391547.727 +536870912,8340218.055 +536870912,8373278.470 +536870912,8432395.473 +536870912,8379994.037 +536870912,8420860.164 +536870912,8319162.295 +536870912,8408295.115 +536870912,8323622.747 +536870912,8359972.619 +536870912,8338512.883 +536870912,8374087.065 +536870912,8382192.605 +536870912,8345185.928 +536870912,8317876.637 +536870912,8375973.146 +536870912,8397669.018 +536870912,8378831.178 +536870912,8334130.390 +536870912,8378805.870 +536870912,8374248.776 +536870912,8249858.189 +536870912,8354606.356 +536870912,8352538.797 +536870912,8394292.615 +536870912,8311283.541 +536870912,8378482.905 +536870912,8356724.888 +536870912,8386034.494 +536870912,8297776.555 +536870912,8386735.007 +536870912,8370139.455 +536870912,8369730.040 +536870912,8388756.984 +536870912,8344130.049 +536870912,8351192.254 +536870912,8388136.922 +536870912,8347594.199 +536870912,8356126.866 +536870912,8401569.538 +536870912,8362957.538 +536870912,8300171.860 +536870912,8411138.007 +536870912,8304405.185 +536870912,8381946.565 +536870912,8317394.073 +536870912,8384244.437 +536870912,8376253.763 +536870912,8349032.118 +536870912,8354956.241 +536870912,8380743.510 +536870912,8331140.062 +536870912,8350979.555 +536870912,8418193.438 +536870912,8382958.557 +536870912,8386416.931 +536870912,8395410.432 +536870912,8378136.134 +536870912,8318918.886 +536870912,8410978.376 +536870912,8333427.112 +536870912,8221319.409 +536870912,8364432.915 +536870912,8345958.417 +536870912,8363286.911 +536870912,8332156.506 +536870912,8382230.531 +536870912,8346052.613 +536870912,8410250.468 +536870912,8353757.727 +536870912,8404916.766 +536870912,8416947.661 +536870912,8376978.208 +536870912,8371691.424 +536870912,8396704.976 +536870912,8414777.959 +536870912,8353244.373 +536870912,8318754.025 +536870912,8331911.277 +536870912,8382953.195 +536870912,8338860.360 +536870912,8319379.185 +536870912,8398750.062 +536870912,8330268.928 +536870912,8370850.680 +536870912,8361069.313 +536870912,8365935.779 +536870912,8364960.057 +536870912,8377522.059 +536870912,8353447.870 +536870912,8375182.649 +536870912,8321782.093 +536870912,8350677.486 +536870912,8263340.387 +536870912,8332756.665 +536870912,8417697.272 +536870912,8393538.297 +536870912,8347900.432 +536870912,8363735.188 +536870912,8324503.463 +536870912,8304934.391 +536870912,8299269.616 +536870912,8402484.468 +536870912,8347844.208 +536870912,8296357.548 +536870912,8396377.672 +536870912,8377041.517 +536870912,8313785.527 +536870912,8371716.956 +536870912,8378795.157 +536870912,8340748.783 +536870912,8360697.317 +536870912,8364660.846 +536870912,8391967.338 +536870912,8350317.851 +536870912,8350243.774 +536870912,8439313.420 +536870912,8377839.059 +536870912,8399200.938 +536870912,8379663.882 +536870912,8379824.067 +536870912,8367443.188 +536870912,8392166.950 +536870912,8357897.607 +536870912,8324951.161 +536870912,8365745.555 +536870912,8357349.640 +536870912,8364057.284 +536870912,8398727.593 +536870912,8425546.675 +536870912,8382572.414 +536870912,8374361.937 +536870912,8348691.105 +536870912,8373834.011 +536870912,8391275.889 +536870912,8391399.718 +536870912,8392276.969 +536870912,8417686.190 +536870912,8352077.882 +1073741824,8138089.354 +1073741824,8177392.302 +1073741824,8169099.589 +1073741824,8105907.473 +1073741824,8194548.953 +1073741824,8139123.611 +1073741824,8126474.963 +1073741824,8162121.788 +1073741824,8163171.251 +1073741824,8171121.062 +1073741824,8186016.661 +1073741824,8165725.057 +1073741824,8063273.306 +1073741824,8178658.117 +1073741824,8202737.897 +1073741824,8148178.333 +1073741824,8162500.532 +1073741824,8193645.835 +1073741824,8167616.538 +1073741824,8186603.110 +1073741824,8169359.004 +1073741824,8186279.965 +1073741824,8155635.043 +1073741824,8140700.738 +1073741824,8165438.021 +1073741824,8176268.030 +1073741824,8181085.154 +1073741824,8180478.244 +1073741824,8165952.907 +1073741824,8168923.620 +1073741824,8192217.414 +1073741824,8132915.134 +1073741824,8173146.021 +1073741824,8164068.362 +1073741824,8134432.873 +1073741824,8171028.226 +1073741824,8152795.182 +1073741824,8193753.719 +1073741824,8163280.686 +1073741824,8194031.608 +1073741824,8144737.425 +1073741824,8145727.179 +1073741824,8144849.909 +1073741824,8165100.459 +1073741824,8094435.680 +1073741824,8089804.034 +1073741824,8168444.440 +1073741824,8192444.184 +1073741824,8130694.059 +1073741824,8160305.628 +1073741824,8136433.941 +1073741824,8186404.081 +1073741824,8184251.560 +1073741824,8130386.723 +1073741824,8210161.262 +1073741824,8185030.255 +1073741824,8141485.327 +1073741824,8178298.028 +1073741824,8174079.416 +1073741824,8167512.076 +1073741824,8074632.442 +1073741824,8148020.993 +1073741824,8163035.827 +1073741824,8169272.764 +1073741824,8171761.611 +1073741824,8159402.359 +1073741824,8173463.224 +1073741824,8169373.580 +1073741824,8140830.176 +1073741824,8183192.583 +1073741824,8170229.721 +1073741824,8154262.899 +1073741824,8170541.350 +1073741824,8168825.107 +1073741824,8173503.362 +1073741824,8157012.915 +1073741824,8172080.426 +1073741824,8153071.758 +1073741824,8223132.523 +1073741824,8136738.703 +1073741824,8162757.495 +1073741824,8163236.009 +1073741824,8184380.917 +1073741824,8142153.798 +1073741824,8166037.805 +1073741824,8160535.906 +1073741824,8079963.292 +1073741824,8143988.642 +1073741824,8166006.262 +1073741824,8164743.980 +1073741824,8192553.573 +1073741824,8156989.056 +1073741824,8179597.940 +1073741824,8163754.811 +1073741824,8146153.195 +1073741824,8146235.531 +1073741824,8186722.954 +1073741824,8197497.639 +1073741824,8160476.081 +1073741824,8176191.780 +1073741824,8144256.017 +1073741824,8138055.879 +1073741824,8146826.167 +1073741824,8165232.264 +1073741824,8162361.318 +1073741824,8186293.833 +1073741824,8173794.278 +1073741824,8194762.275 +1073741824,8152014.750 +1073741824,8166369.339 +1073741824,8176738.373 +1073741824,8160695.381 +1073741824,8152224.089 +1073741824,8196125.020 +1073741824,8180352.201 +1073741824,8194009.837 +1073741824,8170316.554 +1073741824,8139935.699 +1073741824,8112386.622 +1073741824,8185530.361 +1073741824,8159146.115 +1073741824,8155273.744 +1073741824,8188250.357 +1073741824,8210284.560 +1073741824,8134979.577 +1073741824,8157042.294 +1073741824,8184451.698 +1073741824,8154047.052 +1073741824,8167067.538 +1073741824,8149645.211 +1073741824,8150179.582 +1073741824,8190519.052 +1073741824,8168482.810 +1073741824,8147487.095 +1073741824,8184329.237 +1073741824,8172219.526 +1073741824,8156156.877 +1073741824,8154281.479 +1073741824,8180832.780 +1073741824,8175322.597 +1073741824,8193515.288 +1073741824,8177347.216 +1073741824,8151470.000 +1073741824,8090985.750 +1073741824,8170389.766 +1073741824,8192601.516 +1073741824,8159940.550 +1073741824,8171842.682 +1073741824,8150169.763 +1073741824,8195149.691 +1073741824,8187631.771 +1073741824,8165567.484 +1073741824,8068700.672 +1073741824,8162788.123 +1073741824,8172207.870 +1073741824,8153421.386 +1073741824,8175524.466 +1073741824,8119439.739 +1073741824,8186656.288 +1073741824,8188370.888 +1073741824,8161583.500 +1073741824,8203275.659 +1073741824,8173708.517 +1073741824,8164901.712 +1073741824,8167985.230 +1073741824,8172547.294 +1073741824,8158827.673 +1073741824,8171398.309 +1073741824,8161545.258 +1073741824,8164635.141 +1073741824,8161946.819 +1073741824,8121607.804 +1073741824,8186283.799 +1073741824,8199395.342 +1073741824,8191861.890 +1073741824,8150369.948 +1073741824,8160413.462 +1073741824,8155358.484 +1073741824,8189579.084 +1073741824,8205448.923 +1073741824,8169094.434 +1073741824,8082447.476 +1073741824,8170517.794 +1073741824,8161082.504 +1073741824,8159377.407 +1073741824,8156415.915 +1073741824,8181151.282 +1073741824,8136103.696 +1073741824,8170048.802 +1073741824,8184267.082 +1073741824,8061340.037 +1073741824,8146205.849 +1073741824,8151415.123 +1073741824,8175034.759 +1073741824,8196191.776 +1073741824,8174195.134 +1073741824,8178864.424 +1073741824,8159067.010 +1073741824,8146504.762 +1073741824,8187553.199 +1073741824,8162514.066 +2147479552,7947126.214 +2147479552,7830991.249 +2147479552,8008948.981 +2147479552,8000980.652 +2147479552,7896117.441 +2147479552,8009715.263 +2147479552,7992830.209 +2147479552,7946225.319 +2147479552,7865214.278 +2147479552,8007017.638 +2147479552,8016693.209 +2147479552,7938012.172 +2147479552,7980189.400 +2147479552,7974511.109 +2147479552,8012179.242 +2147479552,7868989.823 +2147479552,8000277.903 +2147479552,7989977.945 +2147479552,8007474.704 +2147479552,8027702.523 +2147479552,7973356.133 +2147479552,7934579.157 +2147479552,7991086.129 +2147479552,8018982.870 +2147479552,7974215.830 +2147479552,8018838.973 +2147479552,7926990.292 +2147479552,7987530.155 +2147479552,7884838.470 +2147479552,7979759.401 +2147479552,8003693.270 +2147479552,7977333.738 +2147479552,7927892.195 +2147479552,7998116.468 +2147479552,7993422.788 +2147479552,8008514.837 +2147479552,8006450.461 +2147479552,7945386.006 +2147479552,7995881.874 +2147479552,7996968.246 +2147479552,8016157.016 +2147479552,8020270.325 +2147479552,7932353.038 +2147479552,8026109.338 +2147479552,7974138.451 +2147479552,8011087.418 +2147479552,8018429.172 +2147479552,7980079.080 +2147479552,7975050.448 +2147479552,8020054.366 +2147479552,7988862.582 +2147479552,8010601.575 +2147479552,7984622.573 +2147479552,7937457.852 +2147479552,8013796.881 +2147479552,7872770.945 +2147479552,8006195.847 +2147479552,8008850.863 +2147479552,7998459.766 +2147479552,7936888.470 +2147479552,8005590.218 +2147479552,7996606.780 +2147479552,8018439.595 +2147479552,7892034.858 +2147479552,7999417.125 +2147479552,7979929.197 +2147479552,7999268.346 +2147479552,8015869.828 +2147479552,8007620.334 +2147479552,8005805.185 +2147479552,7920126.228 +2147479552,7995110.891 +2147479552,7981652.097 +2147479552,7998705.438 +2147479552,7970318.000 +2147479552,7882859.428 +2147479552,8014648.689 +2147479552,8003171.979 +2147479552,7988015.334 +2147479552,7833679.173 +2147479552,8008951.734 +2147479552,8006672.199 +2147479552,7991080.465 +2147479552,7970719.112 +2147479552,7924635.887 +2147479552,7994571.699 +2147479552,8006554.389 +2147479552,7985302.202 +2147479552,7971576.967 +2147479552,7923306.476 +2147479552,8003718.593 +2147479552,7905757.297 +2147479552,8013574.350 +2147479552,7939932.009 +2147479552,8000819.788 +2147479552,7974226.018 +2147479552,7967589.450 +2147479552,7970503.541 +2147479552,7975902.835 +2147479552,8012434.115 +2147479552,7984418.834 +2147479552,7976403.136 +2147479552,8007045.520 +2147479552,7935571.131 +2147479552,7975156.293 +2147479552,8000446.559 +2147479552,8003289.383 +2147479552,7959525.168 +2147479552,7967631.890 +2147479552,7986418.000 +2147479552,7983242.875 +2147479552,7996949.766 +2147479552,7945887.814 +2147479552,7996839.164 +2147479552,7883464.232 +2147479552,7917027.853 +2147479552,7942927.071 +2147479552,7897486.903 +2147479552,7995260.125 +2147479552,7990338.477 +2147479552,8004819.195 +2147479552,7880098.747 +2147479552,7990653.645 +2147479552,7982676.538 +2147479552,7984842.678 +2147479552,7902720.450 +2147479552,7937538.186 +2147479552,8018753.489 +2147479552,7900726.589 +2147479552,8011971.371 +2147479552,7980681.583 +2147479552,8001119.116 +2147479552,7942218.541 +2147479552,7978663.645 +2147479552,7899568.903 +2147479552,7861320.676 +2147479552,7996047.570 +2147479552,7947567.070 +2147479552,8000349.564 +2147479552,8001487.767 +2147479552,7995970.803 +2147479552,7827102.177 +2147479552,7896470.741 +2147479552,7984024.520 +2147479552,8006597.245 +2147479552,8009409.724 +2147479552,7933554.178 +2147479552,7950081.138 +2147479552,7986958.252 +2147479552,7984203.190 +2147479552,8002735.834 +2147479552,8006604.582 +2147479552,7997890.719 +2147479552,8000348.343 +2147479552,7946083.629 +2147479552,8000179.936 +2147479552,7988375.262 +2147479552,7980154.296 +2147479552,7908920.854 +2147479552,8001382.535 +2147479552,7991281.468 +2147479552,8003794.164 +2147479552,7861265.127 +2147479552,7990350.137 +2147479552,7973930.123 +2147479552,8014293.709 +2147479552,7991292.522 +2147479552,7994522.176 +2147479552,7933174.864 +2147479552,8013732.819 +2147479552,7994925.452 +2147479552,8031332.963 +2147479552,7910863.557 +2147479552,8002279.310 +2147479552,7972722.728 +2147479552,7965069.199 +2147479552,7967829.505 +2147479552,7966056.707 +2147479552,8019600.524 +2147479552,7982388.614 +2147479552,7908450.992 +2147479552,8018495.149 +2147479552,7982369.200 +2147479552,7976839.965 +2147479552,7933725.795 +2147479552,8010886.733 +2147479552,7912879.556 +2147479552,8000956.751 +2147479552,8013436.465 +2147479552,8009547.777 +2147479552,7931425.041 +2147479552,8000160.495 +2147479552,8011892.462 +2147479552,8007611.987 +2147479552,8002130.424 +2147479552,7915497.321 +2147479552,8008949.807 +2147479552,7995144.907 +536870912,8297726.257 +536870912,8329119.827 +536870912,8358219.253 +536870912,8414840.896 +536870912,8357399.731 +536870912,8336335.972 +536870912,8321540.247 +536870912,8286800.873 +536870912,8362168.162 +536870912,8376162.631 +536870912,8357669.112 +536870912,8369541.248 +536870912,8395280.569 +536870912,8360743.848 +536870912,8403614.705 +536870912,8414502.723 +536870912,8405916.252 +536870912,8355010.697 +536870912,8372292.612 +536870912,8379949.032 +536870912,8372315.340 +536870912,8364418.103 +536870912,8381942.545 +536870912,8389321.965 +536870912,8407988.750 +536870912,8338789.271 +536870912,8406029.867 +536870912,8379301.345 +536870912,8347195.360 +536870912,8398977.176 +536870912,8420189.909 +536870912,8353653.108 +536870912,8360287.759 +536870912,8356341.691 +536870912,8419746.378 +536870912,8368900.645 +536870912,8361595.631 +536870912,8345109.019 +536870912,8371805.986 +536870912,8386092.575 +536870912,8348197.515 +536870912,8336405.694 +536870912,8425796.364 +536870912,8389089.601 +536870912,8417867.565 +536870912,8349642.290 +536870912,8397103.719 +536870912,8395858.126 +536870912,8357745.720 +536870912,8378779.089 +536870912,8371087.916 +536870912,8337224.153 +536870912,8434736.833 +536870912,8400962.927 +536870912,8364051.546 +536870912,8359437.575 +536870912,8383428.651 +536870912,8433608.521 +536870912,8399843.227 +536870912,8358140.372 +536870912,8398175.605 +536870912,8368244.246 +536870912,8361196.786 +536870912,8380838.091 +536870912,8362211.242 +536870912,8364237.689 +536870912,8387494.812 +536870912,8335830.456 +536870912,8354360.203 +536870912,8363657.937 +536870912,8385410.006 +536870912,8374072.753 +536870912,8346840.411 +536870912,8312084.029 +536870912,8371472.065 +536870912,8363742.660 +536870912,8406858.955 +536870912,8408712.626 +536870912,8333298.365 +536870912,8435537.663 +536870912,8364845.281 +536870912,8376712.532 +536870912,8406175.697 +536870912,8364534.201 +536870912,8385997.070 +536870912,8400531.647 +536870912,8379733.125 +536870912,8431229.416 +536870912,8204954.212 +536870912,8370098.431 +536870912,8378620.684 +536870912,8387569.418 +536870912,8346932.899 +536870912,8384022.409 +536870912,8370418.879 +536870912,8368334.137 +536870912,8331419.537 +536870912,8347124.527 +536870912,8396763.609 +536870912,8370911.625 +536870912,8377613.354 +536870912,8378574.489 +536870912,8366011.737 +536870912,8334095.150 +536870912,8348366.602 +536870912,8353517.479 +536870912,8318633.518 +536870912,8357358.966 +536870912,8339111.703 +536870912,8431833.220 +536870912,8316449.692 +536870912,8382440.268 +536870912,8358427.923 +536870912,8370531.937 +536870912,8382461.711 +536870912,8351256.903 +536870912,8376703.967 +536870912,8376585.121 +536870912,8384669.084 +536870912,8387783.447 +536870912,8366347.492 +536870912,8411992.397 +536870912,8349625.934 +536870912,8392767.859 +536870912,8437106.920 +536870912,8391246.342 +536870912,8348152.320 +536870912,8403981.639 +536870912,8357803.010 +536870912,8366263.918 +536870912,8388316.087 +536870912,8374524.462 +536870912,8366404.900 +536870912,8394617.068 +536870912,8397475.465 +536870912,8383837.529 +536870912,8370766.481 +536870912,8352748.914 +536870912,8361183.985 +536870912,8347421.023 +536870912,8349302.556 +536870912,8368650.977 +536870912,8330391.889 +536870912,8382899.983 +536870912,8369513.724 +536870912,8386597.095 +536870912,8438134.585 +536870912,8350253.615 +536870912,8366252.303 +536870912,8380905.077 +536870912,8338769.907 +536870912,8263838.061 +536870912,8374662.111 +536870912,8401913.001 +536870912,8385186.173 +536870912,8377838.122 +536870912,8384051.905 +536870912,8386658.672 +536870912,8362595.511 +536870912,8357858.169 +536870912,8379260.633 +536870912,8389537.024 +536870912,8304545.274 +536870912,8389956.971 +536870912,8385054.883 +536870912,8416118.203 +536870912,8370145.602 +536870912,8334803.443 +536870912,8341427.684 +536870912,8337381.395 +536870912,8336307.209 +536870912,8350480.774 +536870912,8343804.042 +536870912,8377532.768 +536870912,8390205.629 +536870912,8325661.867 +536870912,8382035.947 +536870912,8326395.835 +536870912,8362346.219 +536870912,8286901.597 +536870912,8279314.165 +536870912,8374263.490 +536870912,8414728.529 +536870912,8390042.362 +536870912,8310930.322 +536870912,8390255.175 +536870912,8391144.274 +536870912,8393546.091 +536870912,8411403.577 +536870912,8383280.392 +536870912,8377631.694 +536870912,8395649.599 +536870912,8340726.624 +536870912,8363368.558 +536870912,8369033.968 +536870912,8418998.835 +536870912,8363262.764 +536870912,8358238.441 +536870912,8384050.564 +536870912,8410748.319 +536870912,8342035.550 +536870912,8353805.645 +536870912,8373079.889 +536870912,8341745.542 +536870912,8381808.677 +536870912,8381610.629 +536870912,8380764.543 +536870912,8322230.951 +536870912,8359038.536 +536870912,8400457.753 +536870912,8410784.345 +536870912,8363107.347 +536870912,8339816.471 +536870912,8435068.492 +536870912,8389056.445 +536870912,8383005.738 +536870912,8384873.176 +536870912,8397375.935 +536870912,8344473.612 +536870912,8353101.704 +536870912,8361585.363 +536870912,8323990.262 +536870912,8384113.981 +536870912,8423037.334 +536870912,8391526.237 +536870912,8400320.466 +536870912,8368454.352 +536870912,8395609.266 +536870912,8359098.510 +536870912,8333326.976 +536870912,8412438.352 +536870912,8349328.351 +536870912,8336571.653 +536870912,8367998.356 +536870912,8373028.273 +536870912,8365465.509 +536870912,8338848.556 +536870912,8364488.028 +536870912,8373630.857 +536870912,8375956.955 +536870912,8383128.519 +536870912,8370995.292 +536870912,8368521.941 +536870912,8404117.698 +536870912,8365619.679 +536870912,8396772.619 +1073741824,8106935.885 +1073741824,8163232.196 +1073741824,8186321.890 +1073741824,8140414.069 +1073741824,8133332.430 +1073741824,8146613.688 +1073741824,8166003.146 +1073741824,8171050.321 +1073741824,8174432.187 +1073741824,8174376.746 +1073741824,8187120.796 +1073741824,8179944.615 +1073741824,8198790.648 +1073741824,8088146.431 +1073741824,8212268.713 +1073741824,8146527.231 +1073741824,8140647.839 +1073741824,8165594.763 +1073741824,8163528.165 +1073741824,8150605.431 +1073741824,8192582.121 +1073741824,8103913.875 +1073741824,8181810.769 +1073741824,8133931.293 +1073741824,8141017.324 +1073741824,8151947.824 +1073741824,8178590.370 +1073741824,8163575.133 +1073741824,8187417.860 +1073741824,8165247.714 +1073741824,8192821.970 +1073741824,8177847.915 +1073741824,8200999.957 +1073741824,8113109.894 +1073741824,8134005.683 +1073741824,8157734.710 +1073741824,8094886.469 +1073741824,8172987.970 +1073741824,8152461.644 +1073741824,8099153.894 +1073741824,8199905.285 +1073741824,8162937.201 +1073741824,8188245.114 +1073741824,8168747.087 +1073741824,8134112.824 +1073741824,8156418.960 +1073741824,8174455.957 +1073741824,8200315.953 +1073741824,8168047.074 +1073741824,8161488.340 +1073741824,8182508.673 +1073741824,8164306.545 +1073741824,8172004.255 +1073741824,8189975.093 +1073741824,8173512.600 +1073741824,8179491.513 +1073741824,8178463.557 +1073741824,8151221.603 +1073741824,8163997.171 +1073741824,8176074.412 +1073741824,8181150.005 +1073741824,8166385.239 +1073741824,8179931.789 +1073741824,8217738.793 +1073741824,8175759.492 +1073741824,8161215.640 +1073741824,8169473.443 +1073741824,8157957.925 +1073741824,8195599.341 +1073741824,8200060.531 +1073741824,8113958.426 +1073741824,8169994.121 +1073741824,8076056.598 +1073741824,8176473.388 +1073741824,8079035.891 +1073741824,8181077.941 +1073741824,8077869.548 +1073741824,8148080.256 +1073741824,8175080.649 +1073741824,8185444.802 +1073741824,8164017.765 +1073741824,8163177.796 +1073741824,8188425.241 +1073741824,8227575.845 +1073741824,8198858.986 +1073741824,8146674.006 +1073741824,8217406.745 +1073741824,8174112.360 +1073741824,8157474.953 +1073741824,8189138.280 +1073741824,8191146.393 +1073741824,8073919.309 +1073741824,8170414.149 +1073741824,8155771.299 +1073741824,8149074.052 +1073741824,8127396.972 +1073741824,8168637.123 +1073741824,8172627.298 +1073741824,8180653.625 +1073741824,8164979.150 +1073741824,8151065.857 +1073741824,8159950.710 +1073741824,8183920.488 +1073741824,8183054.323 +1073741824,8179686.122 +1073741824,8157814.360 +1073741824,8156617.739 +1073741824,8118259.188 +1073741824,8145079.569 +1073741824,8140207.106 +1073741824,8165940.443 +1073741824,8188169.472 +1073741824,8175639.970 +1073741824,8180145.435 +1073741824,8147617.382 +1073741824,8176401.406 +1073741824,8183777.350 +1073741824,8148855.693 +1073741824,8144995.296 +1073741824,8129499.960 +1073741824,8164277.748 +1073741824,8187397.787 +1073741824,8187129.809 +1073741824,8171398.309 +1073741824,8159266.235 +1073741824,8164569.025 +1073741824,8195578.394 +1073741824,8147685.756 +1073741824,8082821.541 +1073741824,8168774.451 +1073741824,8189572.240 +1073741824,8164455.742 +1073741824,8138381.545 +1073741824,8184619.392 +1073741824,8157117.362 +1073741824,8157644.209 +1073741824,8206472.306 +1073741824,8151579.692 +1073741824,8164861.277 +1073741824,8176602.308 +1073741824,8150797.844 +1073741824,8160524.983 +1073741824,8156190.945 +1073741824,8075629.485 +1073741824,8119201.464 +1073741824,8162116.070 +1073741824,8169588.394 +1073741824,8154480.217 +1073741824,8156762.721 +1073741824,8174093.690 +1073741824,8165189.218 +1073741824,8184585.341 +1073741824,8194810.052 +1073741824,8168537.917 +1073741824,8130408.093 +1073741824,8157694.727 +1073741824,8123365.872 +1073741824,8185404.994 +1073741824,8174219.986 +1073741824,8132685.529 +1073741824,8173724.446 +1073741824,8167038.531 +1073741824,8172145.071 +1073741824,8169411.577 +1073741824,8171300.755 +1073741824,8181844.733 +1073741824,8161130.968 +1073741824,8143266.811 +1073741824,8163710.129 +1073741824,8187115.938 +1073741824,8131100.787 +1073741824,8142369.017 +1073741824,8171659.399 +1073741824,8178910.548 +1073741824,8168394.680 +1073741824,8183815.417 +1073741824,8187006.502 +1073741824,8095454.870 +1073741824,8188724.894 +1073741824,8091712.953 +1073741824,8194746.264 +1073741824,8104034.692 +1073741824,8168837.135 +1073741824,8156216.004 +1073741824,8172347.229 +1073741824,8182950.999 +1073741824,8163428.638 +1073741824,8182134.838 +1073741824,8193704.290 +1073741824,8158991.969 +1073741824,8152333.674 +1073741824,8164574.556 +1073741824,8163973.525 +1073741824,8153574.053 +1073741824,8178561.665 +1073741824,8150908.025 +1073741824,8184141.178 +1073741824,8183726.317 +1073741824,8163570.048 +1073741824,8136379.330 +1073741824,8182754.446 +1073741824,8173871.948 +1073741824,8118761.792 +1073741824,8164069.824 +1073741824,8166205.127 +1073741824,8182325.551 +1073741824,8087878.797 +1073741824,8152913.785 +1073741824,8168333.594 +1073741824,8172978.414 +1073741824,8183244.504 +1073741824,8182641.104 +1073741824,8214573.648 +1073741824,8170338.900 +1073741824,8143072.160 +1073741824,8171580.943 +1073741824,8163099.249 +1073741824,8160398.855 +1073741824,8161304.886 +1073741824,8145896.453 +1073741824,8182415.706 +1073741824,8131530.950 +1073741824,8178149.346 +1073741824,8136428.322 +1073741824,8193458.820 +1073741824,8156454.046 +1073741824,8178888.220 +1073741824,8143104.411 +1073741824,8135342.866 +1073741824,8169322.535 +1073741824,8181351.715 +1073741824,8166082.131 +1073741824,8177195.571 +1073741824,8181289.222 +1073741824,8195288.295 +1073741824,8199358.604 +1073741824,8186441.342 +1073741824,8142976.356 +1073741824,8174117.840 +1073741824,8156598.514 +1073741824,8136233.367 +1073741824,8168303.687 +1073741824,8144401.193 +1073741824,8110372.899 +1073741824,8152730.590 +1073741824,8154310.585 +2147479552,7950062.182 +2147479552,7990352.998 +2147479552,7855232.727 +2147479552,7993092.504 +2147479552,7997344.657 +2147479552,7953579.526 +2147479552,8007072.820 +2147479552,7934290.130 +2147479552,7980624.305 +2147479552,7845012.438 +2147479552,7993641.642 +2147479552,7964835.662 +2147479552,7967730.363 +2147479552,8031605.788 +2147479552,7985868.607 +2147479552,8006719.917 +2147479552,7882609.977 +2147479552,7930999.171 +2147479552,8017656.103 +2147479552,8013142.246 +2147479552,7995211.294 +2147479552,8029009.256 +2147479552,7938073.257 +2147479552,7881379.457 +2147479552,8017614.967 +2147479552,8001349.687 +2147479552,7930518.195 +2147479552,8007539.156 +2147479552,7984991.621 +2147479552,7993366.119 +2147479552,7994916.522 +2147479552,8005966.586 +2147479552,7869429.021 +2147479552,7973623.791 +2147479552,7990025.099 +2147479552,7988060.912 +2147479552,7913024.125 +2147479552,7921938.519 +2147479552,7997903.347 +2147479552,8019951.068 +2147479552,7987257.092 +2147479552,8005563.019 +2147479552,7939640.668 +2147479552,7986483.817 +2147479552,8028328.406 +2147479552,8007706.375 +2147479552,7955074.126 +2147479552,7998212.768 +2147479552,7992685.939 +2147479552,7991980.901 +2147479552,7998861.305 +2147479552,7981068.582 +2147479552,7988685.528 +2147479552,7991936.983 +2147479552,7941170.057 +2147479552,8005044.662 +2147479552,8008396.882 +2147479552,7945674.848 +2147479552,7962674.618 +2147479552,7842098.344 +2147479552,7997818.492 +2147479552,7960073.359 +2147479552,7998526.605 +2147479552,7991974.535 +2147479552,7971994.751 +2147479552,8000576.428 +2147479552,7977220.553 +2147479552,7953705.314 +2147479552,8003867.416 +2147479552,8019421.584 +2147479552,7988648.402 +2147479552,7986066.520 +2147479552,7915712.855 +2147479552,8006258.750 +2147479552,7988927.617 +2147479552,7988052.302 +2147479552,7989980.989 +2147479552,7935479.126 +2147479552,8001224.952 +2147479552,7978006.481 +2147479552,7986286.096 +2147479552,8009372.558 +2147479552,7935139.621 +2147479552,7975297.201 +2147479552,7996371.208 +2147479552,7998577.917 +2147479552,7890604.404 +2147479552,8002847.301 +2147479552,7893965.500 +2147479552,7986587.167 +2147479552,7928493.139 +2147479552,7968704.027 +2147479552,8000832.638 +2147479552,7933911.647 +2147479552,7970263.385 +2147479552,7994349.838 +2147479552,8016476.217 +2147479552,7939719.543 +2147479552,8011879.943 +2147479552,8001712.681 +2147479552,8005954.697 +2147479552,7995991.443 +2147479552,7944468.260 +2147479552,7986312.434 +2147479552,7984621.722 +2147479552,7995300.422 +2147479552,8002278.607 +2147479552,8000003.448 +2147479552,7939803.049 +2147479552,8003220.327 +2147479552,7997799.521 +2147479552,7986410.092 +2147479552,7944202.466 +2147479552,7985562.938 +2147479552,8005039.070 +2147479552,7997929.030 +2147479552,7917067.574 +2147479552,8003216.753 +2147479552,8002632.615 +2147479552,7978499.063 +2147479552,8002023.831 +2147479552,8010022.172 +2147479552,7918844.916 +2147479552,7998607.875 +2147479552,7997706.860 +2147479552,8010458.805 +2147479552,7996623.368 +2147479552,7922279.977 +2147479552,8004146.382 +2147479552,8002017.633 +2147479552,8003505.051 +2147479552,7939021.233 +2147479552,7877178.535 +2147479552,7978784.672 +2147479552,7987720.544 +2147479552,7981375.213 +2147479552,7891038.596 +2147479552,7938153.784 +2147479552,7994743.436 +2147479552,7969981.838 +2147479552,8011823.777 +2147479552,7996064.247 +2147479552,7947879.145 +2147479552,7985816.971 +2147479552,7995605.312 +2147479552,7983282.017 +2147479552,8005353.046 +2147479552,7914268.430 +2147479552,7999164.728 +2147479552,8005604.031 +2147479552,7991085.428 +2147479552,7972030.389 +2147479552,8021943.766 +2147479552,8004200.210 +2147479552,7981959.502 +2147479552,8015792.619 +2147479552,8025698.916 +2147479552,7920272.856 +2147479552,7987016.077 +2147479552,7993946.193 +2147479552,7976842.665 +2147479552,7932725.791 +2147479552,8001207.246 +2147479552,7992935.034 +2147479552,7994839.564 +2147479552,7953781.000 +2147479552,7995609.458 +2147479552,7991498.621 +2147479552,7981376.428 +2147479552,8019860.285 +2147479552,8010076.783 +2147479552,7947939.147 +2147479552,7991493.535 +2147479552,8007070.496 +2147479552,7995804.714 +2147479552,7988939.304 +2147479552,7975442.967 +2147479552,7930282.212 +2147479552,7975682.920 +2147479552,7989355.196 +2147479552,7970851.592 +2147479552,7940425.011 +2147479552,8035883.231 +2147479552,7987103.927 +2147479552,8010144.734 +2147479552,7832545.204 +2147479552,7943871.723 +2147479552,8001202.057 +2147479552,7991649.426 +2147479552,8006330.518 +2147479552,8009843.751 +2147479552,8002447.011 +2147479552,7875281.291 +2147479552,8008141.746 +2147479552,7972849.607 +2147479552,7987483.153 +2147479552,7971092.541 +2147479552,7940162.464 +2147479552,8009365.216 +2147479552,7854549.375 +2147479552,8006580.769 +2147479552,7948876.345 diff --git a/dma/bw_all.CSV b/dma/bw_all.CSV new file mode 100644 index 0000000..98226cf --- /dev/null +++ b/dma/bw_all.CSV @@ -0,0 +1,4 @@ +bytes,size,VANILLA,VANILLA_err,FALCO,FALCO_err,TETRA,TETRA_err,TRACE,TRACE_err
+536870912,512M,8170.113520,32.870435,,,,,,
+1073741824,1G,7971.435763,26.357252,,,,,,
+2147479552,2G,7788.278555,40.186783,,,,,,
diff --git a/dma/combine.py b/dma/combine.py new file mode 100755 index 0000000..7397449 --- /dev/null +++ b/dma/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/dma/doca_dma_host_recv b/dma/doca_dma_host_recv Binary files differnew file mode 100755 index 0000000..b99bc37 --- /dev/null +++ b/dma/doca_dma_host_recv diff --git a/dma/host_recv.c b/dma/host_recv.c new file mode 100644 index 0000000..9fdffab --- /dev/null +++ b/dma/host_recv.c @@ -0,0 +1,251 @@ +#define _GNU_SOURCE + +#include <doca_error.h> +#include <doca_dev.h> +#include <doca_mmap.h> + +#include <errno.h> +#include <getopt.h> +#include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdint.h> + +#define META_MAGIC 0x444f4341444d4131ULL /* "DOCADMA1" */ +#define DEFAULT_DESC_PATH "descriptor.bin" +#define DEFAULT_BUF_PATH "buffer.json" + +static void die_errno(const char *what) +{ + fprintf(stderr, "%s: %s\n", what, strerror(errno)); + exit(EXIT_FAILURE); +} + +static void die_doca(const char *what, doca_error_t err) +{ + fprintf(stderr, "%s: DOCA error code %d\n", what, (int)err); + exit(EXIT_FAILURE); +} + +static int write_file_all(const char *path, const void *data, size_t len) +{ + FILE *f = fopen(path, "wb"); + + if (f == NULL) + return -1; + + if (len > 0 && fwrite(data, 1, len, f) != len) { + fclose(f); + return -1; + } + + if (fclose(f) != 0) + return -1; + + return 0; +} + +static int write_remote_buffer_json(const char *path, uintptr_t addr, size_t len) +{ + FILE *f = fopen(path, "w"); + + if (f == NULL) + return -1; + + fprintf(f, + "{\n" + " \"magic\": \"0x%016" PRIx64 "\",\n" + " \"addr\": \"0x%016" PRIxPTR "\",\n" + " \"len\": %" PRIu64 "\n" + "}\n", + (uint64_t)META_MAGIC, + addr, + (uint64_t)len); + + if (fclose(f) != 0) + return -1; + + return 0; +} + +static doca_error_t open_doca_device_by_pci(const char *pci_addr, + struct doca_dev **dev) +{ + struct doca_devinfo **dev_list = NULL; + uint32_t nb_devs = 0; + doca_error_t result; + uint32_t i; + + result = doca_devinfo_create_list(&dev_list, &nb_devs); + if (result != DOCA_SUCCESS) + return result; + + for (i = 0; i < nb_devs; i++) { + uint8_t is_equal = 0; + + if (pci_addr == NULL) { + result = doca_dev_open(dev_list[i], dev); + doca_devinfo_destroy_list(dev_list); + return result; + } + + result = doca_devinfo_is_equal_pci_addr(dev_list[i], + pci_addr, + &is_equal); + if (result == DOCA_SUCCESS && is_equal) { + result = doca_dev_open(dev_list[i], dev); + doca_devinfo_destroy_list(dev_list); + return result; + } + } + + doca_devinfo_destroy_list(dev_list); + return DOCA_ERROR_NOT_FOUND; +} + +static doca_error_t create_started_host_mmap(struct doca_dev *dev, + void *addr, + size_t len, + struct doca_mmap **mmap) +{ + doca_error_t result; + + /* + * DOCA 2.x commonly uses: + * doca_mmap_create(const union doca_data *user_data, struct doca_mmap **mmap) + */ + result = doca_mmap_create(mmap); + if (result != DOCA_SUCCESS) + return result; + + result = doca_mmap_set_memrange(*mmap, addr, len); + if (result != DOCA_SUCCESS) + goto destroy; + + result = doca_mmap_set_permissions(*mmap, DOCA_ACCESS_FLAG_PCI_READ_WRITE); + if (result != DOCA_SUCCESS) + goto destroy; + + result = doca_mmap_add_dev(*mmap, dev); + if (result != DOCA_SUCCESS) + goto destroy; + + result = doca_mmap_start(*mmap); + if (result != DOCA_SUCCESS) + goto destroy; + + return DOCA_SUCCESS; + +destroy: + doca_mmap_destroy(*mmap); + *mmap = NULL; + return result; +} + +static void usage(const char *prog) +{ + fprintf(stderr, + "Usage: %s -p <host-pci-bdf> -s <bytes> -o <output-file> " + "[-d descriptor.bin] [-b buffer.json]\n\n" + "Example:\n" + " sudo %s -p 0000:3b:00.0 -s 268435456 -o received_256M.bin\n", + prog, prog); +} + +int main(int argc, char **argv) +{ + const char *pci = NULL; + const char *out_path = NULL; + const char *desc_path = DEFAULT_DESC_PATH; + const char *buf_path = DEFAULT_BUF_PATH; + size_t size = 0; + + struct doca_dev *dev = NULL; + struct doca_mmap *mmap = NULL; + + void *host_buf = NULL; + const void *export_desc = NULL; + size_t export_desc_len = 0; + + int opt; + doca_error_t result; + + while ((opt = getopt(argc, argv, "p:s:o:d:b:h")) != -1) { + switch (opt) { + case 'p': + pci = optarg; + break; + case 's': + size = strtoull(optarg, NULL, 0); + break; + case 'o': + out_path = optarg; + break; + case 'd': + desc_path = optarg; + break; + case 'b': + buf_path = optarg; + break; + case 'h': + default: + usage(argv[0]); + return EXIT_FAILURE; + } + } + + if (pci == NULL || out_path == NULL || size == 0) { + usage(argv[0]); + return EXIT_FAILURE; + } + + result = open_doca_device_by_pci(pci, &dev); + if (result != DOCA_SUCCESS) + die_doca("open_doca_device_by_pci", result); + + if (posix_memalign(&host_buf, 4096, size) != 0) + die_errno("posix_memalign"); + + memset(host_buf, 0, size); + + result = create_started_host_mmap(dev, host_buf, size, &mmap); + if (result != DOCA_SUCCESS) + die_doca("create_started_host_mmap", result); + + result = doca_mmap_export_pci(mmap, dev, &export_desc, &export_desc_len); + if (result != DOCA_SUCCESS) + die_doca("doca_mmap_export_pci", result); + + if (export_desc == NULL || export_desc_len == 0) { + fprintf(stderr, "doca_mmap_export_pci returned empty descriptor\n"); + exit(EXIT_FAILURE); + } + + if (write_file_all(desc_path, export_desc, export_desc_len) != 0) + die_errno("write descriptor"); + + if (write_remote_buffer_json(buf_path, (uintptr_t)host_buf, size) != 0) + die_errno("write buffer metadata"); + + printf("Host receive buffer exported.\n"); + printf(" descriptor: %s (%zu bytes)\n", desc_path, export_desc_len); + printf(" buffer: %s\n", buf_path); + printf(" addr: 0x%016" PRIxPTR "\n", (uintptr_t)host_buf); + printf(" len: %zu\n", size); + printf("\nCopy %s and %s to the DPU, run dpu sender, then press ENTER here.\n", + desc_path, buf_path); + + (void)getchar(); + + if (write_file_all(out_path, host_buf, size) != 0) + die_errno("write output file"); + + printf("Wrote host buffer to %s\n", out_path); + + doca_mmap_destroy(mmap); + doca_dev_close(dev); + free(host_buf); + + return EXIT_SUCCESS; +} diff --git a/dma/run.sh b/dma/run.sh new file mode 100755 index 0000000..f9daba2 --- /dev/null +++ b/dma/run.sh @@ -0,0 +1,219 @@ +#!/usr/bin/env bash + +set -euo pipefail + +parse_size() { + local input="$1" + local number suffix + + if [[ "$input" =~ ^([0-9]+)([KkMmGg]?)$ ]]; then + number="${BASH_REMATCH[1]}" + suffix="${BASH_REMATCH[2]}" + + case "$suffix" in + K|k) echo $((number * 1024)) ;; + M|m) echo $((number * 1024 * 1024)) ;; + G|g) echo $((number * 1024 * 1024 * 1024)) ;; + "") echo "$number" ;; + *) return 1 ;; + esac + else + echo "Invalid size: $input" >&2 + return 1 + fi +} + +cleanup() { + rm -f buffer.json descriptor.bin host_recv.stdin +} +trap cleanup EXIT INT TERM + +if [[ $# -lt 4 || $# -gt 5 ]]; then + echo "Usage: $0 <tag> <runs> <bytes|size> <remote-input-file> [remote-log-prefix-base]" + echo "Example: $0 VANILLA 10 256M bins/256M.bin" + exit 1 +fi + +TAG="$1" +RUNS="$2" +DEBUG_BYTES="$(parse_size "$3")" +REMOTE_INPUT="$4" +REMOTE_PREFIX_BASE="${TAG}_$3" + +SSH_KEY="$HOME/.ssh/id_ed25519" +REMOTE_HOST="ubuntu@143.248.53.46" +REMOTE_DIR="/home/ubuntu/siho-benchmark/dma" + +DEBUG_OUT="./test.bin" + +# Host-side PCI BDF toward DPU. +PCI_TO_DPU="0000:5e:00.0" + +# 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 +) + +SCP_OPTS=( +-i "$SSH_KEY" +-o BatchMode=yes +-o StrictHostKeyChecking=accept-new +) + +echo "=====" +echo "SIHO'S DMA BENCHMARKING" +echo "SSH KEY LOCATION: $SSH_KEY" +echo "REMOTE HOST: $REMOTE_HOST" +echo "REMOTE DIR: $REMOTE_DIR" +echo "TAG: $TAG" +echo "HOST PCIE ADDRESS TO DPU: $PCI_TO_DPU" +echo "DPU PCIE ADDRESS: $DPU_PCI" +echo "RUNS: $RUNS" +echo "BYTES: $DEBUG_BYTES" +echo "REMOTE INPUT: $REMOTE_INPUT" +echo "=====" +echo "PROCEED (y/N)?" + +read -r proceed + +if [[ "${proceed:-}" != "y" ]]; then + echo "TERMINATING..." + exit 0 +fi + +sudo -v + +for i in $(seq 1 "$RUNS"); do + echo "===== RUN $i/$RUNS =====" + + rm -f descriptor.bin buffer.json host_recv.stdin "$DEBUG_OUT" + mkfifo host_recv.stdin + + # Open FIFO read-write so the receiver does not get accidental EOF. + exec 3<>host_recv.stdin + + sudo -n ./doca_dma_host_recv \ + -p "$PCI_TO_DPU" \ + -o "$DEBUG_OUT" \ + -s "$DEBUG_BYTES" \ + < host_recv.stdin & + host_pid=$! + + ok=0 + for _ in $(seq 1 100); do + if [[ -s descriptor.bin && -s buffer.json ]]; then + ok=1 + break + fi + + sleep 0.1 + done + + if [[ "$ok" != "1" ]]; then + echo "ERROR: descriptor.bin or buffer.json was not generated within timeout" + echo "host_pid=$host_pid" + + if kill -0 "$host_pid" 2>/dev/null; then + echo "host receiver still appears to be running" + else + echo "host receiver process is not visible anymore" + fi + + kill "$host_pid" 2>/dev/null || true + exec 3>&- 2>/dev/null || true + rm -f host_recv.stdin + exit 1 + fi + + echo "[host] Copying descriptor.bin and buffer.json to DPU..." + if ! scp "${SCP_OPTS[@]}" descriptor.bin buffer.json "$REMOTE_HOST:$REMOTE_DIR/"; then + echo "ERROR: scp failed" + kill "$host_pid" 2>/dev/null || true + exec 3>&- + exit 1 + fi + + echo "[dpu] Running DMA sender through wrapper..." + if ! dpu_out="$( + ssh "${SSH_OPTS[@]}" "$REMOTE_HOST" \ + "cd '$REMOTE_DIR' && sudo -n '$DPU_SCRIPT' '$REMOTE_PREFIX_BASE' '$DPU_PCI' '$REMOTE_INPUT'" \ + 2>&1 + )"; then + echo "ERROR: DPU sender failed" + echo "$dpu_out" + kill "$host_pid" 2>/dev/null || true + exec 3>&- + exit 1 + fi + + bytes="$(awk '/bytes:/ {print $2}' <<< "$dpu_out" | tail -n1)" + time_val="$(awk '/time:/ {print $2}' <<< "$dpu_out" | tail -n1)" + time_unit="$(awk '/time:/ {print $3}' <<< "$dpu_out" | tail -n1)" + bw_val="$(awk '/BW:/ {print $2}' <<< "$dpu_out" | tail -n1)" + bw_unit="$(awk '/BW:/ {print $3}' <<< "$dpu_out" | tail -n1)" + + if [[ -z "${bytes:-}" || -z "${time_val:-}" || -z "${bw_val:-}" ]]; then + echo "ERROR: failed to parse DPU output" + echo "$dpu_out" + kill "$host_pid" 2>/dev/null || true + exec 3>&- + 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 "[host] Releasing host receiver..." + printf '\n' >&3 + exec 3>&- + + if ! wait "$host_pid"; then + echo "ERROR: host receiver failed" + exit 1 + fi + + rm -f host_recv.stdin + + echo "[result] 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/dma/sum.sh b/dma/sum.sh new file mode 100755 index 0000000..feae470 --- /dev/null +++ b/dma/sum.sh @@ -0,0 +1,22 @@ +#!/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/dma/times_VANILLA.csv b/dma/times_VANILLA.csv new file mode 100644 index 0000000..4269925 --- /dev/null +++ b/dma/times_VANILLA.csv @@ -0,0 +1,1348 @@ +bytes,time_usec +536870912,63489.795000 +536870912,62984.421000 +536870912,62713.422000 +536870912,63058.195000 +536870912,62965.014000 +536870912,62855.561000 +536870912,62650.012000 +536870912,63074.874000 +536870912,62584.804000 +536870912,63134.707000 +536870912,63028.091000 +536870912,62681.548000 +536870912,62739.579000 +536870912,62804.091000 +536870912,62744.142000 +536870912,63509.868000 +536870912,62697.951000 +536870912,62564.218000 +536870912,62482.651000 +536870912,62636.890000 +536870912,62695.587000 +536870912,62278.528000 +536870912,62776.428000 +536870912,62801.547000 +536870912,62893.508000 +536870912,62588.838000 +536870912,62543.189000 +536870912,62410.136000 +536870912,62677.309000 +536870912,62455.221000 +536870912,63020.347000 +536870912,62818.725000 +536870912,62863.360000 +536870912,62589.763000 +536870912,62541.721000 +536870912,62757.261000 +536870912,62529.262000 +536870912,62207.045000 +536870912,62634.045000 +536870912,62773.077000 +536870912,62381.274000 +536870912,62746.201000 +536870912,62698.327000 +536870912,63057.806000 +536870912,62934.840000 +536870912,62646.212000 +536870912,63026.353000 +536870912,62676.516000 +536870912,62879.057000 +536870912,62982.650000 +536870912,63180.418000 +536870912,62751.229000 +536870912,63048.517000 +536870912,62773.314000 +536870912,62734.044000 +536870912,62572.787000 +536870912,63607.369000 +536870912,62564.235000 +536870912,62855.877000 +536870912,62959.419000 +536870912,62415.058000 +536870912,62309.991000 +536870912,62785.897000 +536870912,62690.258000 +536870912,62415.332000 +536870912,62441.645000 +536870912,62729.018000 +536870912,62478.677000 +536870912,62558.849000 +536870912,62680.513000 +536870912,62624.220000 +536870912,62564.798000 +536870912,62725.861000 +536870912,62318.913000 +536870912,62945.061000 +536870912,62785.693000 +536870912,63015.685000 +536870912,62728.146000 +536870912,62249.735000 +536870912,62251.258000 +536870912,62325.861000 +536870912,62432.666000 +536870912,63447.784000 +536870912,62602.179000 +536870912,62309.518000 +536870912,63086.085000 +536870912,62583.878000 +536870912,62786.236000 +536870912,62613.086000 +536870912,62547.216000 +536870912,62664.777000 +536870912,62807.122000 +536870912,62594.952000 +536870912,62608.381000 +536870912,62546.490000 +536870912,62700.423000 +536870912,63168.508000 +536870912,62800.671000 +536870912,62830.069000 +536870912,62753.804000 +536870912,62560.245000 +536870912,62382.812000 +536870912,62333.384000 +536870912,62656.923000 +536870912,62472.523000 +536870912,62575.925000 +536870912,62902.778000 +536870912,62438.804000 +536870912,62884.779000 +536870912,62711.720000 +536870912,62941.834000 +536870912,62278.108000 +536870912,62802.146000 +536870912,62639.431000 +536870912,62523.417000 +536870912,62478.105000 +536870912,62862.625000 +536870912,62614.423000 +536870912,62175.452000 +536870912,62564.245000 +536870912,62260.623000 +536870912,63021.730000 +536870912,62353.663000 +536870912,62987.958000 +536870912,62714.081000 +536870912,62875.480000 +536870912,62608.377000 +536870912,62547.835000 +536870912,62825.203000 +536870912,63031.471000 +536870912,62594.279000 +536870912,62432.563000 +536870912,62572.928000 +536870912,62908.543000 +536870912,62573.117000 +536870912,62607.168000 +536870912,63551.153000 +536870912,62754.363000 +536870912,62769.897000 +536870912,62457.675000 +536870912,63081.472000 +536870912,62575.529000 +536870912,62738.454000 +536870912,62519.180000 +536870912,63184.155000 +536870912,62513.958000 +536870912,62637.905000 +536870912,62640.969000 +536870912,62498.890000 +536870912,62833.153000 +536870912,62780.018000 +536870912,62503.510000 +536870912,62807.078000 +536870912,62742.944000 +536870912,62403.578000 +536870912,62691.697000 +536870912,63165.921000 +536870912,62332.588000 +536870912,63133.721000 +536870912,62549.671000 +536870912,63035.128000 +536870912,62532.528000 +536870912,62592.182000 +536870912,62796.261000 +536870912,62751.735000 +536870912,62558.650000 +536870912,62931.123000 +536870912,62781.617000 +536870912,62280.346000 +536870912,62542.120000 +536870912,62516.329000 +536870912,62449.359000 +536870912,62578.119000 +536870912,63023.574000 +536870912,62333.771000 +536870912,62913.852000 +536870912,63771.759000 +536870912,62680.639000 +536870912,62819.388000 +536870912,62689.228000 +536870912,62923.446000 +536870912,62547.552000 +536870912,62818.679000 +536870912,62339.166000 +536870912,62760.738000 +536870912,62378.726000 +536870912,62289.564000 +536870912,62586.769000 +536870912,62626.293000 +536870912,62439.731000 +536870912,62305.625000 +536870912,62764.595000 +536870912,63024.823000 +536870912,62925.298000 +536870912,62542.160000 +536870912,62872.860000 +536870912,63020.087000 +536870912,62424.527000 +536870912,62937.704000 +536870912,62632.583000 +536870912,62705.855000 +536870912,62669.379000 +536870912,62676.689000 +536870912,62582.706000 +536870912,62763.066000 +536870912,62600.187000 +536870912,63001.890000 +536870912,62783.888000 +536870912,63447.465000 +536870912,62918.914000 +536870912,62284.017000 +536870912,62463.288000 +536870912,62804.774000 +536870912,62685.868000 +536870912,62981.294000 +536870912,63129.698000 +536870912,63172.788000 +536870912,62396.783000 +536870912,62805.197000 +536870912,63194.962000 +536870912,62442.165000 +536870912,62586.296000 +536870912,63062.488000 +536870912,62626.102000 +536870912,62573.197000 +536870912,62858.625000 +536870912,62708.645000 +536870912,62678.931000 +536870912,62474.981000 +536870912,62786.592000 +536870912,62787.149000 +536870912,62124.485000 +536870912,62580.338000 +536870912,62421.176000 +536870912,62566.710000 +536870912,62565.514000 +536870912,62658.089000 +536870912,62473.495000 +536870912,62729.651000 +536870912,62977.907000 +536870912,62670.804000 +536870912,62733.764000 +536870912,62683.454000 +536870912,62424.694000 +536870912,62225.992000 +536870912,62545.001000 +536870912,62606.322000 +536870912,62798.826000 +536870912,62610.269000 +536870912,62480.129000 +536870912,62479.207000 +536870912,62472.676000 +536870912,62284.099000 +536870912,62773.361000 +1073741824,128847.934000 +1073741824,128228.653000 +1073741824,128358.822000 +1073741824,129359.483000 +1073741824,127960.185000 +1073741824,128831.561000 +1073741824,129032.084000 +1073741824,128468.556000 +1073741824,128452.040000 +1073741824,128327.067000 +1073741824,128093.558000 +1073741824,128411.867000 +1073741824,130043.465000 +1073741824,128208.807000 +1073741824,127832.440000 +1073741824,128688.396000 +1073741824,128462.595000 +1073741824,127974.289000 +1073741824,128382.129000 +1073741824,128084.382000 +1073741824,128354.746000 +1073741824,128089.438000 +1073741824,128570.736000 +1073741824,128806.602000 +1073741824,128416.381000 +1073741824,128246.285000 +1073741824,128170.772000 +1073741824,128180.281000 +1073741824,128408.284000 +1073741824,128361.587000 +1073741824,127996.603000 +1073741824,128929.908000 +1073741824,128295.273000 +1073741824,128437.925000 +1073741824,128905.852000 +1073741824,128328.525000 +1073741824,128615.521000 +1073741824,127972.604000 +1073741824,128450.318000 +1073741824,127968.264000 +1073741824,128742.763000 +1073741824,128727.120000 +1073741824,128740.985000 +1073741824,128421.690000 +1073741824,129542.817000 +1073741824,129616.984000 +1073741824,128369.117000 +1073741824,127993.060000 +1073741824,128965.128000 +1073741824,128497.148000 +1073741824,128874.149000 +1073741824,128087.496000 +1073741824,128121.184000 +1073741824,128970.003000 +1073741824,127716.858000 +1073741824,128108.995000 +1073741824,128794.189000 +1073741824,128214.452000 +1073741824,128280.623000 +1073741824,128383.771000 +1073741824,129860.524000 +1073741824,128690.881000 +1073741824,128454.171000 +1073741824,128356.101000 +1073741824,128317.008000 +1073741824,128511.373000 +1073741824,128290.294000 +1073741824,128354.517000 +1073741824,128804.554000 +1073741824,128137.764000 +1073741824,128341.067000 +1073741824,128592.371000 +1073741824,128336.172000 +1073741824,128363.135000 +1073741824,128289.664000 +1073741824,128549.018000 +1073741824,128312.002000 +1073741824,128611.158000 +1073741824,127515.396000 +1073741824,128869.322000 +1073741824,128458.551000 +1073741824,128451.021000 +1073741824,128119.159000 +1073741824,128783.615000 +1073741824,128406.949000 +1073741824,128493.522000 +1073741824,129774.847000 +1073741824,128754.600000 +1073741824,128407.445000 +1073741824,128427.297000 +1073741824,127991.351000 +1073741824,128549.394000 +1073741824,128194.076000 +1073741824,128442.858000 +1073741824,128720.388000 +1073741824,128719.087000 +1073741824,128082.507000 +1073741824,127914.157000 +1073741824,128494.464000 +1073741824,128247.481000 +1073741824,128750.373000 +1073741824,128848.464000 +1073741824,128709.755000 +1073741824,128419.617000 +1073741824,128464.786000 +1073741824,128089.221000 +1073741824,128285.098000 +1073741824,127956.854000 +1073741824,128627.834000 +1073741824,128401.736000 +1073741824,128238.908000 +1073741824,128491.011000 +1073741824,128624.531000 +1073741824,127935.579000 +1073741824,128182.256000 +1073741824,127968.604000 +1073741824,128339.703000 +1073741824,128818.708000 +1073741824,129256.167000 +1073741824,128101.168000 +1073741824,128515.409000 +1073741824,128576.432000 +1073741824,128058.615000 +1073741824,127714.940000 +1073741824,128897.189000 +1073741824,128548.555000 +1073741824,128118.051000 +1073741824,128595.775000 +1073741824,128390.759000 +1073741824,128665.233000 +1073741824,128656.797000 +1073741824,128023.144000 +1073741824,128368.514000 +1073741824,128699.314000 +1073741824,128119.968000 +1073741824,128309.818000 +1073741824,128562.510000 +1073741824,128592.078000 +1073741824,128174.726000 +1073741824,128261.116000 +1073741824,127976.328000 +1073741824,128229.360000 +1073741824,128636.430000 +1073741824,129598.053000 +1073741824,128338.553000 +1073741824,127990.602000 +1073741824,128502.897000 +1073741824,128315.735000 +1073741824,128656.952000 +1073741824,127950.805000 +1073741824,128068.290000 +1073741824,128414.345000 +1073741824,129955.992000 +1073741824,128458.069000 +1073741824,128310.001000 +1073741824,128605.643000 +1073741824,128257.949000 +1073741824,129143.886000 +1073741824,128083.550000 +1073741824,128056.730000 +1073741824,128477.029000 +1073741824,127824.060000 +1073741824,128286.444000 +1073741824,128424.816000 +1073741824,128376.334000 +1073741824,128304.672000 +1073741824,128520.425000 +1073741824,128322.713000 +1073741824,128477.631000 +1073741824,128429.009000 +1073741824,128471.310000 +1073741824,129109.411000 +1073741824,128089.378000 +1073741824,127884.552000 +1073741824,128002.158000 +1073741824,128653.792000 +1073741824,128495.450000 +1073741824,128575.096000 +1073741824,128037.838000 +1073741824,127790.205000 +1073741824,128358.903000 +1073741824,129734.960000 +1073741824,128336.542000 +1073741824,128484.916000 +1073741824,128511.766000 +1073741824,128558.427000 +1073741824,128169.736000 +1073741824,128879.380000 +1073741824,128343.909000 +1073741824,128120.941000 +1073741824,130074.652000 +1073741824,128719.556000 +1073741824,128637.296000 +1073741824,128265.632000 +1073741824,127934.537000 +1073741824,128278.807000 +1073741824,128205.573000 +1073741824,128516.655000 +1073741824,128714.833000 +1073741824,128069.519000 +1073741824,128462.382000 +2147479552,263887.592000 +2147479552,267801.091000 +2147479552,261850.588000 +2147479552,262111.370000 +2147479552,265592.301000 +2147479552,261825.537000 +2147479552,262378.650000 +2147479552,263917.510000 +2147479552,266635.838000 +2147479552,261913.748000 +2147479552,261597.637000 +2147479552,264190.575000 +2147479552,262794.264000 +2147479552,262981.388000 +2147479552,261745.018000 +2147479552,266507.906000 +2147479552,262134.394000 +2147479552,262472.314000 +2147479552,261898.798000 +2147479552,261238.878000 +2147479552,263019.482000 +2147479552,264304.881000 +2147479552,262435.915000 +2147479552,261522.943000 +2147479552,262991.126000 +2147479552,261527.636000 +2147479552,264557.912000 +2147479552,262552.749000 +2147479552,265972.221000 +2147479552,262808.425000 +2147479552,262022.535000 +2147479552,262888.337000 +2147479552,264527.815000 +2147479552,262205.234000 +2147479552,262359.199000 +2147479552,261864.783000 +2147479552,261932.302000 +2147479552,263945.389000 +2147479552,262278.512000 +2147479552,262242.882000 +2147479552,261615.135000 +2147479552,261480.962000 +2147479552,264379.055000 +2147479552,261290.734000 +2147479552,262993.678000 +2147479552,261780.691000 +2147479552,261541.002000 +2147479552,262797.897000 +2147479552,262963.603000 +2147479552,261488.003000 +2147479552,262508.959000 +2147479552,261796.568000 +2147479552,262648.357000 +2147479552,264209.025000 +2147479552,261692.183000 +2147479552,266379.908000 +2147479552,261940.632000 +2147479552,261853.796000 +2147479552,262193.980000 +2147479552,264227.979000 +2147479552,261960.448000 +2147479552,262254.736000 +2147479552,261540.662000 +2147479552,265729.693000 +2147479552,262162.601000 +2147479552,262802.833000 +2147479552,262167.477000 +2147479552,261624.508000 +2147479552,261894.035000 +2147479552,261953.414000 +2147479552,264787.194000 +2147479552,262303.804000 +2147479552,262746.105000 +2147479552,262185.927000 +2147479552,263119.740000 +2147479552,266038.995000 +2147479552,261664.370000 +2147479552,262039.602000 +2147479552,262536.802000 +2147479552,267709.202000 +2147479552,261850.498000 +2147479552,261925.048000 +2147479552,262436.101000 +2147479552,263106.499000 +2147479552,264636.512000 +2147479552,262321.495000 +2147479552,261928.902000 +2147479552,262626.003000 +2147479552,263078.185000 +2147479552,264680.914000 +2147479552,262021.706000 +2147479552,265268.452000 +2147479552,261699.450000 +2147479552,264126.695000 +2147479552,262116.640000 +2147479552,262990.790000 +2147479552,263209.847000 +2147479552,263113.615000 +2147479552,262935.500000 +2147479552,261736.692000 +2147479552,262655.059000 +2147479552,262919.008000 +2147479552,261912.836000 +2147479552,264271.842000 +2147479552,262960.113000 +2147479552,262128.868000 +2147479552,262035.758000 +2147479552,263476.521000 +2147479552,263208.445000 +2147479552,262589.311000 +2147479552,262693.749000 +2147479552,262243.488000 +2147479552,263928.720000 +2147479552,262247.115000 +2147479552,266018.585000 +2147479552,264890.820000 +2147479552,264027.100000 +2147479552,265546.246000 +2147479552,262298.908000 +2147479552,262460.471000 +2147479552,261985.680000 +2147479552,266132.198000 +2147479552,262450.119000 +2147479552,262712.386000 +2147479552,262641.117000 +2147479552,265370.389000 +2147479552,264206.351000 +2147479552,261530.424000 +2147479552,265437.359000 +2147479552,261751.809000 +2147479552,262778.057000 +2147479552,262106.834000 +2147479552,264050.654000 +2147479552,262844.518000 +2147479552,265476.259000 +2147479552,266767.899000 +2147479552,262273.077000 +2147479552,263872.954000 +2147479552,262132.046000 +2147479552,262094.758000 +2147479552,262275.595000 +2147479552,267934.154000 +2147479552,265580.418000 +2147479552,262668.031000 +2147479552,261927.500000 +2147479552,261835.525000 +2147479552,264339.028000 +2147479552,263789.509000 +2147479552,262571.549000 +2147479552,262662.153000 +2147479552,262053.883000 +2147479552,261927.260000 +2147479552,262212.635000 +2147479552,262132.086000 +2147479552,263922.216000 +2147479552,262137.604000 +2147479552,262524.973000 +2147479552,262795.420000 +2147479552,265162.345000 +2147479552,262098.205000 +2147479552,262429.500000 +2147479552,262019.232000 +2147479552,266769.784000 +2147479552,262460.088000 +2147479552,263000.549000 +2147479552,261675.960000 +2147479552,262429.137000 +2147479552,262323.120000 +2147479552,264351.667000 +2147479552,261694.275000 +2147479552,262309.888000 +2147479552,261120.789000 +2147479552,265097.228000 +2147479552,262068.833000 +2147479552,263040.378000 +2147479552,263293.130000 +2147479552,263201.917000 +2147479552,263260.491000 +2147479552,261502.801000 +2147479552,262721.862000 +2147479552,265178.099000 +2147479552,261538.850000 +2147479552,262722.501000 +2147479552,262904.610000 +2147479552,264333.310000 +2147479552,261787.249000 +2147479552,265029.688000 +2147479552,262112.153000 +2147479552,261703.953000 +2147479552,261831.012000 +2147479552,264409.988000 +2147479552,262138.241000 +2147479552,261754.387000 +2147479552,261894.308000 +2147479552,262073.709000 +2147479552,264942.039000 +2147479552,261850.561000 +2147479552,262302.688000 +536870912,63184.538000 +536870912,62946.387000 +536870912,62727.237000 +536870912,62305.159000 +536870912,62733.388000 +536870912,62891.899000 +536870912,63003.721000 +536870912,63267.841000 +536870912,62697.615000 +536870912,62592.863000 +536870912,62731.366000 +536870912,62642.382000 +536870912,62450.325000 +536870912,62708.296000 +536870912,62388.391000 +536870912,62307.663000 +536870912,62371.309000 +536870912,62751.326000 +536870912,62621.796000 +536870912,62564.581000 +536870912,62621.626000 +536870912,62680.750000 +536870912,62549.701000 +536870912,62494.681000 +536870912,62355.935000 +536870912,62873.396000 +536870912,62370.466000 +536870912,62569.417000 +536870912,62810.079000 +536870912,62422.839000 +536870912,62265.579000 +536870912,62761.524000 +536870912,62711.717000 +536870912,62741.331000 +536870912,62268.859000 +536870912,62647.177000 +536870912,62701.908000 +536870912,62825.782000 +536870912,62625.436000 +536870912,62518.747000 +536870912,62802.539000 +536870912,62891.373000 +536870912,62224.148000 +536870912,62496.412000 +536870912,62282.757000 +536870912,62791.672000 +536870912,62436.766000 +536870912,62446.029000 +536870912,62730.791000 +536870912,62573.317000 +536870912,62630.808000 +536870912,62885.199000 +536870912,62158.193000 +536870912,62408.084000 +536870912,62683.497000 +536870912,62718.095000 +536870912,62538.613000 +536870912,62166.509000 +536870912,62416.403000 +536870912,62727.829000 +536870912,62428.797000 +536870912,62652.091000 +536870912,62704.899000 +536870912,62557.944000 +536870912,62697.292000 +536870912,62682.102000 +536870912,62508.295000 +536870912,62895.713000 +536870912,62756.212000 +536870912,62686.447000 +536870912,62523.836000 +536870912,62608.484000 +536870912,62812.750000 +536870912,63075.397000 +536870912,62627.934000 +536870912,62685.812000 +536870912,62364.315000 +536870912,62350.567000 +536870912,62914.824000 +536870912,62152.292000 +536870912,62677.549000 +536870912,62588.754000 +536870912,62369.384000 +536870912,62679.880000 +536870912,62519.459000 +536870912,62411.288000 +536870912,62566.193000 +536870912,62184.051000 +536870912,63898.955000 +536870912,62638.212000 +536870912,62574.500000 +536870912,62507.739000 +536870912,62812.054000 +536870912,62534.184000 +536870912,62635.814000 +536870912,62651.418000 +536870912,62929.012000 +536870912,62810.612000 +536870912,62439.295000 +536870912,62632.127000 +536870912,62582.024000 +536870912,62574.845000 +536870912,62668.810000 +536870912,62908.809000 +536870912,62801.267000 +536870912,62762.543000 +536870912,63025.736000 +536870912,62733.694000 +536870912,62870.965000 +536870912,62179.598000 +536870912,63042.286000 +536870912,62545.987000 +536870912,62725.671000 +536870912,62634.968000 +536870912,62545.827000 +536870912,62779.532000 +536870912,62588.818000 +536870912,62589.706000 +536870912,62529.361000 +536870912,62506.144000 +536870912,62666.295000 +536870912,62326.257000 +536870912,62791.795000 +536870912,62469.022000 +536870912,62140.732000 +536870912,62480.349000 +536870912,62802.879000 +536870912,62385.667000 +536870912,62730.361000 +536870912,62666.921000 +536870912,62502.175000 +536870912,62605.107000 +536870912,62665.865000 +536870912,62455.261000 +536870912,62434.002000 +536870912,62535.563000 +536870912,62633.213000 +536870912,62768.318000 +536870912,62704.995000 +536870912,62808.381000 +536870912,62794.227000 +536870912,62649.046000 +536870912,62936.775000 +536870912,62542.557000 +536870912,62642.588000 +536870912,62514.986000 +536870912,62133.164000 +536870912,62787.075000 +536870912,62667.008000 +536870912,62557.444000 +536870912,62873.542000 +536870912,63443.644000 +536870912,62604.078000 +536870912,62401.027000 +536870912,62525.505000 +536870912,62580.345000 +536870912,62533.964000 +536870912,62514.527000 +536870912,62694.411000 +536870912,62729.947000 +536870912,62569.721000 +536870912,62493.079000 +536870912,63132.656000 +536870912,62489.951000 +536870912,62526.484000 +536870912,62295.703000 +536870912,62637.859000 +536870912,62903.463000 +536870912,62853.509000 +536870912,62884.013000 +536870912,62892.116000 +536870912,62785.367000 +536870912,62835.608000 +536870912,62582.626000 +536870912,62488.099000 +536870912,62972.531000 +536870912,62549.004000 +536870912,62966.980000 +536870912,62696.280000 +536870912,63267.072000 +536870912,63325.052000 +536870912,62607.058000 +536870912,62305.991000 +536870912,62489.315000 +536870912,63084.153000 +536870912,62487.730000 +536870912,62481.109000 +536870912,62463.230000 +536870912,62330.620000 +536870912,62539.719000 +536870912,62581.887000 +536870912,62447.580000 +536870912,62858.792000 +536870912,62688.616000 +536870912,62646.179000 +536870912,62274.388000 +536870912,62689.409000 +536870912,62727.093000 +536870912,62533.974000 +536870912,62335.476000 +536870912,62848.929000 +536870912,62760.378000 +536870912,62615.908000 +536870912,62851.114000 +536870912,62550.700000 +536870912,62552.178000 +536870912,62558.493000 +536870912,62998.492000 +536870912,62721.089000 +536870912,62411.837000 +536870912,62335.209000 +536870912,62690.574000 +536870912,62865.652000 +536870912,62155.749000 +536870912,62496.659000 +536870912,62541.768000 +536870912,62527.839000 +536870912,62434.742000 +536870912,62830.566000 +536870912,62765.667000 +536870912,62701.985000 +536870912,62985.177000 +536870912,62533.501000 +536870912,62244.530000 +536870912,62478.265000 +536870912,62412.857000 +536870912,62650.518000 +536870912,62447.880000 +536870912,62720.639000 +536870912,62914.608000 +536870912,62322.953000 +536870912,62794.033000 +536870912,62890.121000 +536870912,62653.932000 +536870912,62616.294000 +536870912,62672.902000 +536870912,62872.949000 +536870912,62680.226000 +536870912,62611.788000 +536870912,62594.400000 +536870912,62540.852000 +536870912,62631.501000 +536870912,62650.012000 +536870912,62384.657000 +536870912,62671.747000 +536870912,62439.228000 +1073741824,129343.073000 +1073741824,128451.081000 +1073741824,128088.782000 +1073741824,128811.138000 +1073741824,128923.293000 +1073741824,128713.112000 +1073741824,128407.494000 +1073741824,128328.178000 +1073741824,128275.087000 +1073741824,128275.957000 +1073741824,128076.283000 +1073741824,128188.643000 +1073741824,127893.984000 +1073741824,129643.548000 +1073741824,127684.083000 +1073741824,128714.478000 +1073741824,128807.439000 +1073741824,128413.916000 +1073741824,128446.424000 +1073741824,128650.075000 +1073741824,127990.905000 +1073741824,129391.306000 +1073741824,128159.405000 +1073741824,128913.801000 +1073741824,128801.593000 +1073741824,128628.890000 +1073741824,128209.869000 +1073741824,128445.685000 +1073741824,128071.636000 +1073741824,128419.374000 +1073741824,127987.158000 +1073741824,128221.509000 +1073741824,127859.530000 +1073741824,129244.644000 +1073741824,128912.622000 +1073741824,128537.644000 +1073741824,129535.603000 +1073741824,128297.754000 +1073741824,128620.783000 +1073741824,129467.351000 +1073741824,127876.599000 +1073741824,128455.723000 +1073741824,128058.697000 +1073741824,128364.361000 +1073741824,128910.924000 +1073741824,128558.379000 +1073741824,128274.714000 +1073741824,127870.195000 +1073741824,128375.362000 +1073741824,128478.527000 +1073741824,128148.474000 +1073741824,128434.178000 +1073741824,128313.198000 +1073741824,128031.647000 +1073741824,128289.519000 +1073741824,128195.744000 +1073741824,128211.857000 +1073741824,128640.350000 +1073741824,128439.045000 +1073741824,128249.322000 +1073741824,128169.756000 +1073741824,128401.486000 +1073741824,128188.844000 +1073741824,127599.091000 +1073741824,128254.262000 +1073741824,128482.820000 +1073741824,128352.948000 +1073741824,128534.127000 +1073741824,127943.785000 +1073741824,127874.178000 +1073741824,129231.128000 +1073741824,128344.768000 +1073741824,129837.624000 +1073741824,128243.064000 +1073741824,129789.744000 +1073741824,128170.885000 +1073741824,129808.484000 +1073741824,128689.945000 +1073741824,128264.912000 +1073741824,128102.507000 +1073741824,128438.721000 +1073741824,128451.937000 +1073741824,128055.880000 +1073741824,127446.531000 +1073741824,127892.918000 +1073741824,128712.159000 +1073741824,127604.247000 +1073741824,128280.106000 +1073741824,128541.737000 +1073741824,128044.730000 +1073741824,128013.339000 +1073741824,129871.994000 +1073741824,128338.170000 +1073741824,128568.588000 +1073741824,128674.251000 +1073741824,129017.446000 +1073741824,128366.089000 +1073741824,128303.416000 +1073741824,128177.533000 +1073741824,128423.598000 +1073741824,128642.808000 +1073741824,128502.737000 +1073741824,128126.367000 +1073741824,128139.929000 +1073741824,128192.694000 +1073741824,128536.389000 +1073741824,128555.246000 +1073741824,129162.666000 +1073741824,128737.355000 +1073741824,128814.413000 +1073741824,128408.480000 +1073741824,128059.880000 +1073741824,128256.137000 +1073741824,128185.496000 +1073741824,128697.256000 +1073741824,128244.193000 +1073741824,128128.608000 +1073741824,128677.699000 +1073741824,128738.687000 +1073741824,128984.071000 +1073741824,128434.631000 +1073741824,128071.950000 +1073741824,128076.142000 +1073741824,128322.713000 +1073741824,128513.517000 +1073741824,128430.049000 +1073741824,127944.112000 +1073741824,128696.176000 +1073741824,129728.956000 +1073741824,128363.931000 +1073741824,128037.945000 +1073741824,128431.831000 +1073741824,128843.308000 +1073741824,128115.426000 +1073741824,128547.372000 +1073741824,128539.070000 +1073741824,127774.269000 +1073741824,128634.699000 +1073741824,128425.452000 +1073741824,128241.042000 +1073741824,128647.038000 +1073741824,128493.694000 +1073741824,128561.973000 +1073741824,129844.491000 +1073741824,129147.676000 +1073741824,128468.646000 +1073741824,128351.142000 +1073741824,128588.944000 +1073741824,128552.961000 +1073741824,128280.399000 +1073741824,128420.294000 +1073741824,128115.959000 +1073741824,127956.108000 +1073741824,128367.648000 +1073741824,128969.664000 +1073741824,128538.274000 +1073741824,129081.469000 +1073741824,128103.130000 +1073741824,128278.417000 +1073741824,128933.548000 +1073741824,128286.194000 +1073741824,128391.215000 +1073741824,128310.987000 +1073741824,128353.920000 +1073741824,128324.245000 +1073741824,128158.873000 +1073741824,128484.153000 +1073741824,128766.013000 +1073741824,128443.561000 +1073741824,128076.359000 +1073741824,128958.677000 +1073741824,128780.211000 +1073741824,128318.613000 +1073741824,128204.850000 +1073741824,128369.899000 +1073741824,128128.012000 +1073741824,128078.071000 +1073741824,129526.508000 +1073741824,128051.194000 +1073741824,129586.406000 +1073741824,127957.104000 +1073741824,129389.377000 +1073741824,128362.946000 +1073741824,128561.578000 +1073741824,128307.813000 +1073741824,128141.547000 +1073741824,128447.990000 +1073741824,128154.329000 +1073741824,127973.376000 +1073741824,128517.837000 +1073741824,128622.802000 +1073741824,128429.962000 +1073741824,128439.417000 +1073741824,128603.235000 +1073741824,128210.319000 +1073741824,128645.299000 +1073741824,128122.912000 +1073741824,128129.407000 +1073741824,128445.765000 +1073741824,128875.014000 +1073741824,128144.625000 +1073741824,128283.879000 +1073741824,129154.670000 +1073741824,128437.902000 +1073741824,128404.318000 +1073741824,128151.342000 +1073741824,129647.838000 +1073741824,128613.650000 +1073741824,128370.859000 +1073741824,128297.904000 +1073741824,128136.951000 +1073741824,128146.400000 +1073741824,127648.256000 +1073741824,128339.352000 +1073741824,128769.091000 +1073741824,128319.845000 +1073741824,128453.173000 +1073741824,128495.680000 +1073741824,128481.415000 +1073741824,128724.445000 +1073741824,128149.930000 +1073741824,128951.855000 +1073741824,128216.783000 +1073741824,128874.238000 +1073741824,127977.210000 +1073741824,128557.826000 +1073741824,128205.200000 +1073741824,128768.581000 +1073741824,128891.433000 +1073741824,128355.319000 +1073741824,128166.596000 +1073741824,128406.252000 +1073741824,128231.738000 +1073741824,128167.575000 +1073741824,127948.641000 +1073741824,127885.125000 +1073741824,128086.913000 +1073741824,128770.606000 +1073741824,128280.020000 +1073741824,128555.549000 +1073741824,128877.326000 +1073741824,128371.329000 +1073741824,128748.078000 +1073741824,129288.260000 +1073741824,128616.540000 +1073741824,128591.619000 +2147479552,263790.138000 +2147479552,262459.994000 +2147479552,266974.649000 +2147479552,262370.040000 +2147479552,262230.539000 +2147479552,263673.481000 +2147479552,261911.943000 +2147479552,264314.509000 +2147479552,262779.943000 +2147479552,267322.457000 +2147479552,262352.016000 +2147479552,263300.850000 +2147479552,263205.192000 +2147479552,261111.919000 +2147479552,262607.376000 +2147479552,261923.487000 +2147479552,266047.414000 +2147479552,264424.186000 +2147479552,261566.220000 +2147479552,261713.562000 +2147479552,262300.510000 +2147479552,261196.361000 +2147479552,264188.542000 +2147479552,266088.952000 +2147479552,261567.562000 +2147479552,262099.281000 +2147479552,264440.223000 +2147479552,261896.690000 +2147479552,262636.218000 +2147479552,262361.059000 +2147479552,262310.181000 +2147479552,261948.133000 +2147479552,266493.032000 +2147479552,263010.653000 +2147479552,262470.765000 +2147479552,262535.304000 +2147479552,265024.846000 +2147479552,264726.619000 +2147479552,262212.221000 +2147479552,261491.371000 +2147479552,262561.725000 +2147479552,261961.338000 +2147479552,264136.387000 +2147479552,262587.147000 +2147479552,261218.512000 +2147479552,261891.221000 +2147479552,263623.942000 +2147479552,262202.077000 +2147479552,262383.386000 +2147479552,262406.533000 +2147479552,262180.818000 +2147479552,262765.315000 +2147479552,262514.777000 +2147479552,262407.975000 +2147479552,264085.517000 +2147479552,261978.301000 +2147479552,261868.640000 +2147479552,263935.794000 +2147479552,263372.309000 +2147479552,267421.793000 +2147479552,262215.003000 +2147479552,263458.376000 +2147479552,262191.789000 +2147479552,262406.742000 +2147479552,263064.398000 +2147479552,262124.613000 +2147479552,262892.067000 +2147479552,263669.311000 +2147479552,262016.834000 +2147479552,261508.636000 +2147479552,262515.997000 +2147479552,262600.868000 +2147479552,264934.825000 +2147479552,261938.574000 +2147479552,262506.822000 +2147479552,262535.587000 +2147479552,262472.214000 +2147479552,264274.906000 +2147479552,262103.367000 +2147479552,262866.169000 +2147479552,262593.648000 +2147479552,261836.740000 +2147479552,264286.213000 +2147479552,262955.467000 +2147479552,262262.462000 +2147479552,262190.107000 +2147479552,265777.866000 +2147479552,262050.233000 +2147479552,265664.703000 +2147479552,262583.749000 +2147479552,264507.765000 +2147479552,263173.032000 +2147479552,262116.219000 +2147479552,264327.118000 +2147479552,263121.543000 +2147479552,262328.775000 +2147479552,261604.718000 +2147479552,264133.763000 +2147479552,261754.796000 +2147479552,262087.391000 +2147479552,261948.522000 +2147479552,262274.918000 +2147479552,263975.880000 +2147479552,262592.782000 +2147479552,262648.385000 +2147479552,262297.586000 +2147479552,262068.856000 +2147479552,262143.387000 +2147479552,264130.985000 +2147479552,262038.019000 +2147479552,262215.625000 +2147479552,262589.571000 +2147479552,263984.712000 +2147479552,262617.428000 +2147479552,261978.484000 +2147479552,262211.379000 +2147479552,264889.491000 +2147479552,262038.136000 +2147479552,262057.263000 +2147479552,262849.940000 +2147479552,262077.200000 +2147479552,261815.505000 +2147479552,264830.038000 +2147479552,262189.125000 +2147479552,262218.663000 +2147479552,261801.234000 +2147479552,262254.192000 +2147479552,264715.209000 +2147479552,262007.702000 +2147479552,262077.403000 +2147479552,262028.697000 +2147479552,264156.996000 +2147479552,266230.858000 +2147479552,262840.531000 +2147479552,262546.491000 +2147479552,262755.220000 +2147479552,265763.242000 +2147479552,264185.862000 +2147479552,262315.860000 +2147479552,263130.838000 +2147479552,261756.631000 +2147479552,262272.530000 +2147479552,263862.593000 +2147479552,262609.074000 +2147479552,262287.584000 +2147479552,262692.461000 +2147479552,261968.209000 +2147479552,264983.178000 +2147479552,262170.873000 +2147479552,261959.996000 +2147479552,262435.938000 +2147479552,263063.222000 +2147479552,261426.415000 +2147479552,262005.940000 +2147479552,262735.986000 +2147479552,261627.028000 +2147479552,261304.096000 +2147479552,264782.292000 +2147479552,262569.648000 +2147479552,262342.021000 +2147479552,262904.521000 +2147479552,264366.632000 +2147479552,262103.947000 +2147479552,262375.209000 +2147479552,262312.706000 +2147479552,263666.802000 +2147479552,262287.448000 +2147479552,262422.369000 +2147479552,262755.180000 +2147479552,261494.331000 +2147479552,261813.720000 +2147479552,263860.601000 +2147479552,262422.536000 +2147479552,261912.019000 +2147479552,262281.043000 +2147479552,262506.438000 +2147479552,262950.661000 +2147479552,264448.092000 +2147479552,262942.750000 +2147479552,262492.773000 +2147479552,263102.126000 +2147479552,264110.296000 +2147479552,260972.931000 +2147479552,262566.760000 +2147479552,261811.499000 +2147479552,267747.960000 +2147479552,263995.703000 +2147479552,262104.117000 +2147479552,262417.417000 +2147479552,261936.226000 +2147479552,261821.337000 +2147479552,262063.341000 +2147479552,266294.996000 +2147479552,261876.983000 +2147479552,263036.192000 +2147479552,262554.294000 +2147479552,263094.173000 +2147479552,264119.029000 +2147479552,261836.980000 +2147479552,266997.876000 +2147479552,261928.039000 +2147479552,263829.491000 diff --git a/dma/times_all.CSV b/dma/times_all.CSV new file mode 100644 index 0000000..9a57783 --- /dev/null +++ b/dma/times_all.CSV @@ -0,0 +1,1348 @@ +bytes,VANILLA_time_usec,VANILLA_cdf,FALCO_time_usec,FALCO_cdf,TETRA_time_usec,TETRA_cdf,TRACE_time_usec,TRACE_cdf
+536870912,62.124485,0.002000000,,,,,,
+536870912,62.133164,0.004000000,,,,,,
+536870912,62.140732,0.006000000,,,,,,
+536870912,62.152292,0.008000000,,,,,,
+536870912,62.155749,0.010000000,,,,,,
+536870912,62.158193,0.012000000,,,,,,
+536870912,62.166509,0.014000000,,,,,,
+536870912,62.175452,0.016000000,,,,,,
+536870912,62.179598,0.018000000,,,,,,
+536870912,62.184051,0.020000000,,,,,,
+536870912,62.207045,0.022000000,,,,,,
+536870912,62.224148,0.024000000,,,,,,
+536870912,62.225992,0.026000000,,,,,,
+536870912,62.244530,0.028000000,,,,,,
+536870912,62.249735,0.030000000,,,,,,
+536870912,62.251258,0.032000000,,,,,,
+536870912,62.260623,0.034000000,,,,,,
+536870912,62.265579,0.036000000,,,,,,
+536870912,62.268859,0.038000000,,,,,,
+536870912,62.274388,0.040000000,,,,,,
+536870912,62.278108,0.042000000,,,,,,
+536870912,62.278528,0.044000000,,,,,,
+536870912,62.280346,0.046000000,,,,,,
+536870912,62.282757,0.048000000,,,,,,
+536870912,62.284017,0.050000000,,,,,,
+536870912,62.284099,0.052000000,,,,,,
+536870912,62.289564,0.054000000,,,,,,
+536870912,62.295703,0.056000000,,,,,,
+536870912,62.305159,0.058000000,,,,,,
+536870912,62.305625,0.060000000,,,,,,
+536870912,62.305991,0.062000000,,,,,,
+536870912,62.307663,0.064000000,,,,,,
+536870912,62.309518,0.066000000,,,,,,
+536870912,62.309991,0.068000000,,,,,,
+536870912,62.318913,0.070000000,,,,,,
+536870912,62.322953,0.072000000,,,,,,
+536870912,62.325861,0.074000000,,,,,,
+536870912,62.326257,0.076000000,,,,,,
+536870912,62.330620,0.078000000,,,,,,
+536870912,62.332588,0.080000000,,,,,,
+536870912,62.333384,0.082000000,,,,,,
+536870912,62.333771,0.084000000,,,,,,
+536870912,62.335209,0.086000000,,,,,,
+536870912,62.335476,0.088000000,,,,,,
+536870912,62.339166,0.090000000,,,,,,
+536870912,62.350567,0.092000000,,,,,,
+536870912,62.353663,0.094000000,,,,,,
+536870912,62.355935,0.096000000,,,,,,
+536870912,62.364315,0.098000000,,,,,,
+536870912,62.369384,0.100000000,,,,,,
+536870912,62.370466,0.102000000,,,,,,
+536870912,62.371309,0.104000000,,,,,,
+536870912,62.378726,0.106000000,,,,,,
+536870912,62.381274,0.108000000,,,,,,
+536870912,62.382812,0.110000000,,,,,,
+536870912,62.384657,0.112000000,,,,,,
+536870912,62.385667,0.114000000,,,,,,
+536870912,62.388391,0.116000000,,,,,,
+536870912,62.396783,0.118000000,,,,,,
+536870912,62.401027,0.120000000,,,,,,
+536870912,62.403578,0.122000000,,,,,,
+536870912,62.408084,0.124000000,,,,,,
+536870912,62.410136,0.126000000,,,,,,
+536870912,62.411288,0.128000000,,,,,,
+536870912,62.411837,0.130000000,,,,,,
+536870912,62.412857,0.132000000,,,,,,
+536870912,62.415058,0.134000000,,,,,,
+536870912,62.415332,0.136000000,,,,,,
+536870912,62.416403,0.138000000,,,,,,
+536870912,62.421176,0.140000000,,,,,,
+536870912,62.422839,0.142000000,,,,,,
+536870912,62.424527,0.144000000,,,,,,
+536870912,62.424694,0.146000000,,,,,,
+536870912,62.428797,0.148000000,,,,,,
+536870912,62.432563,0.150000000,,,,,,
+536870912,62.432666,0.152000000,,,,,,
+536870912,62.434002,0.154000000,,,,,,
+536870912,62.434742,0.156000000,,,,,,
+536870912,62.436766,0.158000000,,,,,,
+536870912,62.438804,0.160000000,,,,,,
+536870912,62.439228,0.162000000,,,,,,
+536870912,62.439295,0.164000000,,,,,,
+536870912,62.439731,0.166000000,,,,,,
+536870912,62.441645,0.168000000,,,,,,
+536870912,62.442165,0.170000000,,,,,,
+536870912,62.446029,0.172000000,,,,,,
+536870912,62.447580,0.174000000,,,,,,
+536870912,62.447880,0.176000000,,,,,,
+536870912,62.449359,0.178000000,,,,,,
+536870912,62.450325,0.180000000,,,,,,
+536870912,62.455221,0.182000000,,,,,,
+536870912,62.455261,0.184000000,,,,,,
+536870912,62.457675,0.186000000,,,,,,
+536870912,62.463230,0.188000000,,,,,,
+536870912,62.463288,0.190000000,,,,,,
+536870912,62.469022,0.192000000,,,,,,
+536870912,62.472523,0.194000000,,,,,,
+536870912,62.472676,0.196000000,,,,,,
+536870912,62.473495,0.198000000,,,,,,
+536870912,62.474981,0.200000000,,,,,,
+536870912,62.478105,0.202000000,,,,,,
+536870912,62.478265,0.204000000,,,,,,
+536870912,62.478677,0.206000000,,,,,,
+536870912,62.479207,0.208000000,,,,,,
+536870912,62.480129,0.210000000,,,,,,
+536870912,62.480349,0.212000000,,,,,,
+536870912,62.481109,0.214000000,,,,,,
+536870912,62.482651,0.216000000,,,,,,
+536870912,62.487730,0.218000000,,,,,,
+536870912,62.488099,0.220000000,,,,,,
+536870912,62.489315,0.222000000,,,,,,
+536870912,62.489951,0.224000000,,,,,,
+536870912,62.493079,0.226000000,,,,,,
+536870912,62.494681,0.228000000,,,,,,
+536870912,62.496412,0.230000000,,,,,,
+536870912,62.496659,0.232000000,,,,,,
+536870912,62.498890,0.234000000,,,,,,
+536870912,62.502175,0.236000000,,,,,,
+536870912,62.503510,0.238000000,,,,,,
+536870912,62.506144,0.240000000,,,,,,
+536870912,62.507739,0.242000000,,,,,,
+536870912,62.508295,0.244000000,,,,,,
+536870912,62.513958,0.246000000,,,,,,
+536870912,62.514527,0.248000000,,,,,,
+536870912,62.514986,0.250000000,,,,,,
+536870912,62.516329,0.252000000,,,,,,
+536870912,62.518747,0.254000000,,,,,,
+536870912,62.519180,0.256000000,,,,,,
+536870912,62.519459,0.258000000,,,,,,
+536870912,62.523417,0.260000000,,,,,,
+536870912,62.523836,0.262000000,,,,,,
+536870912,62.525505,0.264000000,,,,,,
+536870912,62.526484,0.266000000,,,,,,
+536870912,62.527839,0.268000000,,,,,,
+536870912,62.529262,0.270000000,,,,,,
+536870912,62.529361,0.272000000,,,,,,
+536870912,62.532528,0.274000000,,,,,,
+536870912,62.533501,0.276000000,,,,,,
+536870912,62.533964,0.278000000,,,,,,
+536870912,62.533974,0.280000000,,,,,,
+536870912,62.534184,0.282000000,,,,,,
+536870912,62.535563,0.284000000,,,,,,
+536870912,62.538613,0.286000000,,,,,,
+536870912,62.539719,0.288000000,,,,,,
+536870912,62.540852,0.290000000,,,,,,
+536870912,62.541721,0.292000000,,,,,,
+536870912,62.541768,0.294000000,,,,,,
+536870912,62.542120,0.296000000,,,,,,
+536870912,62.542160,0.298000000,,,,,,
+536870912,62.542557,0.300000000,,,,,,
+536870912,62.543189,0.302000000,,,,,,
+536870912,62.545001,0.304000000,,,,,,
+536870912,62.545827,0.306000000,,,,,,
+536870912,62.545987,0.308000000,,,,,,
+536870912,62.546490,0.310000000,,,,,,
+536870912,62.547216,0.312000000,,,,,,
+536870912,62.547552,0.314000000,,,,,,
+536870912,62.547835,0.316000000,,,,,,
+536870912,62.549004,0.318000000,,,,,,
+536870912,62.549671,0.320000000,,,,,,
+536870912,62.549701,0.322000000,,,,,,
+536870912,62.550700,0.324000000,,,,,,
+536870912,62.552178,0.326000000,,,,,,
+536870912,62.557444,0.328000000,,,,,,
+536870912,62.557944,0.330000000,,,,,,
+536870912,62.558493,0.332000000,,,,,,
+536870912,62.558650,0.334000000,,,,,,
+536870912,62.558849,0.336000000,,,,,,
+536870912,62.560245,0.338000000,,,,,,
+536870912,62.564218,0.340000000,,,,,,
+536870912,62.564235,0.342000000,,,,,,
+536870912,62.564245,0.344000000,,,,,,
+536870912,62.564581,0.346000000,,,,,,
+536870912,62.564798,0.348000000,,,,,,
+536870912,62.565514,0.350000000,,,,,,
+536870912,62.566193,0.352000000,,,,,,
+536870912,62.566710,0.354000000,,,,,,
+536870912,62.569417,0.356000000,,,,,,
+536870912,62.569721,0.358000000,,,,,,
+536870912,62.572787,0.360000000,,,,,,
+536870912,62.572928,0.362000000,,,,,,
+536870912,62.573117,0.364000000,,,,,,
+536870912,62.573197,0.366000000,,,,,,
+536870912,62.573317,0.368000000,,,,,,
+536870912,62.574500,0.370000000,,,,,,
+536870912,62.574845,0.372000000,,,,,,
+536870912,62.575529,0.374000000,,,,,,
+536870912,62.575925,0.376000000,,,,,,
+536870912,62.578119,0.378000000,,,,,,
+536870912,62.580338,0.380000000,,,,,,
+536870912,62.580345,0.382000000,,,,,,
+536870912,62.581887,0.384000000,,,,,,
+536870912,62.582024,0.386000000,,,,,,
+536870912,62.582626,0.388000000,,,,,,
+536870912,62.582706,0.390000000,,,,,,
+536870912,62.583878,0.392000000,,,,,,
+536870912,62.584804,0.394000000,,,,,,
+536870912,62.586296,0.396000000,,,,,,
+536870912,62.586769,0.398000000,,,,,,
+536870912,62.588754,0.400000000,,,,,,
+536870912,62.588818,0.402000000,,,,,,
+536870912,62.588838,0.404000000,,,,,,
+536870912,62.589706,0.406000000,,,,,,
+536870912,62.589763,0.408000000,,,,,,
+536870912,62.592182,0.410000000,,,,,,
+536870912,62.592863,0.412000000,,,,,,
+536870912,62.594279,0.414000000,,,,,,
+536870912,62.594400,0.416000000,,,,,,
+536870912,62.594952,0.418000000,,,,,,
+536870912,62.600187,0.420000000,,,,,,
+536870912,62.602179,0.422000000,,,,,,
+536870912,62.604078,0.424000000,,,,,,
+536870912,62.605107,0.426000000,,,,,,
+536870912,62.606322,0.428000000,,,,,,
+536870912,62.607058,0.430000000,,,,,,
+536870912,62.607168,0.432000000,,,,,,
+536870912,62.608377,0.434000000,,,,,,
+536870912,62.608381,0.436000000,,,,,,
+536870912,62.608484,0.438000000,,,,,,
+536870912,62.610269,0.440000000,,,,,,
+536870912,62.611788,0.442000000,,,,,,
+536870912,62.613086,0.444000000,,,,,,
+536870912,62.614423,0.446000000,,,,,,
+536870912,62.615908,0.448000000,,,,,,
+536870912,62.616294,0.450000000,,,,,,
+536870912,62.621626,0.452000000,,,,,,
+536870912,62.621796,0.454000000,,,,,,
+536870912,62.624220,0.456000000,,,,,,
+536870912,62.625436,0.458000000,,,,,,
+536870912,62.626102,0.460000000,,,,,,
+536870912,62.626293,0.462000000,,,,,,
+536870912,62.627934,0.464000000,,,,,,
+536870912,62.630808,0.466000000,,,,,,
+536870912,62.631501,0.468000000,,,,,,
+536870912,62.632127,0.470000000,,,,,,
+536870912,62.632583,0.472000000,,,,,,
+536870912,62.633213,0.474000000,,,,,,
+536870912,62.634045,0.476000000,,,,,,
+536870912,62.634968,0.478000000,,,,,,
+536870912,62.635814,0.480000000,,,,,,
+536870912,62.636890,0.482000000,,,,,,
+536870912,62.637859,0.484000000,,,,,,
+536870912,62.637905,0.486000000,,,,,,
+536870912,62.638212,0.488000000,,,,,,
+536870912,62.639431,0.490000000,,,,,,
+536870912,62.640969,0.492000000,,,,,,
+536870912,62.642382,0.494000000,,,,,,
+536870912,62.642588,0.496000000,,,,,,
+536870912,62.646179,0.498000000,,,,,,
+536870912,62.646212,0.500000000,,,,,,
+536870912,62.647177,0.502000000,,,,,,
+536870912,62.649046,0.504000000,,,,,,
+536870912,62.650012,0.506000000,,,,,,
+536870912,62.650012,0.508000000,,,,,,
+536870912,62.650518,0.510000000,,,,,,
+536870912,62.651418,0.512000000,,,,,,
+536870912,62.652091,0.514000000,,,,,,
+536870912,62.653932,0.516000000,,,,,,
+536870912,62.656923,0.518000000,,,,,,
+536870912,62.658089,0.520000000,,,,,,
+536870912,62.664777,0.522000000,,,,,,
+536870912,62.665865,0.524000000,,,,,,
+536870912,62.666295,0.526000000,,,,,,
+536870912,62.666921,0.528000000,,,,,,
+536870912,62.667008,0.530000000,,,,,,
+536870912,62.668810,0.532000000,,,,,,
+536870912,62.669379,0.534000000,,,,,,
+536870912,62.670804,0.536000000,,,,,,
+536870912,62.671747,0.538000000,,,,,,
+536870912,62.672902,0.540000000,,,,,,
+536870912,62.676516,0.542000000,,,,,,
+536870912,62.676689,0.544000000,,,,,,
+536870912,62.677309,0.546000000,,,,,,
+536870912,62.677549,0.548000000,,,,,,
+536870912,62.678931,0.550000000,,,,,,
+536870912,62.679880,0.552000000,,,,,,
+536870912,62.680226,0.554000000,,,,,,
+536870912,62.680513,0.556000000,,,,,,
+536870912,62.680639,0.558000000,,,,,,
+536870912,62.680750,0.560000000,,,,,,
+536870912,62.681548,0.562000000,,,,,,
+536870912,62.682102,0.564000000,,,,,,
+536870912,62.683454,0.566000000,,,,,,
+536870912,62.683497,0.568000000,,,,,,
+536870912,62.685812,0.570000000,,,,,,
+536870912,62.685868,0.572000000,,,,,,
+536870912,62.686447,0.574000000,,,,,,
+536870912,62.688616,0.576000000,,,,,,
+536870912,62.689228,0.578000000,,,,,,
+536870912,62.689409,0.580000000,,,,,,
+536870912,62.690258,0.582000000,,,,,,
+536870912,62.690574,0.584000000,,,,,,
+536870912,62.691697,0.586000000,,,,,,
+536870912,62.694411,0.588000000,,,,,,
+536870912,62.695587,0.590000000,,,,,,
+536870912,62.696280,0.592000000,,,,,,
+536870912,62.697292,0.594000000,,,,,,
+536870912,62.697615,0.596000000,,,,,,
+536870912,62.697951,0.598000000,,,,,,
+536870912,62.698327,0.600000000,,,,,,
+536870912,62.700423,0.602000000,,,,,,
+536870912,62.701908,0.604000000,,,,,,
+536870912,62.701985,0.606000000,,,,,,
+536870912,62.704899,0.608000000,,,,,,
+536870912,62.704995,0.610000000,,,,,,
+536870912,62.705855,0.612000000,,,,,,
+536870912,62.708296,0.614000000,,,,,,
+536870912,62.708645,0.616000000,,,,,,
+536870912,62.711717,0.618000000,,,,,,
+536870912,62.711720,0.620000000,,,,,,
+536870912,62.713422,0.622000000,,,,,,
+536870912,62.714081,0.624000000,,,,,,
+536870912,62.718095,0.626000000,,,,,,
+536870912,62.720639,0.628000000,,,,,,
+536870912,62.721089,0.630000000,,,,,,
+536870912,62.725671,0.632000000,,,,,,
+536870912,62.725861,0.634000000,,,,,,
+536870912,62.727093,0.636000000,,,,,,
+536870912,62.727237,0.638000000,,,,,,
+536870912,62.727829,0.640000000,,,,,,
+536870912,62.728146,0.642000000,,,,,,
+536870912,62.729018,0.644000000,,,,,,
+536870912,62.729651,0.646000000,,,,,,
+536870912,62.729947,0.648000000,,,,,,
+536870912,62.730361,0.650000000,,,,,,
+536870912,62.730791,0.652000000,,,,,,
+536870912,62.731366,0.654000000,,,,,,
+536870912,62.733388,0.656000000,,,,,,
+536870912,62.733694,0.658000000,,,,,,
+536870912,62.733764,0.660000000,,,,,,
+536870912,62.734044,0.662000000,,,,,,
+536870912,62.738454,0.664000000,,,,,,
+536870912,62.739579,0.666000000,,,,,,
+536870912,62.741331,0.668000000,,,,,,
+536870912,62.742944,0.670000000,,,,,,
+536870912,62.744142,0.672000000,,,,,,
+536870912,62.746201,0.674000000,,,,,,
+536870912,62.751229,0.676000000,,,,,,
+536870912,62.751326,0.678000000,,,,,,
+536870912,62.751735,0.680000000,,,,,,
+536870912,62.753804,0.682000000,,,,,,
+536870912,62.754363,0.684000000,,,,,,
+536870912,62.756212,0.686000000,,,,,,
+536870912,62.757261,0.688000000,,,,,,
+536870912,62.760378,0.690000000,,,,,,
+536870912,62.760738,0.692000000,,,,,,
+536870912,62.761524,0.694000000,,,,,,
+536870912,62.762543,0.696000000,,,,,,
+536870912,62.763066,0.698000000,,,,,,
+536870912,62.764595,0.700000000,,,,,,
+536870912,62.765667,0.702000000,,,,,,
+536870912,62.768318,0.704000000,,,,,,
+536870912,62.769897,0.706000000,,,,,,
+536870912,62.773077,0.708000000,,,,,,
+536870912,62.773314,0.710000000,,,,,,
+536870912,62.773361,0.712000000,,,,,,
+536870912,62.776428,0.714000000,,,,,,
+536870912,62.779532,0.716000000,,,,,,
+536870912,62.780018,0.718000000,,,,,,
+536870912,62.781617,0.720000000,,,,,,
+536870912,62.783888,0.722000000,,,,,,
+536870912,62.785367,0.724000000,,,,,,
+536870912,62.785693,0.726000000,,,,,,
+536870912,62.785897,0.728000000,,,,,,
+536870912,62.786236,0.730000000,,,,,,
+536870912,62.786592,0.732000000,,,,,,
+536870912,62.787075,0.734000000,,,,,,
+536870912,62.787149,0.736000000,,,,,,
+536870912,62.791672,0.738000000,,,,,,
+536870912,62.791795,0.740000000,,,,,,
+536870912,62.794033,0.742000000,,,,,,
+536870912,62.794227,0.744000000,,,,,,
+536870912,62.796261,0.746000000,,,,,,
+536870912,62.798826,0.748000000,,,,,,
+536870912,62.800671,0.750000000,,,,,,
+536870912,62.801267,0.752000000,,,,,,
+536870912,62.801547,0.754000000,,,,,,
+536870912,62.802146,0.756000000,,,,,,
+536870912,62.802539,0.758000000,,,,,,
+536870912,62.802879,0.760000000,,,,,,
+536870912,62.804091,0.762000000,,,,,,
+536870912,62.804774,0.764000000,,,,,,
+536870912,62.805197,0.766000000,,,,,,
+536870912,62.807078,0.768000000,,,,,,
+536870912,62.807122,0.770000000,,,,,,
+536870912,62.808381,0.772000000,,,,,,
+536870912,62.810079,0.774000000,,,,,,
+536870912,62.810612,0.776000000,,,,,,
+536870912,62.812054,0.778000000,,,,,,
+536870912,62.812750,0.780000000,,,,,,
+536870912,62.818679,0.782000000,,,,,,
+536870912,62.818725,0.784000000,,,,,,
+536870912,62.819388,0.786000000,,,,,,
+536870912,62.825203,0.788000000,,,,,,
+536870912,62.825782,0.790000000,,,,,,
+536870912,62.830069,0.792000000,,,,,,
+536870912,62.830566,0.794000000,,,,,,
+536870912,62.833153,0.796000000,,,,,,
+536870912,62.835608,0.798000000,,,,,,
+536870912,62.848929,0.800000000,,,,,,
+536870912,62.851114,0.802000000,,,,,,
+536870912,62.853509,0.804000000,,,,,,
+536870912,62.855561,0.806000000,,,,,,
+536870912,62.855877,0.808000000,,,,,,
+536870912,62.858625,0.810000000,,,,,,
+536870912,62.858792,0.812000000,,,,,,
+536870912,62.862625,0.814000000,,,,,,
+536870912,62.863360,0.816000000,,,,,,
+536870912,62.865652,0.818000000,,,,,,
+536870912,62.870965,0.820000000,,,,,,
+536870912,62.872860,0.822000000,,,,,,
+536870912,62.872949,0.824000000,,,,,,
+536870912,62.873396,0.826000000,,,,,,
+536870912,62.873542,0.828000000,,,,,,
+536870912,62.875480,0.830000000,,,,,,
+536870912,62.879057,0.832000000,,,,,,
+536870912,62.884013,0.834000000,,,,,,
+536870912,62.884779,0.836000000,,,,,,
+536870912,62.885199,0.838000000,,,,,,
+536870912,62.890121,0.840000000,,,,,,
+536870912,62.891373,0.842000000,,,,,,
+536870912,62.891899,0.844000000,,,,,,
+536870912,62.892116,0.846000000,,,,,,
+536870912,62.893508,0.848000000,,,,,,
+536870912,62.895713,0.850000000,,,,,,
+536870912,62.902778,0.852000000,,,,,,
+536870912,62.903463,0.854000000,,,,,,
+536870912,62.908543,0.856000000,,,,,,
+536870912,62.908809,0.858000000,,,,,,
+536870912,62.913852,0.860000000,,,,,,
+536870912,62.914608,0.862000000,,,,,,
+536870912,62.914824,0.864000000,,,,,,
+536870912,62.918914,0.866000000,,,,,,
+536870912,62.923446,0.868000000,,,,,,
+536870912,62.925298,0.870000000,,,,,,
+536870912,62.929012,0.872000000,,,,,,
+536870912,62.931123,0.874000000,,,,,,
+536870912,62.934840,0.876000000,,,,,,
+536870912,62.936775,0.878000000,,,,,,
+536870912,62.937704,0.880000000,,,,,,
+536870912,62.941834,0.882000000,,,,,,
+536870912,62.945061,0.884000000,,,,,,
+536870912,62.946387,0.886000000,,,,,,
+536870912,62.959419,0.888000000,,,,,,
+536870912,62.965014,0.890000000,,,,,,
+536870912,62.966980,0.892000000,,,,,,
+536870912,62.972531,0.894000000,,,,,,
+536870912,62.977907,0.896000000,,,,,,
+536870912,62.981294,0.898000000,,,,,,
+536870912,62.982650,0.900000000,,,,,,
+536870912,62.984421,0.902000000,,,,,,
+536870912,62.985177,0.904000000,,,,,,
+536870912,62.987958,0.906000000,,,,,,
+536870912,62.998492,0.908000000,,,,,,
+536870912,63.001890,0.910000000,,,,,,
+536870912,63.003721,0.912000000,,,,,,
+536870912,63.015685,0.914000000,,,,,,
+536870912,63.020087,0.916000000,,,,,,
+536870912,63.020347,0.918000000,,,,,,
+536870912,63.021730,0.920000000,,,,,,
+536870912,63.023574,0.922000000,,,,,,
+536870912,63.024823,0.924000000,,,,,,
+536870912,63.025736,0.926000000,,,,,,
+536870912,63.026353,0.928000000,,,,,,
+536870912,63.028091,0.930000000,,,,,,
+536870912,63.031471,0.932000000,,,,,,
+536870912,63.035128,0.934000000,,,,,,
+536870912,63.042286,0.936000000,,,,,,
+536870912,63.048517,0.938000000,,,,,,
+536870912,63.057806,0.940000000,,,,,,
+536870912,63.058195,0.942000000,,,,,,
+536870912,63.062488,0.944000000,,,,,,
+536870912,63.074874,0.946000000,,,,,,
+536870912,63.075397,0.948000000,,,,,,
+536870912,63.081472,0.950000000,,,,,,
+536870912,63.084153,0.952000000,,,,,,
+536870912,63.086085,0.954000000,,,,,,
+536870912,63.129698,0.956000000,,,,,,
+536870912,63.132656,0.958000000,,,,,,
+536870912,63.133721,0.960000000,,,,,,
+536870912,63.134707,0.962000000,,,,,,
+536870912,63.165921,0.964000000,,,,,,
+536870912,63.168508,0.966000000,,,,,,
+536870912,63.172788,0.968000000,,,,,,
+536870912,63.180418,0.970000000,,,,,,
+536870912,63.184155,0.972000000,,,,,,
+536870912,63.184538,0.974000000,,,,,,
+536870912,63.194962,0.976000000,,,,,,
+536870912,63.267072,0.978000000,,,,,,
+536870912,63.267841,0.980000000,,,,,,
+536870912,63.325052,0.982000000,,,,,,
+536870912,63.443644,0.984000000,,,,,,
+536870912,63.447465,0.986000000,,,,,,
+536870912,63.447784,0.988000000,,,,,,
+536870912,63.489795,0.990000000,,,,,,
+536870912,63.509868,0.992000000,,,,,,
+536870912,63.551153,0.994000000,,,,,,
+536870912,63.607369,0.996000000,,,,,,
+536870912,63.771759,0.998000000,,,,,,
+536870912,63.898955,1.000000000,,,,,,
+1073741824,127.446531,0.002237136,,,,,,
+1073741824,127.515396,0.004474273,,,,,,
+1073741824,127.599091,0.006711409,,,,,,
+1073741824,127.604247,0.008948546,,,,,,
+1073741824,127.648256,0.011185682,,,,,,
+1073741824,127.684083,0.013422819,,,,,,
+1073741824,127.714940,0.015659955,,,,,,
+1073741824,127.716858,0.017897092,,,,,,
+1073741824,127.774269,0.020134228,,,,,,
+1073741824,127.790205,0.022371365,,,,,,
+1073741824,127.824060,0.024608501,,,,,,
+1073741824,127.832440,0.026845638,,,,,,
+1073741824,127.859530,0.029082774,,,,,,
+1073741824,127.870195,0.031319911,,,,,,
+1073741824,127.874178,0.033557047,,,,,,
+1073741824,127.876599,0.035794183,,,,,,
+1073741824,127.884552,0.038031320,,,,,,
+1073741824,127.885125,0.040268456,,,,,,
+1073741824,127.892918,0.042505593,,,,,,
+1073741824,127.893984,0.044742729,,,,,,
+1073741824,127.914157,0.046979866,,,,,,
+1073741824,127.934537,0.049217002,,,,,,
+1073741824,127.935579,0.051454139,,,,,,
+1073741824,127.943785,0.053691275,,,,,,
+1073741824,127.944112,0.055928412,,,,,,
+1073741824,127.948641,0.058165548,,,,,,
+1073741824,127.950805,0.060402685,,,,,,
+1073741824,127.956108,0.062639821,,,,,,
+1073741824,127.956854,0.064876957,,,,,,
+1073741824,127.957104,0.067114094,,,,,,
+1073741824,127.960185,0.069351230,,,,,,
+1073741824,127.968264,0.071588367,,,,,,
+1073741824,127.968604,0.073825503,,,,,,
+1073741824,127.972604,0.076062640,,,,,,
+1073741824,127.973376,0.078299776,,,,,,
+1073741824,127.974289,0.080536913,,,,,,
+1073741824,127.976328,0.082774049,,,,,,
+1073741824,127.977210,0.085011186,,,,,,
+1073741824,127.987158,0.087248322,,,,,,
+1073741824,127.990602,0.089485459,,,,,,
+1073741824,127.990905,0.091722595,,,,,,
+1073741824,127.991351,0.093959732,,,,,,
+1073741824,127.993060,0.096196868,,,,,,
+1073741824,127.996603,0.098434004,,,,,,
+1073741824,128.002158,0.100671141,,,,,,
+1073741824,128.013339,0.102908277,,,,,,
+1073741824,128.023144,0.105145414,,,,,,
+1073741824,128.031647,0.107382550,,,,,,
+1073741824,128.037838,0.109619687,,,,,,
+1073741824,128.037945,0.111856823,,,,,,
+1073741824,128.044730,0.114093960,,,,,,
+1073741824,128.051194,0.116331096,,,,,,
+1073741824,128.055880,0.118568233,,,,,,
+1073741824,128.056730,0.120805369,,,,,,
+1073741824,128.058615,0.123042506,,,,,,
+1073741824,128.058697,0.125279642,,,,,,
+1073741824,128.059880,0.127516779,,,,,,
+1073741824,128.068290,0.129753915,,,,,,
+1073741824,128.069519,0.131991051,,,,,,
+1073741824,128.071636,0.134228188,,,,,,
+1073741824,128.071950,0.136465324,,,,,,
+1073741824,128.076142,0.138702461,,,,,,
+1073741824,128.076283,0.140939597,,,,,,
+1073741824,128.076359,0.143176734,,,,,,
+1073741824,128.078071,0.145413870,,,,,,
+1073741824,128.082507,0.147651007,,,,,,
+1073741824,128.083550,0.149888143,,,,,,
+1073741824,128.084382,0.152125280,,,,,,
+1073741824,128.086913,0.154362416,,,,,,
+1073741824,128.087496,0.156599553,,,,,,
+1073741824,128.088782,0.158836689,,,,,,
+1073741824,128.089221,0.161073826,,,,,,
+1073741824,128.089378,0.163310962,,,,,,
+1073741824,128.089438,0.165548098,,,,,,
+1073741824,128.093558,0.167785235,,,,,,
+1073741824,128.101168,0.170022371,,,,,,
+1073741824,128.102507,0.172259508,,,,,,
+1073741824,128.103130,0.174496644,,,,,,
+1073741824,128.108995,0.176733781,,,,,,
+1073741824,128.115426,0.178970917,,,,,,
+1073741824,128.115959,0.181208054,,,,,,
+1073741824,128.118051,0.183445190,,,,,,
+1073741824,128.119159,0.185682327,,,,,,
+1073741824,128.119968,0.187919463,,,,,,
+1073741824,128.120941,0.190156600,,,,,,
+1073741824,128.121184,0.192393736,,,,,,
+1073741824,128.122912,0.194630872,,,,,,
+1073741824,128.126367,0.196868009,,,,,,
+1073741824,128.128012,0.199105145,,,,,,
+1073741824,128.128608,0.201342282,,,,,,
+1073741824,128.129407,0.203579418,,,,,,
+1073741824,128.136951,0.205816555,,,,,,
+1073741824,128.137764,0.208053691,,,,,,
+1073741824,128.139929,0.210290828,,,,,,
+1073741824,128.141547,0.212527964,,,,,,
+1073741824,128.144625,0.214765101,,,,,,
+1073741824,128.146400,0.217002237,,,,,,
+1073741824,128.148474,0.219239374,,,,,,
+1073741824,128.149930,0.221476510,,,,,,
+1073741824,128.151342,0.223713647,,,,,,
+1073741824,128.154329,0.225950783,,,,,,
+1073741824,128.158873,0.228187919,,,,,,
+1073741824,128.159405,0.230425056,,,,,,
+1073741824,128.166596,0.232662192,,,,,,
+1073741824,128.167575,0.234899329,,,,,,
+1073741824,128.169736,0.237136465,,,,,,
+1073741824,128.169756,0.239373602,,,,,,
+1073741824,128.170772,0.241610738,,,,,,
+1073741824,128.170885,0.243847875,,,,,,
+1073741824,128.174726,0.246085011,,,,,,
+1073741824,128.177533,0.248322148,,,,,,
+1073741824,128.180281,0.250559284,,,,,,
+1073741824,128.182256,0.252796421,,,,,,
+1073741824,128.185496,0.255033557,,,,,,
+1073741824,128.188643,0.257270694,,,,,,
+1073741824,128.188844,0.259507830,,,,,,
+1073741824,128.192694,0.261744966,,,,,,
+1073741824,128.194076,0.263982103,,,,,,
+1073741824,128.195744,0.266219239,,,,,,
+1073741824,128.204850,0.268456376,,,,,,
+1073741824,128.205200,0.270693512,,,,,,
+1073741824,128.205573,0.272930649,,,,,,
+1073741824,128.208807,0.275167785,,,,,,
+1073741824,128.209869,0.277404922,,,,,,
+1073741824,128.210319,0.279642058,,,,,,
+1073741824,128.211857,0.281879195,,,,,,
+1073741824,128.214452,0.284116331,,,,,,
+1073741824,128.216783,0.286353468,,,,,,
+1073741824,128.221509,0.288590604,,,,,,
+1073741824,128.228653,0.290827740,,,,,,
+1073741824,128.229360,0.293064877,,,,,,
+1073741824,128.231738,0.295302013,,,,,,
+1073741824,128.238908,0.297539150,,,,,,
+1073741824,128.241042,0.299776286,,,,,,
+1073741824,128.243064,0.302013423,,,,,,
+1073741824,128.244193,0.304250559,,,,,,
+1073741824,128.246285,0.306487696,,,,,,
+1073741824,128.247481,0.308724832,,,,,,
+1073741824,128.249322,0.310961969,,,,,,
+1073741824,128.254262,0.313199105,,,,,,
+1073741824,128.256137,0.315436242,,,,,,
+1073741824,128.257949,0.317673378,,,,,,
+1073741824,128.261116,0.319910515,,,,,,
+1073741824,128.264912,0.322147651,,,,,,
+1073741824,128.265632,0.324384787,,,,,,
+1073741824,128.274714,0.326621924,,,,,,
+1073741824,128.275087,0.328859060,,,,,,
+1073741824,128.275957,0.331096197,,,,,,
+1073741824,128.278417,0.333333333,,,,,,
+1073741824,128.278807,0.335570470,,,,,,
+1073741824,128.280020,0.337807606,,,,,,
+1073741824,128.280106,0.340044743,,,,,,
+1073741824,128.280399,0.342281879,,,,,,
+1073741824,128.280623,0.344519016,,,,,,
+1073741824,128.283879,0.346756152,,,,,,
+1073741824,128.285098,0.348993289,,,,,,
+1073741824,128.286194,0.351230425,,,,,,
+1073741824,128.286444,0.353467562,,,,,,
+1073741824,128.289519,0.355704698,,,,,,
+1073741824,128.289664,0.357941834,,,,,,
+1073741824,128.290294,0.360178971,,,,,,
+1073741824,128.295273,0.362416107,,,,,,
+1073741824,128.297754,0.364653244,,,,,,
+1073741824,128.297904,0.366890380,,,,,,
+1073741824,128.303416,0.369127517,,,,,,
+1073741824,128.304672,0.371364653,,,,,,
+1073741824,128.307813,0.373601790,,,,,,
+1073741824,128.309818,0.375838926,,,,,,
+1073741824,128.310001,0.378076063,,,,,,
+1073741824,128.310987,0.380313199,,,,,,
+1073741824,128.312002,0.382550336,,,,,,
+1073741824,128.313198,0.384787472,,,,,,
+1073741824,128.315735,0.387024609,,,,,,
+1073741824,128.317008,0.389261745,,,,,,
+1073741824,128.318613,0.391498881,,,,,,
+1073741824,128.319845,0.393736018,,,,,,
+1073741824,128.322713,0.395973154,,,,,,
+1073741824,128.322713,0.398210291,,,,,,
+1073741824,128.324245,0.400447427,,,,,,
+1073741824,128.327067,0.402684564,,,,,,
+1073741824,128.328178,0.404921700,,,,,,
+1073741824,128.328525,0.407158837,,,,,,
+1073741824,128.336172,0.409395973,,,,,,
+1073741824,128.336542,0.411633110,,,,,,
+1073741824,128.338170,0.413870246,,,,,,
+1073741824,128.338553,0.416107383,,,,,,
+1073741824,128.339352,0.418344519,,,,,,
+1073741824,128.339703,0.420581655,,,,,,
+1073741824,128.341067,0.422818792,,,,,,
+1073741824,128.343909,0.425055928,,,,,,
+1073741824,128.344768,0.427293065,,,,,,
+1073741824,128.351142,0.429530201,,,,,,
+1073741824,128.352948,0.431767338,,,,,,
+1073741824,128.353920,0.434004474,,,,,,
+1073741824,128.354517,0.436241611,,,,,,
+1073741824,128.354746,0.438478747,,,,,,
+1073741824,128.355319,0.440715884,,,,,,
+1073741824,128.356101,0.442953020,,,,,,
+1073741824,128.358822,0.445190157,,,,,,
+1073741824,128.358903,0.447427293,,,,,,
+1073741824,128.361587,0.449664430,,,,,,
+1073741824,128.362946,0.451901566,,,,,,
+1073741824,128.363135,0.454138702,,,,,,
+1073741824,128.363931,0.456375839,,,,,,
+1073741824,128.364361,0.458612975,,,,,,
+1073741824,128.366089,0.460850112,,,,,,
+1073741824,128.367648,0.463087248,,,,,,
+1073741824,128.368514,0.465324385,,,,,,
+1073741824,128.369117,0.467561521,,,,,,
+1073741824,128.369899,0.469798658,,,,,,
+1073741824,128.370859,0.472035794,,,,,,
+1073741824,128.371329,0.474272931,,,,,,
+1073741824,128.375362,0.476510067,,,,,,
+1073741824,128.376334,0.478747204,,,,,,
+1073741824,128.382129,0.480984340,,,,,,
+1073741824,128.383771,0.483221477,,,,,,
+1073741824,128.390759,0.485458613,,,,,,
+1073741824,128.391215,0.487695749,,,,,,
+1073741824,128.401486,0.489932886,,,,,,
+1073741824,128.401736,0.492170022,,,,,,
+1073741824,128.404318,0.494407159,,,,,,
+1073741824,128.406252,0.496644295,,,,,,
+1073741824,128.406949,0.498881432,,,,,,
+1073741824,128.407445,0.501118568,,,,,,
+1073741824,128.407494,0.503355705,,,,,,
+1073741824,128.408284,0.505592841,,,,,,
+1073741824,128.408480,0.507829978,,,,,,
+1073741824,128.411867,0.510067114,,,,,,
+1073741824,128.413916,0.512304251,,,,,,
+1073741824,128.414345,0.514541387,,,,,,
+1073741824,128.416381,0.516778523,,,,,,
+1073741824,128.419374,0.519015660,,,,,,
+1073741824,128.419617,0.521252796,,,,,,
+1073741824,128.420294,0.523489933,,,,,,
+1073741824,128.421690,0.525727069,,,,,,
+1073741824,128.423598,0.527964206,,,,,,
+1073741824,128.424816,0.530201342,,,,,,
+1073741824,128.425452,0.532438479,,,,,,
+1073741824,128.427297,0.534675615,,,,,,
+1073741824,128.429009,0.536912752,,,,,,
+1073741824,128.429962,0.539149888,,,,,,
+1073741824,128.430049,0.541387025,,,,,,
+1073741824,128.431831,0.543624161,,,,,,
+1073741824,128.434178,0.545861298,,,,,,
+1073741824,128.434631,0.548098434,,,,,,
+1073741824,128.437902,0.550335570,,,,,,
+1073741824,128.437925,0.552572707,,,,,,
+1073741824,128.438721,0.554809843,,,,,,
+1073741824,128.439045,0.557046980,,,,,,
+1073741824,128.439417,0.559284116,,,,,,
+1073741824,128.442858,0.561521253,,,,,,
+1073741824,128.443561,0.563758389,,,,,,
+1073741824,128.445685,0.565995526,,,,,,
+1073741824,128.445765,0.568232662,,,,,,
+1073741824,128.446424,0.570469799,,,,,,
+1073741824,128.447990,0.572706935,,,,,,
+1073741824,128.450318,0.574944072,,,,,,
+1073741824,128.451021,0.577181208,,,,,,
+1073741824,128.451081,0.579418345,,,,,,
+1073741824,128.451937,0.581655481,,,,,,
+1073741824,128.452040,0.583892617,,,,,,
+1073741824,128.453173,0.586129754,,,,,,
+1073741824,128.454171,0.588366890,,,,,,
+1073741824,128.455723,0.590604027,,,,,,
+1073741824,128.458069,0.592841163,,,,,,
+1073741824,128.458551,0.595078300,,,,,,
+1073741824,128.462382,0.597315436,,,,,,
+1073741824,128.462595,0.599552573,,,,,,
+1073741824,128.464786,0.601789709,,,,,,
+1073741824,128.468556,0.604026846,,,,,,
+1073741824,128.468646,0.606263982,,,,,,
+1073741824,128.471310,0.608501119,,,,,,
+1073741824,128.477029,0.610738255,,,,,,
+1073741824,128.477631,0.612975391,,,,,,
+1073741824,128.478527,0.615212528,,,,,,
+1073741824,128.481415,0.617449664,,,,,,
+1073741824,128.482820,0.619686801,,,,,,
+1073741824,128.484153,0.621923937,,,,,,
+1073741824,128.484916,0.624161074,,,,,,
+1073741824,128.491011,0.626398210,,,,,,
+1073741824,128.493522,0.628635347,,,,,,
+1073741824,128.493694,0.630872483,,,,,,
+1073741824,128.494464,0.633109620,,,,,,
+1073741824,128.495450,0.635346756,,,,,,
+1073741824,128.495680,0.637583893,,,,,,
+1073741824,128.497148,0.639821029,,,,,,
+1073741824,128.502737,0.642058166,,,,,,
+1073741824,128.502897,0.644295302,,,,,,
+1073741824,128.511373,0.646532438,,,,,,
+1073741824,128.511766,0.648769575,,,,,,
+1073741824,128.513517,0.651006711,,,,,,
+1073741824,128.515409,0.653243848,,,,,,
+1073741824,128.516655,0.655480984,,,,,,
+1073741824,128.517837,0.657718121,,,,,,
+1073741824,128.520425,0.659955257,,,,,,
+1073741824,128.534127,0.662192394,,,,,,
+1073741824,128.536389,0.664429530,,,,,,
+1073741824,128.537644,0.666666667,,,,,,
+1073741824,128.538274,0.668903803,,,,,,
+1073741824,128.539070,0.671140940,,,,,,
+1073741824,128.541737,0.673378076,,,,,,
+1073741824,128.547372,0.675615213,,,,,,
+1073741824,128.548555,0.677852349,,,,,,
+1073741824,128.549018,0.680089485,,,,,,
+1073741824,128.549394,0.682326622,,,,,,
+1073741824,128.552961,0.684563758,,,,,,
+1073741824,128.555246,0.686800895,,,,,,
+1073741824,128.555549,0.689038031,,,,,,
+1073741824,128.557826,0.691275168,,,,,,
+1073741824,128.558379,0.693512304,,,,,,
+1073741824,128.558427,0.695749441,,,,,,
+1073741824,128.561578,0.697986577,,,,,,
+1073741824,128.561973,0.700223714,,,,,,
+1073741824,128.562510,0.702460850,,,,,,
+1073741824,128.568588,0.704697987,,,,,,
+1073741824,128.570736,0.706935123,,,,,,
+1073741824,128.575096,0.709172260,,,,,,
+1073741824,128.576432,0.711409396,,,,,,
+1073741824,128.588944,0.713646532,,,,,,
+1073741824,128.591619,0.715883669,,,,,,
+1073741824,128.592078,0.718120805,,,,,,
+1073741824,128.592371,0.720357942,,,,,,
+1073741824,128.595775,0.722595078,,,,,,
+1073741824,128.603235,0.724832215,,,,,,
+1073741824,128.605643,0.727069351,,,,,,
+1073741824,128.611158,0.729306488,,,,,,
+1073741824,128.613650,0.731543624,,,,,,
+1073741824,128.615521,0.733780761,,,,,,
+1073741824,128.616540,0.736017897,,,,,,
+1073741824,128.620783,0.738255034,,,,,,
+1073741824,128.622802,0.740492170,,,,,,
+1073741824,128.624531,0.742729306,,,,,,
+1073741824,128.627834,0.744966443,,,,,,
+1073741824,128.628890,0.747203579,,,,,,
+1073741824,128.634699,0.749440716,,,,,,
+1073741824,128.636430,0.751677852,,,,,,
+1073741824,128.637296,0.753914989,,,,,,
+1073741824,128.640350,0.756152125,,,,,,
+1073741824,128.642808,0.758389262,,,,,,
+1073741824,128.645299,0.760626398,,,,,,
+1073741824,128.647038,0.762863535,,,,,,
+1073741824,128.650075,0.765100671,,,,,,
+1073741824,128.653792,0.767337808,,,,,,
+1073741824,128.656797,0.769574944,,,,,,
+1073741824,128.656952,0.771812081,,,,,,
+1073741824,128.665233,0.774049217,,,,,,
+1073741824,128.674251,0.776286353,,,,,,
+1073741824,128.677699,0.778523490,,,,,,
+1073741824,128.688396,0.780760626,,,,,,
+1073741824,128.689945,0.782997763,,,,,,
+1073741824,128.690881,0.785234899,,,,,,
+1073741824,128.696176,0.787472036,,,,,,
+1073741824,128.697256,0.789709172,,,,,,
+1073741824,128.699314,0.791946309,,,,,,
+1073741824,128.709755,0.794183445,,,,,,
+1073741824,128.712159,0.796420582,,,,,,
+1073741824,128.713112,0.798657718,,,,,,
+1073741824,128.714478,0.800894855,,,,,,
+1073741824,128.714833,0.803131991,,,,,,
+1073741824,128.719087,0.805369128,,,,,,
+1073741824,128.719556,0.807606264,,,,,,
+1073741824,128.720388,0.809843400,,,,,,
+1073741824,128.724445,0.812080537,,,,,,
+1073741824,128.727120,0.814317673,,,,,,
+1073741824,128.737355,0.816554810,,,,,,
+1073741824,128.738687,0.818791946,,,,,,
+1073741824,128.740985,0.821029083,,,,,,
+1073741824,128.742763,0.823266219,,,,,,
+1073741824,128.748078,0.825503356,,,,,,
+1073741824,128.750373,0.827740492,,,,,,
+1073741824,128.754600,0.829977629,,,,,,
+1073741824,128.766013,0.832214765,,,,,,
+1073741824,128.768581,0.834451902,,,,,,
+1073741824,128.769091,0.836689038,,,,,,
+1073741824,128.770606,0.838926174,,,,,,
+1073741824,128.780211,0.841163311,,,,,,
+1073741824,128.783615,0.843400447,,,,,,
+1073741824,128.794189,0.845637584,,,,,,
+1073741824,128.801593,0.847874720,,,,,,
+1073741824,128.804554,0.850111857,,,,,,
+1073741824,128.806602,0.852348993,,,,,,
+1073741824,128.807439,0.854586130,,,,,,
+1073741824,128.811138,0.856823266,,,,,,
+1073741824,128.814413,0.859060403,,,,,,
+1073741824,128.818708,0.861297539,,,,,,
+1073741824,128.831561,0.863534676,,,,,,
+1073741824,128.843308,0.865771812,,,,,,
+1073741824,128.847934,0.868008949,,,,,,
+1073741824,128.848464,0.870246085,,,,,,
+1073741824,128.869322,0.872483221,,,,,,
+1073741824,128.874149,0.874720358,,,,,,
+1073741824,128.874238,0.876957494,,,,,,
+1073741824,128.875014,0.879194631,,,,,,
+1073741824,128.877326,0.881431767,,,,,,
+1073741824,128.879380,0.883668904,,,,,,
+1073741824,128.891433,0.885906040,,,,,,
+1073741824,128.897189,0.888143177,,,,,,
+1073741824,128.905852,0.890380313,,,,,,
+1073741824,128.910924,0.892617450,,,,,,
+1073741824,128.912622,0.894854586,,,,,,
+1073741824,128.913801,0.897091723,,,,,,
+1073741824,128.923293,0.899328859,,,,,,
+1073741824,128.929908,0.901565996,,,,,,
+1073741824,128.933548,0.903803132,,,,,,
+1073741824,128.951855,0.906040268,,,,,,
+1073741824,128.958677,0.908277405,,,,,,
+1073741824,128.965128,0.910514541,,,,,,
+1073741824,128.969664,0.912751678,,,,,,
+1073741824,128.970003,0.914988814,,,,,,
+1073741824,128.984071,0.917225951,,,,,,
+1073741824,129.017446,0.919463087,,,,,,
+1073741824,129.032084,0.921700224,,,,,,
+1073741824,129.081469,0.923937360,,,,,,
+1073741824,129.109411,0.926174497,,,,,,
+1073741824,129.143886,0.928411633,,,,,,
+1073741824,129.147676,0.930648770,,,,,,
+1073741824,129.154670,0.932885906,,,,,,
+1073741824,129.162666,0.935123043,,,,,,
+1073741824,129.231128,0.937360179,,,,,,
+1073741824,129.244644,0.939597315,,,,,,
+1073741824,129.256167,0.941834452,,,,,,
+1073741824,129.288260,0.944071588,,,,,,
+1073741824,129.343073,0.946308725,,,,,,
+1073741824,129.359483,0.948545861,,,,,,
+1073741824,129.389377,0.950782998,,,,,,
+1073741824,129.391306,0.953020134,,,,,,
+1073741824,129.467351,0.955257271,,,,,,
+1073741824,129.526508,0.957494407,,,,,,
+1073741824,129.535603,0.959731544,,,,,,
+1073741824,129.542817,0.961968680,,,,,,
+1073741824,129.586406,0.964205817,,,,,,
+1073741824,129.598053,0.966442953,,,,,,
+1073741824,129.616984,0.968680089,,,,,,
+1073741824,129.643548,0.970917226,,,,,,
+1073741824,129.647838,0.973154362,,,,,,
+1073741824,129.728956,0.975391499,,,,,,
+1073741824,129.734960,0.977628635,,,,,,
+1073741824,129.774847,0.979865772,,,,,,
+1073741824,129.789744,0.982102908,,,,,,
+1073741824,129.808484,0.984340045,,,,,,
+1073741824,129.837624,0.986577181,,,,,,
+1073741824,129.844491,0.988814318,,,,,,
+1073741824,129.860524,0.991051454,,,,,,
+1073741824,129.871994,0.993288591,,,,,,
+1073741824,129.955992,0.995525727,,,,,,
+1073741824,130.043465,0.997762864,,,,,,
+1073741824,130.074652,1.000000000,,,,,,
+2147479552,260.972931,0.002500000,,,,,,
+2147479552,261.111919,0.005000000,,,,,,
+2147479552,261.120789,0.007500000,,,,,,
+2147479552,261.196361,0.010000000,,,,,,
+2147479552,261.218512,0.012500000,,,,,,
+2147479552,261.238878,0.015000000,,,,,,
+2147479552,261.290734,0.017500000,,,,,,
+2147479552,261.304096,0.020000000,,,,,,
+2147479552,261.426415,0.022500000,,,,,,
+2147479552,261.480962,0.025000000,,,,,,
+2147479552,261.488003,0.027500000,,,,,,
+2147479552,261.491371,0.030000000,,,,,,
+2147479552,261.494331,0.032500000,,,,,,
+2147479552,261.502801,0.035000000,,,,,,
+2147479552,261.508636,0.037500000,,,,,,
+2147479552,261.522943,0.040000000,,,,,,
+2147479552,261.527636,0.042500000,,,,,,
+2147479552,261.530424,0.045000000,,,,,,
+2147479552,261.538850,0.047500000,,,,,,
+2147479552,261.540662,0.050000000,,,,,,
+2147479552,261.541002,0.052500000,,,,,,
+2147479552,261.566220,0.055000000,,,,,,
+2147479552,261.567562,0.057500000,,,,,,
+2147479552,261.597637,0.060000000,,,,,,
+2147479552,261.604718,0.062500000,,,,,,
+2147479552,261.615135,0.065000000,,,,,,
+2147479552,261.624508,0.067500000,,,,,,
+2147479552,261.627028,0.070000000,,,,,,
+2147479552,261.664370,0.072500000,,,,,,
+2147479552,261.675960,0.075000000,,,,,,
+2147479552,261.692183,0.077500000,,,,,,
+2147479552,261.694275,0.080000000,,,,,,
+2147479552,261.699450,0.082500000,,,,,,
+2147479552,261.703953,0.085000000,,,,,,
+2147479552,261.713562,0.087500000,,,,,,
+2147479552,261.736692,0.090000000,,,,,,
+2147479552,261.745018,0.092500000,,,,,,
+2147479552,261.751809,0.095000000,,,,,,
+2147479552,261.754387,0.097500000,,,,,,
+2147479552,261.754796,0.100000000,,,,,,
+2147479552,261.756631,0.102500000,,,,,,
+2147479552,261.780691,0.105000000,,,,,,
+2147479552,261.787249,0.107500000,,,,,,
+2147479552,261.796568,0.110000000,,,,,,
+2147479552,261.801234,0.112500000,,,,,,
+2147479552,261.811499,0.115000000,,,,,,
+2147479552,261.813720,0.117500000,,,,,,
+2147479552,261.815505,0.120000000,,,,,,
+2147479552,261.821337,0.122500000,,,,,,
+2147479552,261.825537,0.125000000,,,,,,
+2147479552,261.831012,0.127500000,,,,,,
+2147479552,261.835525,0.130000000,,,,,,
+2147479552,261.836740,0.132500000,,,,,,
+2147479552,261.836980,0.135000000,,,,,,
+2147479552,261.850498,0.137500000,,,,,,
+2147479552,261.850561,0.140000000,,,,,,
+2147479552,261.850588,0.142500000,,,,,,
+2147479552,261.853796,0.145000000,,,,,,
+2147479552,261.864783,0.147500000,,,,,,
+2147479552,261.868640,0.150000000,,,,,,
+2147479552,261.876983,0.152500000,,,,,,
+2147479552,261.891221,0.155000000,,,,,,
+2147479552,261.894035,0.157500000,,,,,,
+2147479552,261.894308,0.160000000,,,,,,
+2147479552,261.896690,0.162500000,,,,,,
+2147479552,261.898798,0.165000000,,,,,,
+2147479552,261.911943,0.167500000,,,,,,
+2147479552,261.912019,0.170000000,,,,,,
+2147479552,261.912836,0.172500000,,,,,,
+2147479552,261.913748,0.175000000,,,,,,
+2147479552,261.923487,0.177500000,,,,,,
+2147479552,261.925048,0.180000000,,,,,,
+2147479552,261.927260,0.182500000,,,,,,
+2147479552,261.927500,0.185000000,,,,,,
+2147479552,261.928039,0.187500000,,,,,,
+2147479552,261.928902,0.190000000,,,,,,
+2147479552,261.932302,0.192500000,,,,,,
+2147479552,261.936226,0.195000000,,,,,,
+2147479552,261.938574,0.197500000,,,,,,
+2147479552,261.940632,0.200000000,,,,,,
+2147479552,261.948133,0.202500000,,,,,,
+2147479552,261.948522,0.205000000,,,,,,
+2147479552,261.953414,0.207500000,,,,,,
+2147479552,261.959996,0.210000000,,,,,,
+2147479552,261.960448,0.212500000,,,,,,
+2147479552,261.961338,0.215000000,,,,,,
+2147479552,261.968209,0.217500000,,,,,,
+2147479552,261.978301,0.220000000,,,,,,
+2147479552,261.978484,0.222500000,,,,,,
+2147479552,261.985680,0.225000000,,,,,,
+2147479552,262.005940,0.227500000,,,,,,
+2147479552,262.007702,0.230000000,,,,,,
+2147479552,262.016834,0.232500000,,,,,,
+2147479552,262.019232,0.235000000,,,,,,
+2147479552,262.021706,0.237500000,,,,,,
+2147479552,262.022535,0.240000000,,,,,,
+2147479552,262.028697,0.242500000,,,,,,
+2147479552,262.035758,0.245000000,,,,,,
+2147479552,262.038019,0.247500000,,,,,,
+2147479552,262.038136,0.250000000,,,,,,
+2147479552,262.039602,0.252500000,,,,,,
+2147479552,262.050233,0.255000000,,,,,,
+2147479552,262.053883,0.257500000,,,,,,
+2147479552,262.057263,0.260000000,,,,,,
+2147479552,262.063341,0.262500000,,,,,,
+2147479552,262.068833,0.265000000,,,,,,
+2147479552,262.068856,0.267500000,,,,,,
+2147479552,262.073709,0.270000000,,,,,,
+2147479552,262.077200,0.272500000,,,,,,
+2147479552,262.077403,0.275000000,,,,,,
+2147479552,262.087391,0.277500000,,,,,,
+2147479552,262.094758,0.280000000,,,,,,
+2147479552,262.098205,0.282500000,,,,,,
+2147479552,262.099281,0.285000000,,,,,,
+2147479552,262.103367,0.287500000,,,,,,
+2147479552,262.103947,0.290000000,,,,,,
+2147479552,262.104117,0.292500000,,,,,,
+2147479552,262.106834,0.295000000,,,,,,
+2147479552,262.111370,0.297500000,,,,,,
+2147479552,262.112153,0.300000000,,,,,,
+2147479552,262.116219,0.302500000,,,,,,
+2147479552,262.116640,0.305000000,,,,,,
+2147479552,262.124613,0.307500000,,,,,,
+2147479552,262.128868,0.310000000,,,,,,
+2147479552,262.132046,0.312500000,,,,,,
+2147479552,262.132086,0.315000000,,,,,,
+2147479552,262.134394,0.317500000,,,,,,
+2147479552,262.137604,0.320000000,,,,,,
+2147479552,262.138241,0.322500000,,,,,,
+2147479552,262.143387,0.325000000,,,,,,
+2147479552,262.162601,0.327500000,,,,,,
+2147479552,262.167477,0.330000000,,,,,,
+2147479552,262.170873,0.332500000,,,,,,
+2147479552,262.180818,0.335000000,,,,,,
+2147479552,262.185927,0.337500000,,,,,,
+2147479552,262.189125,0.340000000,,,,,,
+2147479552,262.190107,0.342500000,,,,,,
+2147479552,262.191789,0.345000000,,,,,,
+2147479552,262.193980,0.347500000,,,,,,
+2147479552,262.202077,0.350000000,,,,,,
+2147479552,262.205234,0.352500000,,,,,,
+2147479552,262.211379,0.355000000,,,,,,
+2147479552,262.212221,0.357500000,,,,,,
+2147479552,262.212635,0.360000000,,,,,,
+2147479552,262.215003,0.362500000,,,,,,
+2147479552,262.215625,0.365000000,,,,,,
+2147479552,262.218663,0.367500000,,,,,,
+2147479552,262.230539,0.370000000,,,,,,
+2147479552,262.242882,0.372500000,,,,,,
+2147479552,262.243488,0.375000000,,,,,,
+2147479552,262.247115,0.377500000,,,,,,
+2147479552,262.254192,0.380000000,,,,,,
+2147479552,262.254736,0.382500000,,,,,,
+2147479552,262.262462,0.385000000,,,,,,
+2147479552,262.272530,0.387500000,,,,,,
+2147479552,262.273077,0.390000000,,,,,,
+2147479552,262.274918,0.392500000,,,,,,
+2147479552,262.275595,0.395000000,,,,,,
+2147479552,262.278512,0.397500000,,,,,,
+2147479552,262.281043,0.400000000,,,,,,
+2147479552,262.287448,0.402500000,,,,,,
+2147479552,262.287584,0.405000000,,,,,,
+2147479552,262.297586,0.407500000,,,,,,
+2147479552,262.298908,0.410000000,,,,,,
+2147479552,262.300510,0.412500000,,,,,,
+2147479552,262.302688,0.415000000,,,,,,
+2147479552,262.303804,0.417500000,,,,,,
+2147479552,262.309888,0.420000000,,,,,,
+2147479552,262.310181,0.422500000,,,,,,
+2147479552,262.312706,0.425000000,,,,,,
+2147479552,262.315860,0.427500000,,,,,,
+2147479552,262.321495,0.430000000,,,,,,
+2147479552,262.323120,0.432500000,,,,,,
+2147479552,262.328775,0.435000000,,,,,,
+2147479552,262.342021,0.437500000,,,,,,
+2147479552,262.352016,0.440000000,,,,,,
+2147479552,262.359199,0.442500000,,,,,,
+2147479552,262.361059,0.445000000,,,,,,
+2147479552,262.370040,0.447500000,,,,,,
+2147479552,262.375209,0.450000000,,,,,,
+2147479552,262.378650,0.452500000,,,,,,
+2147479552,262.383386,0.455000000,,,,,,
+2147479552,262.406533,0.457500000,,,,,,
+2147479552,262.406742,0.460000000,,,,,,
+2147479552,262.407975,0.462500000,,,,,,
+2147479552,262.417417,0.465000000,,,,,,
+2147479552,262.422369,0.467500000,,,,,,
+2147479552,262.422536,0.470000000,,,,,,
+2147479552,262.429137,0.472500000,,,,,,
+2147479552,262.429500,0.475000000,,,,,,
+2147479552,262.435915,0.477500000,,,,,,
+2147479552,262.435938,0.480000000,,,,,,
+2147479552,262.436101,0.482500000,,,,,,
+2147479552,262.450119,0.485000000,,,,,,
+2147479552,262.459994,0.487500000,,,,,,
+2147479552,262.460088,0.490000000,,,,,,
+2147479552,262.460471,0.492500000,,,,,,
+2147479552,262.470765,0.495000000,,,,,,
+2147479552,262.472214,0.497500000,,,,,,
+2147479552,262.472314,0.500000000,,,,,,
+2147479552,262.492773,0.502500000,,,,,,
+2147479552,262.506438,0.505000000,,,,,,
+2147479552,262.506822,0.507500000,,,,,,
+2147479552,262.508959,0.510000000,,,,,,
+2147479552,262.514777,0.512500000,,,,,,
+2147479552,262.515997,0.515000000,,,,,,
+2147479552,262.524973,0.517500000,,,,,,
+2147479552,262.535304,0.520000000,,,,,,
+2147479552,262.535587,0.522500000,,,,,,
+2147479552,262.536802,0.525000000,,,,,,
+2147479552,262.546491,0.527500000,,,,,,
+2147479552,262.552749,0.530000000,,,,,,
+2147479552,262.554294,0.532500000,,,,,,
+2147479552,262.561725,0.535000000,,,,,,
+2147479552,262.566760,0.537500000,,,,,,
+2147479552,262.569648,0.540000000,,,,,,
+2147479552,262.571549,0.542500000,,,,,,
+2147479552,262.583749,0.545000000,,,,,,
+2147479552,262.587147,0.547500000,,,,,,
+2147479552,262.589311,0.550000000,,,,,,
+2147479552,262.589571,0.552500000,,,,,,
+2147479552,262.592782,0.555000000,,,,,,
+2147479552,262.593648,0.557500000,,,,,,
+2147479552,262.600868,0.560000000,,,,,,
+2147479552,262.607376,0.562500000,,,,,,
+2147479552,262.609074,0.565000000,,,,,,
+2147479552,262.617428,0.567500000,,,,,,
+2147479552,262.626003,0.570000000,,,,,,
+2147479552,262.636218,0.572500000,,,,,,
+2147479552,262.641117,0.575000000,,,,,,
+2147479552,262.648357,0.577500000,,,,,,
+2147479552,262.648385,0.580000000,,,,,,
+2147479552,262.655059,0.582500000,,,,,,
+2147479552,262.662153,0.585000000,,,,,,
+2147479552,262.668031,0.587500000,,,,,,
+2147479552,262.692461,0.590000000,,,,,,
+2147479552,262.693749,0.592500000,,,,,,
+2147479552,262.712386,0.595000000,,,,,,
+2147479552,262.721862,0.597500000,,,,,,
+2147479552,262.722501,0.600000000,,,,,,
+2147479552,262.735986,0.602500000,,,,,,
+2147479552,262.746105,0.605000000,,,,,,
+2147479552,262.755180,0.607500000,,,,,,
+2147479552,262.755220,0.610000000,,,,,,
+2147479552,262.765315,0.612500000,,,,,,
+2147479552,262.778057,0.615000000,,,,,,
+2147479552,262.779943,0.617500000,,,,,,
+2147479552,262.794264,0.620000000,,,,,,
+2147479552,262.795420,0.622500000,,,,,,
+2147479552,262.797897,0.625000000,,,,,,
+2147479552,262.802833,0.627500000,,,,,,
+2147479552,262.808425,0.630000000,,,,,,
+2147479552,262.840531,0.632500000,,,,,,
+2147479552,262.844518,0.635000000,,,,,,
+2147479552,262.849940,0.637500000,,,,,,
+2147479552,262.866169,0.640000000,,,,,,
+2147479552,262.888337,0.642500000,,,,,,
+2147479552,262.892067,0.645000000,,,,,,
+2147479552,262.904521,0.647500000,,,,,,
+2147479552,262.904610,0.650000000,,,,,,
+2147479552,262.919008,0.652500000,,,,,,
+2147479552,262.935500,0.655000000,,,,,,
+2147479552,262.942750,0.657500000,,,,,,
+2147479552,262.950661,0.660000000,,,,,,
+2147479552,262.955467,0.662500000,,,,,,
+2147479552,262.960113,0.665000000,,,,,,
+2147479552,262.963603,0.667500000,,,,,,
+2147479552,262.981388,0.670000000,,,,,,
+2147479552,262.990790,0.672500000,,,,,,
+2147479552,262.991126,0.675000000,,,,,,
+2147479552,262.993678,0.677500000,,,,,,
+2147479552,263.000549,0.680000000,,,,,,
+2147479552,263.010653,0.682500000,,,,,,
+2147479552,263.019482,0.685000000,,,,,,
+2147479552,263.036192,0.687500000,,,,,,
+2147479552,263.040378,0.690000000,,,,,,
+2147479552,263.063222,0.692500000,,,,,,
+2147479552,263.064398,0.695000000,,,,,,
+2147479552,263.078185,0.697500000,,,,,,
+2147479552,263.094173,0.700000000,,,,,,
+2147479552,263.102126,0.702500000,,,,,,
+2147479552,263.106499,0.705000000,,,,,,
+2147479552,263.113615,0.707500000,,,,,,
+2147479552,263.119740,0.710000000,,,,,,
+2147479552,263.121543,0.712500000,,,,,,
+2147479552,263.130838,0.715000000,,,,,,
+2147479552,263.173032,0.717500000,,,,,,
+2147479552,263.201917,0.720000000,,,,,,
+2147479552,263.205192,0.722500000,,,,,,
+2147479552,263.208445,0.725000000,,,,,,
+2147479552,263.209847,0.727500000,,,,,,
+2147479552,263.260491,0.730000000,,,,,,
+2147479552,263.293130,0.732500000,,,,,,
+2147479552,263.300850,0.735000000,,,,,,
+2147479552,263.372309,0.737500000,,,,,,
+2147479552,263.458376,0.740000000,,,,,,
+2147479552,263.476521,0.742500000,,,,,,
+2147479552,263.623942,0.745000000,,,,,,
+2147479552,263.666802,0.747500000,,,,,,
+2147479552,263.669311,0.750000000,,,,,,
+2147479552,263.673481,0.752500000,,,,,,
+2147479552,263.789509,0.755000000,,,,,,
+2147479552,263.790138,0.757500000,,,,,,
+2147479552,263.829491,0.760000000,,,,,,
+2147479552,263.860601,0.762500000,,,,,,
+2147479552,263.862593,0.765000000,,,,,,
+2147479552,263.872954,0.767500000,,,,,,
+2147479552,263.887592,0.770000000,,,,,,
+2147479552,263.917510,0.772500000,,,,,,
+2147479552,263.922216,0.775000000,,,,,,
+2147479552,263.928720,0.777500000,,,,,,
+2147479552,263.935794,0.780000000,,,,,,
+2147479552,263.945389,0.782500000,,,,,,
+2147479552,263.975880,0.785000000,,,,,,
+2147479552,263.984712,0.787500000,,,,,,
+2147479552,263.995703,0.790000000,,,,,,
+2147479552,264.027100,0.792500000,,,,,,
+2147479552,264.050654,0.795000000,,,,,,
+2147479552,264.085517,0.797500000,,,,,,
+2147479552,264.110296,0.800000000,,,,,,
+2147479552,264.119029,0.802500000,,,,,,
+2147479552,264.126695,0.805000000,,,,,,
+2147479552,264.130985,0.807500000,,,,,,
+2147479552,264.133763,0.810000000,,,,,,
+2147479552,264.136387,0.812500000,,,,,,
+2147479552,264.156996,0.815000000,,,,,,
+2147479552,264.185862,0.817500000,,,,,,
+2147479552,264.188542,0.820000000,,,,,,
+2147479552,264.190575,0.822500000,,,,,,
+2147479552,264.206351,0.825000000,,,,,,
+2147479552,264.209025,0.827500000,,,,,,
+2147479552,264.227979,0.830000000,,,,,,
+2147479552,264.271842,0.832500000,,,,,,
+2147479552,264.274906,0.835000000,,,,,,
+2147479552,264.286213,0.837500000,,,,,,
+2147479552,264.304881,0.840000000,,,,,,
+2147479552,264.314509,0.842500000,,,,,,
+2147479552,264.327118,0.845000000,,,,,,
+2147479552,264.333310,0.847500000,,,,,,
+2147479552,264.339028,0.850000000,,,,,,
+2147479552,264.351667,0.852500000,,,,,,
+2147479552,264.366632,0.855000000,,,,,,
+2147479552,264.379055,0.857500000,,,,,,
+2147479552,264.409988,0.860000000,,,,,,
+2147479552,264.424186,0.862500000,,,,,,
+2147479552,264.440223,0.865000000,,,,,,
+2147479552,264.448092,0.867500000,,,,,,
+2147479552,264.507765,0.870000000,,,,,,
+2147479552,264.527815,0.872500000,,,,,,
+2147479552,264.557912,0.875000000,,,,,,
+2147479552,264.636512,0.877500000,,,,,,
+2147479552,264.680914,0.880000000,,,,,,
+2147479552,264.715209,0.882500000,,,,,,
+2147479552,264.726619,0.885000000,,,,,,
+2147479552,264.782292,0.887500000,,,,,,
+2147479552,264.787194,0.890000000,,,,,,
+2147479552,264.830038,0.892500000,,,,,,
+2147479552,264.889491,0.895000000,,,,,,
+2147479552,264.890820,0.897500000,,,,,,
+2147479552,264.934825,0.900000000,,,,,,
+2147479552,264.942039,0.902500000,,,,,,
+2147479552,264.983178,0.905000000,,,,,,
+2147479552,265.024846,0.907500000,,,,,,
+2147479552,265.029688,0.910000000,,,,,,
+2147479552,265.097228,0.912500000,,,,,,
+2147479552,265.162345,0.915000000,,,,,,
+2147479552,265.178099,0.917500000,,,,,,
+2147479552,265.268452,0.920000000,,,,,,
+2147479552,265.370389,0.922500000,,,,,,
+2147479552,265.437359,0.925000000,,,,,,
+2147479552,265.476259,0.927500000,,,,,,
+2147479552,265.546246,0.930000000,,,,,,
+2147479552,265.580418,0.932500000,,,,,,
+2147479552,265.592301,0.935000000,,,,,,
+2147479552,265.664703,0.937500000,,,,,,
+2147479552,265.729693,0.940000000,,,,,,
+2147479552,265.763242,0.942500000,,,,,,
+2147479552,265.777866,0.945000000,,,,,,
+2147479552,265.972221,0.947500000,,,,,,
+2147479552,266.018585,0.950000000,,,,,,
+2147479552,266.038995,0.952500000,,,,,,
+2147479552,266.047414,0.955000000,,,,,,
+2147479552,266.088952,0.957500000,,,,,,
+2147479552,266.132198,0.960000000,,,,,,
+2147479552,266.230858,0.962500000,,,,,,
+2147479552,266.294996,0.965000000,,,,,,
+2147479552,266.379908,0.967500000,,,,,,
+2147479552,266.493032,0.970000000,,,,,,
+2147479552,266.507906,0.972500000,,,,,,
+2147479552,266.635838,0.975000000,,,,,,
+2147479552,266.767899,0.977500000,,,,,,
+2147479552,266.769784,0.980000000,,,,,,
+2147479552,266.974649,0.982500000,,,,,,
+2147479552,266.997876,0.985000000,,,,,,
+2147479552,267.322457,0.987500000,,,,,,
+2147479552,267.421793,0.990000000,,,,,,
+2147479552,267.709202,0.992500000,,,,,,
+2147479552,267.747960,0.995000000,,,,,,
+2147479552,267.801091,0.997500000,,,,,,
+2147479552,267.934154,1.000000000,,,,,,
|
