From b20bf61184cc69459b47020139134e7461f5a3c0 Mon Sep 17 00:00:00 2001 From: victoryang00 Date: Thu, 29 Feb 2024 14:39:24 -0800 Subject: [PATCH] push linux bench results --- artifact/bench_comparison.py | 212 +++++++++---- artifact/bench_policy.py | 301 +++++++++++-------- artifact/bench_policy_multithread.py | 190 ++++++++---- artifact/result/comparison.csv | 201 +++++++++++++ artifact/result/performance_multithread.pdf | Bin 19556 -> 17785 bytes artifact/result/performance_singlethread.pdf | Bin 0 -> 18121 bytes artifact/result/policy.csv | 19 ++ artifact/result/policy_multithread.csv | 19 ++ 8 files changed, 712 insertions(+), 230 deletions(-) create mode 100644 artifact/result/comparison.csv create mode 100644 artifact/result/performance_singlethread.pdf create mode 100644 artifact/result/policy.csv create mode 100644 artifact/result/policy_multithread.csv diff --git a/artifact/bench_comparison.py b/artifact/bench_comparison.py index b0336af..d1ac834 100644 --- a/artifact/bench_comparison.py +++ b/artifact/bench_comparison.py @@ -18,7 +18,6 @@ "tc", "bt", "cg", - "ep", "ft", "lu", "mg", @@ -44,7 +43,6 @@ "nas", "nas", "nas", - "nas", "redis", "hdastar", ] @@ -59,8 +57,7 @@ ["-g20", "-vn300"], ["-g20", "-vn300"], ["-g20", "-vn300"], - ["-g20", "-n300"], - [], + ["-g20", "-n1"], [], [], [], @@ -88,14 +85,11 @@ "OMP_NUM_THREADS=4", "OMP_NUM_THREADS=4", "OMP_NUM_THREADS=4", - "OMP_NUM_THREADS=4", "a=b", "a=b", ] - pool = Pool(processes=1) - def run_mvvm(): results = [] results1 = [] @@ -124,7 +118,7 @@ def run_hcontainer(): results1.append( pool.apply_async( common_util.run_hcontainer, - (aot, "linpack", arg[i], envs[i]), + (aot, folder[i], arg[i], envs[i]), ) ) # print the results @@ -133,9 +127,19 @@ def run_hcontainer(): print(exec, output) lines = output.split("\n") for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) + if line.__contains__("elapsed"): + # Split the time string into minutes, seconds, and milliseconds + minutes, seconds = line.split(" ")[2].replace("elapsed", "").split(":") + seconds, milliseconds = seconds.split(".") + + # Convert each part to seconds (note that milliseconds are converted and added as a fraction of a second) + total_seconds = ( + int(minutes) * 60 + int(seconds) + int(milliseconds) / 1000 + ) + + print(total_seconds) + exec_time = total_seconds + results.append((exec, exec_time)) return results @@ -148,7 +152,7 @@ def run_qemu_x86_64(): results1.append( pool.apply_async( common_util.run_qemu_x86_64, - (aot, "linpack", arg[i], envs[i]), + (aot, folder[i], arg[i], envs[i]), ) ) # print the results @@ -157,9 +161,19 @@ def run_qemu_x86_64(): print(exec, output) lines = output.split("\n") for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) + if line.__contains__("elapsed"): + # Split the time string into minutes, seconds, and milliseconds + minutes, seconds = line.split(" ")[2].replace("elapsed", "").split(":") + seconds, milliseconds = seconds.split(".") + + # Convert each part to seconds (note that milliseconds are converted and added as a fraction of a second) + total_seconds = ( + int(minutes) * 60 + int(seconds) + int(milliseconds) / 1000 + ) + + print(total_seconds) + exec_time = total_seconds + results.append((exec, exec_time)) return results @@ -172,7 +186,7 @@ def run_qemu_aarch64(): results1.append( pool.apply_async( common_util.run_qemu_aarch64, - (aot, "linpack", arg[i], envs[i]), + (aot, folder[i], arg[i], envs[i]), ) ) results1 = [x.get() for x in results1] @@ -180,10 +194,19 @@ def run_qemu_aarch64(): print(exec, output) lines = output.split("\n") for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) + if line.__contains__("elapsed"): + # Split the time string into minutes, seconds, and milliseconds + minutes, seconds = line.split(" ")[2].replace("elapsed", "").split(":") + seconds, milliseconds = seconds.split(".") + + # Convert each part to seconds (note that milliseconds are converted and added as a fraction of a second) + total_seconds = ( + int(minutes) * 60 + int(seconds) + int(milliseconds) / 1000 + ) + print(total_seconds) + exec_time = total_seconds + results.append((exec, exec_time)) return results @@ -196,7 +219,7 @@ def run_native(): results1.append( pool.apply_async( common_util.run_native, - (aot, "linpack", arg[i], envs[i]), + (aot, folder[i], arg[i], envs[i]), ) ) results1 = [x.get() for x in results1] @@ -204,9 +227,19 @@ def run_native(): print(exec, output) lines = output.split("\n") for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) + if line.__contains__("elapsed"): + # Split the time string into minutes, seconds, and milliseconds + minutes, seconds = line.split(" ")[2].replace("elapsed", "").split(":") + seconds, milliseconds = seconds.split(".") + + # Convert each part to seconds (note that milliseconds are converted and added as a fraction of a second) + total_seconds = ( + int(minutes) * 60 + int(seconds) + int(milliseconds) / 1000 + ) + + print(total_seconds) + exec_time = total_seconds + results.append((exec, exec_time)) return results @@ -232,32 +265,111 @@ def write_to_csv(filename): native_results[idx][1], ] ) - +def read_from_csv(filename): + with open(filename, "r") as csvfile: + reader = csv.reader(csvfile) + next(reader) + results = [] + for row in reader: + results.append((row[0], float(row[1]), float(row[2]), float(row[3]), float(row[4]), float(row[5]))) + return results def plot(results): - # Number of groups and bar width - n = len(results) - bar_width = 0.2 + font = {'size': 18} + + plt.rc('font', **font) + workloads = defaultdict(list) + for workload,hcontainer_values, mvvm_values, qemu_x86_64_values,qemu_aarch64_values,native_values in results: + workloads[ + workload.replace("OMP_NUM_THREADS=", "") + .replace("-g20", "") + .replace("-n300", "") + .replace(" -f ", "") + .replace("-vn300", "") + .replace("maze-6404.txt", "") + .replace("stories110M.bin", "") + .replace("-z tokenizer.bin -t 0.0", "") + .strip() + ].append(( hcontainer_values, mvvm_values, qemu_x86_64_values,qemu_aarch64_values,native_values)) - index = np.arange(n) - fig, ax = plt.subplots(figsize=(12, 6)) + statistics = {} + for workload, times in workloads.items(): + hcontainer_values, mvvm_values, qemu_x86_64_values,qemu_aarch64_values,native_values= zip(*times) + statistics[workload] = { + "hcontainer_median": np.median(hcontainer_values), + "mvvm_median": np.median(mvvm_values), + "qemu_x86_64_median" :np.median(qemu_x86_64_values), + "qemu_aarch64_median" :np.median(qemu_aarch64_values), + "native_median" :np.median(native_values), + "hcontainer_std": np.std(hcontainer_values), + "mvvm_std": np.std(mvvm_values), + "qemu_x86_64_std" :np.std(qemu_x86_64_values), + "qemu_aarch64_std" :np.std(qemu_aarch64_values), + "native_std" :np.std(native_values), + } - # Unpack the results for each environment - hcontainer_values, mvvm_values, native_values, qemu_values = zip(*results) + fig, ax = plt.subplots(figsize=(20, 10)) + index = np.arange(len(statistics)) + bar_width = 0.7/5 - # Plotting - bar1 = ax.bar(index, hcontainer_values, bar_width, label="HContainer") - bar2 = ax.bar(index + bar_width, mvvm_values, bar_width, label="MVVM") - bar3 = ax.bar(index + 2 * bar_width, native_values, bar_width, label="Native") - bar4 = ax.bar(index + 3 * bar_width, qemu_values, bar_width, label="QEMU") + for i, (workload, stats) in enumerate(statistics.items()): + ax.bar( + index[i], + stats["hcontainer_median"], + bar_width, + yerr=stats["hcontainer_std"], + capsize=5, + color="blue", + label="hcontainer" if i == 0 else "", + ) + ax.bar( + index[i] + bar_width, + stats["mvvm_median"], + bar_width, + yerr=stats["mvvm_std"], + capsize=5, + color="red", + label="mvvm" if i == 0 else "", + ) + ax.bar( + index[i]+ bar_width *2, + stats["qemu_x86_64_median"], + bar_width, + yerr=stats["qemu_x86_64_std"], + capsize=5, + color="brown", + label="qemu_x86_64" if i == 0 else "", + ) + ax.bar( + index[i]+ bar_width*3, + stats["qemu_aarch64_median"], + bar_width, + yerr=stats["qemu_aarch64_std"], + capsize=5, + color="purple", + label="qemu_aarch64" if i == 0 else "", + ) + ax.bar( + index[i]+ bar_width*4, + stats["native_median"], + bar_width, + yerr=stats["native_std"], + capsize=5, + color="cyan", + label="native" if i == 0 else "", + ) + # ax.set_xlabel(workload) + ticklabel = (x for x in list(statistics.keys())) + print(statistics.keys()) + ax.set_xticks(index) - ax.set_ylabel("Latency (s)") - ax.set_xticks(index + bar_width * 1.5) - ax.set_xticklabels(cmd) + ax.set_xticklabels(ticklabel,fontsize =10) + ax.set_ylabel("Execution time (s)") ax.legend() - # Display the plot - # plt.show() + # add text at upper left + ax.legend(loc="upper right") + plt.savefig("performance_comparison.pdf") @@ -265,23 +377,11 @@ def plot(results): mvvm_results = run_mvvm() native_results = run_native() qemu_x86_64_results = run_qemu_x86_64() - # print the results + # # print the results qemu_aarch64_results = run_qemu_aarch64() hcontainer_results = run_hcontainer() write_to_csv("comparison.csv") - results = [] - for idx in range(len(mvvm_results)): - # Assuming the second element of each tuple is the performance metric, - # and that all lists are aligned and of the same length. - combined_result = ( - hcontainer_results[idx][1], # HContainer value - mvvm_results[idx][1], # MVVM value - qemu_x86_64_results[idx][1] - + qemu_aarch64_results[idx][ - 1 - ], # Sum of QEMU x86_64 and QEMU AArch64 values - native_results[idx][1], # Native value - ) - results.append(combined_result) + + results = read_from_csv("comparison.csv") plot(results) diff --git a/artifact/bench_policy.py b/artifact/bench_policy.py index 19497cb..4eff8c1 100644 --- a/artifact/bench_policy.py +++ b/artifact/bench_policy.py @@ -1,11 +1,12 @@ import csv import common_util from multiprocessing import Pool +import matplotlib.pyplot as plt +import numpy as np +from collections import defaultdict cmd = [ - "linpack", "llama", - "rgbd_tum", "bc", "bfs", "cc", @@ -22,11 +23,10 @@ "mg", "sp", "redis", + "hdastar", ] folder = [ - "linpack", "llama", - "ORB_SLAM2", "gapbs", "gapbs", "gapbs", @@ -43,19 +43,18 @@ "nas", "nas", "redis", + "hdastar", ] arg = [ - [], ["stories110M.bin", "-z", "tokenizer.bin", "-t", "0.0"], - ["./ORBvoc.txt,", "./TUM3.yaml", "./", "./associations/fr1_xyz.txt"], ["-g20", "-vn300"], ["-g20", "-vn300"], - ["-f", "./road.sg", "-n300"], ["-g20", "-vn300"], ["-g20", "-vn300"], ["-g20", "-vn300"], ["-g20", "-vn300"], - ["-g20", "-n300"], + ["-g20", "-vn300"], + ["-g20", "-n1"], [], [], [], @@ -64,11 +63,11 @@ [], [], [], + ["maze-6404.txt", "8"], ] envs = [ - "a=b", "OMP_NUM_THREADS=1", - "a=b", + "OMP_NUM_THREADS=1", "OMP_NUM_THREADS=1", "OMP_NUM_THREADS=1", "OMP_NUM_THREADS=1", @@ -85,13 +84,21 @@ "OMP_NUM_THREADS=1", "OMP_NUM_THREADS=1", "a=b", + "a=b", ] -pool = Pool(processes=1) +pool = Pool(processes=16) def run_mvvm(): + results_0 = [] + results_1 = [] + results_2 = [] + results_3 = [] + results_4 = [] + results_5 = [] results = [] + name = [] results1 = [] for _ in range(common_util.trial): for i in range(len(cmd)): @@ -102,141 +109,189 @@ def run_mvvm(): ) # print the results results1 = [x.get() for x in results1] + exec_time = "" for exec, output in results1: lines = output.split("\n") for line in lines: if line.__contains__("Execution time:"): exec_time = line.split(" ")[-2] - print(exec, exec_time) - results.append((exec, exec_time)) # discover 4 aot_variant - return results - - -def run_hcontainer(): - results = [] - results1 = [] - for _ in range(common_util.trial): - for i in range(len(cmd)): - aot = cmd[i] - results1.append( - pool.apply_async( - common_util.run_hcontainer, - (aot, "linpack", arg[i], envs[i]), - ) - ) - # print the results - results1 = [x.get() for x in results1] - for exec, output in results1: - print(exec, output) - lines = output.split("\n") - for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) - return results - - -def run_qemu_x86_64(): - results = [] - results1 = [] - for _ in range(common_util.trial): - for i in range(len(cmd)): - aot = cmd[i] - results1.append( - pool.apply_async( - common_util.run_qemu_x86_64, - (aot, "linpack", arg[i], envs[i]), - ) - ) - # print the results - results1 = [x.get() for x in results1] - for exec, output in results1: - print(exec, output) - lines = output.split("\n") - for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) - return results - - -def run_qemu_aarch64(): - results = [] - results1 = [] - for _ in range(common_util.trial): - for i in range(len(cmd)): - aot = cmd[i] - results1.append( - pool.apply_async( - common_util.run_qemu_aarch64, - (aot, folder[i], arg[i], envs[i]), - ) - ) - results1 = [x.get() for x in results1] - for exec, output in results1: - print(exec, output) - lines = output.split("\n") - for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) + # print(exec, exec_time) - return results - - -def run_native(): - results = [] - results1 = [] - for _ in range(common_util.trial): - for i in range(len(cmd)): - aot = cmd[i] - results1.append( - pool.apply_async( - common_util.run_native, - (aot, folder[i], arg[i], envs[i]), - ) - ) - results1 = [x.get() for x in results1] - for exec, output in results1: - print(exec, output) - lines = output.split("\n") - for line in lines: - if line.__contains__("user"): - exec_time = float(line.split(" ")[0].replace("user", "")) - results.append((exec, exec_time)) + for a in common_util.aot_variant: + if exec.__contains__(a): + if a == "-pure.aot": + results_1.append(exec_time) + elif a == "-stack.aot": + results_2.append(exec_time) + elif a == "-ckpt-every-dirty.aot": + results_3.append(exec_time) + elif a == "-ckpt-loop.aot": + results_4.append(exec_time) + elif a == "-ckpt-loop-dirty.aot": + results_5.append(exec_time) + elif a==".aot" and not exec.__contains__("-pure.aot") and not exec.__contains__("-stack.aot")and not exec.__contains__("-ckpt-every-dirty.aot") and not exec.__contains__("-ckpt-loop.aot") and not exec.__contains__("-ckpt-loop-dirty.aot"): + results_0.append(exec_time) + name.append(exec) + results = list( + zip( + name, + results_0, + results_1, + results_2, + results_3, + results_4, + results_5, + ) + ) + print(results) + print("results_0",results_0) + print("results_1",results_1) return results def write_to_csv(filename): # 'data' is a list of tuples, e.g., [(checkpoint_result_0, checkpoint_result_1, restore_result_2), ...] - with open(filename, "a+", newline="") as csvfile: writer = csv.writer(csvfile) # Optionally write headers writer.writerow( - ["name", "mvvm", "hcontainer", "qemu_x86_64", "qemu_aach64", "native"] + [ + "name", + "aot", + "pure.aot", + "stack.aot", + "ckpt-every-dirty.aot", + "ckpt-loop.aot", + "ckpt-loop-dirty.aot", + ] ) # Write the data for idx, row in enumerate(mvvm_results): writer.writerow( - [ - row[0], - row[1], - hcontainer_results[idx][1], - qemu_x86_64_results[idx][1], - qemu_aarch64_results[idx][1], - native_results[idx][1], - ] + [row[0], row[1], row[2], row[3], row[4], row[5], row[6]] ) +def read_from_csv(filename): + with open(filename, "r") as csvfile: + reader = csv.reader(csvfile) + next(reader) + results = [] + for row in reader: + results.append((row[0], float(row[1]), float(row[2]), float(row[3]), float(row[4]), float(row[5]), float(row[6]))) + return results + +def plot(results): + font = {'size': 18} + + plt.rc('font', **font) + workloads = defaultdict(list) + for workload,pure, aot, stack,ckpt_every,loop,loop_dirty in results: + workloads[ + workload.replace("OMP_NUM_THREADS=", "") + .replace("-g20", "") + .replace("-n300", "") + .replace(" -f ", "") + .replace("-vn300", "") + .replace("maze-6404.txt", "") + .replace("stories110M.bin", "") + .replace("-z tokenizer.bin -t 0.0", "") + .strip() + ].append(( pure,aot, stack,loop,loop_dirty,ckpt_every)) + + statistics = {} + for workload, times in workloads.items(): + pures,aots, stacks,loops,loop_dirtys,ckpt_everys= zip(*times) + statistics[workload] = { + "pure_median": np.median(pures), + "aot_median": np.median(aots), + "loop_median" :np.median(loops), + "loop_dirty_median" :np.median(loop_dirtys), + "ckpt_every_median" :np.median(ckpt_everys), + "stack_median": np.median(stacks), + "pure_std": np.std(pures), + "aot_std": np.std(aots), + "loop_std" :np.std(loops), + "loop_dirty_std" :np.std(loop_dirtys), + "ckpt_every_std" :np.std(ckpt_everys), + "stack_std": np.std(stacks), + } + + fig, ax = plt.subplots(figsize=(20, 10)) + index = np.arange(len(statistics)) + bar_width = 0.7 + + for i, (workload, stats) in enumerate(statistics.items()): + ax.bar( + index[i], + stats["ckpt_every_median"], + bar_width, + yerr=stats["ckpt_every_std"], + capsize=5, + color="blue", + label="ckpt_every" if i == 0 else "", + ) + ax.bar( + index[i], + stats["loop_dirty_median"], + bar_width, + yerr=stats["loop_dirty_std"], + capsize=5, + color="red", + label="loop_dirty" if i == 0 else "", + ) + ax.bar( + index[i], + stats["loop_median"], + bar_width, + yerr=stats["loop_std"], + capsize=5, + color="brown", + label="loop" if i == 0 else "", + ) + ax.bar( + index[i], + stats["stack_median"], + bar_width, + yerr=stats["stack_std"], + capsize=5, + color="purple", + label="stack" if i == 0 else "", + ) + ax.bar( + index[i], + stats["aot_median"], + bar_width, + yerr=stats["aot_std"], + capsize=5, + color="cyan", + label="aot" if i == 0 else "", + ) + ax.bar( + index[i], + stats["pure_median"], + bar_width, + yerr=stats["pure_std"], + capsize=5, + color="green", + label="pure" if i == 0 else "", + ) + # ax.set_xlabel(workload) + ticklabel = (x for x in list(statistics.keys())) + print(statistics.keys()) + ax.set_xticks(index) + + ax.set_xticklabels(ticklabel,fontsize =10) + ax.set_ylabel("Execution time (s)") + ax.legend() + + # add text at upper left + ax.legend(loc="upper right") + + plt.savefig("performance_singlethread.pdf") if __name__ == "__main__": mvvm_results = run_mvvm() - native_results = run_native() - qemu_x86_64_results = run_qemu_x86_64() - # print the results - qemu_aarch64_results = run_qemu_aarch64() - hcontainer_results = run_hcontainer() - write_to_csv("policy.csv") + mvvm_results = read_from_csv("policy.csv") + plot(mvvm_results) \ No newline at end of file diff --git a/artifact/bench_policy_multithread.py b/artifact/bench_policy_multithread.py index fe24e04..11a648b 100644 --- a/artifact/bench_policy_multithread.py +++ b/artifact/bench_policy_multithread.py @@ -1,7 +1,9 @@ import csv import common_util from multiprocessing import Pool - +import matplotlib.pyplot as plt +import numpy as np +from collections import defaultdict cmd = [ "llama", @@ -20,6 +22,7 @@ "lu", "mg", "sp", + "redis", "hdastar", ] folder = [ @@ -39,6 +42,7 @@ "nas", "nas", "nas", + "redis", "hdastar", ] arg = [ @@ -50,7 +54,8 @@ ["-g20", "-vn300"], ["-g20", "-vn300"], ["-g20", "-vn300"], - ["-g20", "-n300"], + ["-g20", "-n1"], + [], [], [], [], @@ -79,9 +84,10 @@ "OMP_NUM_THREADS=4", "OMP_NUM_THREADS=4", "a=b", + "a=b", ] -pool = Pool(processes=1) +pool = Pool(processes=16) def run_mvvm(): @@ -91,7 +97,6 @@ def run_mvvm(): results_3 = [] results_4 = [] results_5 = [] - results_6 = [] results = [] name = [] results1 = [] @@ -104,6 +109,7 @@ def run_mvvm(): ) # print the results results1 = [x.get() for x in results1] + exec_time = "" for exec, output in results1: lines = output.split("\n") for line in lines: @@ -117,15 +123,20 @@ def run_mvvm(): results_1.append(exec_time) elif a == "-stack.aot": results_2.append(exec_time) - elif a == "-ckpt.aot": + elif a == "-ckpt-every-dirty.aot": results_3.append(exec_time) - elif a == "-ckpt-br.aot": - results_4.append(exec_time) elif a == "-ckpt-loop.aot": - results_5.append(exec_time) + results_4.append(exec_time) elif a == "-ckpt-loop-dirty.aot": - results_6.append(exec_time) - else: + results_5.append(exec_time) + elif ( + a == ".aot" + and not exec.__contains__("-pure.aot") + and not exec.__contains__("-stack.aot") + and not exec.__contains__("-ckpt-every-dirty.aot") + and not exec.__contains__("-ckpt-loop.aot") + and not exec.__contains__("-ckpt-loop-dirty.aot") + ): results_0.append(exec_time) name.append(exec) results = list( @@ -137,15 +148,16 @@ def run_mvvm(): results_3, results_4, results_5, - results_6, ) ) + print(results) + print("results_0", results_0) + print("results_1", results_1) return results def write_to_csv(filename): # 'data' is a list of tuples, e.g., [(checkpoint_result_0, checkpoint_result_1, restore_result_2), ...] - with open(filename, "a+", newline="") as csvfile: writer = csv.writer(csvfile) # Optionally write headers @@ -155,8 +167,7 @@ def write_to_csv(filename): "aot", "pure.aot", "stack.aot", - "ckpt.aot", - "ckpt-br.aot", + "ckpt-every-dirty.aot", "ckpt-loop.aot", "ckpt-loop-dirty.aot", ] @@ -164,57 +175,133 @@ def write_to_csv(filename): # Write the data for idx, row in enumerate(mvvm_results): - writer.writerow( - [row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]] - ) + writer.writerow([row[0], row[1], row[2], row[3], row[4], row[5], row[6]]) -import matplotlib.pyplot as plt -import numpy as np +def read_from_csv(filename): + with open(filename, "r") as csvfile: + reader = csv.reader(csvfile) + next(reader) + results = [] + for row in reader: + results.append( + ( + row[0], + float(row[1]), + float(row[2]), + float(row[3]), + float(row[4]), + float(row[5]), + float(row[6]), + ) + ) + return results def plot(results): - keys = [] - weights = {"aot": [], "stack": [], "ckpt-br": []} - for k, v in results.items(): - keys.append( - k.replace("-g15", "") + font = {"size": 18} + + plt.rc("font", **font) + workloads = defaultdict(list) + for workload, pure, aot, stack, ckpt_every, loop, loop_dirty in results: + workloads[ + workload.replace("OMP_NUM_THREADS=", "") + .replace("-g20", "") .replace("-n300", "") .replace(" -f ", "") .replace("-vn300", "") .replace("maze-6404.txt", "") - .replace("stories15M.bin", "") + .replace("stories110M.bin", "") + .replace("-z tokenizer.bin -t 0.0", "") .strip() - ) - for w in weights: - weights[w].append(v[w]) - width = 0.5 + ].append((pure, aot, stack, loop, loop_dirty, ckpt_every)) - fig, ax = plt.subplots(figsize=(20, 10)) + statistics = {} + for workload, times in workloads.items(): + pures, aots, stacks, loops, loop_dirtys, ckpt_everys = zip(*times) + statistics[workload] = { + "pure_median": np.median(pures), + "aot_median": np.median(aots), + "loop_median": np.median(loops), + "loop_dirty_median": np.median(loop_dirtys), + "ckpt_every_median": np.median(ckpt_everys), + "stack_median": np.median(stacks), + "pure_std": np.std(pures), + "aot_std": np.std(aots), + "loop_std": np.std(loops), + "loop_dirty_std": np.std(loop_dirtys), + "ckpt_every_std": np.std(ckpt_everys), + "stack_std": np.std(stacks), + } - bottom = np.zeros(len(keys)) + fig, ax = plt.subplots(figsize=(20, 10)) + index = np.arange(len(statistics)) + bar_width = 0.7 - for boolean, weight_count in weights.items(): - p = ax.bar(keys, weight_count, width, label=boolean, bottom=bottom) - bottom += weight_count + for i, (workload, stats) in enumerate(statistics.items()): + ax.bar( + index[i], + stats["ckpt_every_median"], + bar_width, + yerr=stats["ckpt_every_std"], + capsize=5, + color="blue", + label="ckpt_every" if i == 0 else "", + ) + ax.bar( + index[i], + stats["loop_dirty_median"], + bar_width, + yerr=stats["loop_dirty_std"], + capsize=5, + color="red", + label="loop_dirty" if i == 0 else "", + ) + ax.bar( + index[i], + stats["loop_median"], + bar_width, + yerr=stats["loop_std"], + capsize=5, + color="brown", + label="loop" if i == 0 else "", + ) + ax.bar( + index[i], + stats["stack_median"], + bar_width, + yerr=stats["stack_std"], + capsize=5, + color="purple", + label="stack" if i == 0 else "", + ) + ax.bar( + index[i], + stats["aot_median"], + bar_width, + yerr=stats["aot_std"], + capsize=5, + color="cyan", + label="aot" if i == 0 else "", + ) + ax.bar( + index[i], + stats["pure_median"], + bar_width, + yerr=stats["pure_std"], + capsize=5, + color="green", + label="pure" if i == 0 else "", + ) + # ax.set_xlabel(workload) + ticklabel = (x for x in list(statistics.keys())) + print(statistics.keys()) + ax.set_xticks(index) - ax.set_xticklabels(keys, rotation=45) + ax.set_xticklabels(ticklabel, fontsize=10) ax.set_ylabel("Execution time (s)") - # add note at aot - # for i in range(len(keys)): - # ax.text(i, 0, "{:.2f}".format(weights["aot"][i]), ha='center', va='bottom') - # add note at stack - # for i in range(len(keys)): - # ax.text(i, weights["aot"][i], "{:.2f}".format(weights["stack"][i]), ha='center', va='bottom') - # add note at ckpt - # for i in range(len(keys)): - # ax.text(i, weights["aot"][i] + weights["stack"][i], "{:.2f}".format(weights["ckpt"][i]), ha='center', va='bottom') - # add note at ckpt-br - # for i in range(len(keys)): - # ax.text(i, weights["aot"][i] + weights["stack"][i] + weights["ckpt"][i], "{:.2f}".format(weights["ckpt-br"][i]), ha='center', va='bottom') - # add note at total - # for i in range(len(keys)): - # ax.text(i, weights["aot"][i] + weights["stack"][i] + weights["ckpt"][i] + weights["ckpt-br"][i], "total: {:.2f}".format(weights["aot"][i] + weights["stack"][i] + weights["ckpt"][i] + weights["ckpt-br"][i]), ha='center', va='bottom') + ax.legend() + # add text at upper left ax.legend(loc="upper right") @@ -225,5 +312,6 @@ def plot(results): if __name__ == "__main__": mvvm_results = run_mvvm() - write_to_csv("policy_multithread.csv") + mvvm_results = read_from_csv("policy_multithread.csv") + plot(mvvm_results) diff --git a/artifact/result/comparison.csv b/artifact/result/comparison.csv new file mode 100644 index 0000000..7a1f5fa --- /dev/null +++ b/artifact/result/comparison.csv @@ -0,0 +1,201 @@ +name,mvvm,hcontainer,qemu_x86_64,qemu_aach64,native +a=b linpack.aot,24.082388,21.79,27.2,0.0,22.71 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,10.138146,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",1367.941913,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,190.047903,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,50.81594,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,127.07957,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,136.894316,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,48.834991,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,59.627154,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,204.963736,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,7113.13235,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,90.602382,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,33.438205,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.002892,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,10.841777,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.064322,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,25.993805,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,38.987016,0.0,0.0,0.0,0.0 +a=b redis.aot,64.788774,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,9.76762,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.621484,20.98,26.85,0.0,22.52 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,8.552259,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",1364.285099,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,186.387737,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,53.891081,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,128.792447,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,150.564071,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,48.760759,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,57.56163,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,199.633231,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,199.633231,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,67.155422,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,27.641557,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.004381,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,12.590557,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.052359,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,21.041171,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,30.441472,0.0,0.0,0.0,0.0 +a=b redis.aot,42.117153,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,10.559846,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.910717,21.12,27.59,0.0,22.82 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,9.799805,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",909.517467,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,164.767468,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,48.989388,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,109.761369,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,131.698198,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,46.969583,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,55.677192,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,188.560253,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6198.434806,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,69.367808,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,29.258614,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.003294,0.0,0.01,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,11.56995,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.056776,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,21.090338,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,26.052818,0.0,0.0,0.0,0.0 +a=b redis.aot,42.380364,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,9.004701,0.0,0.0,0.0,0.0 +a=b linpack.aot,24.033847,20.99,27.33,0.0,22.65 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,8.45239,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",906.341873,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,175.425364,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,46.350352,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,111.194177,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,131.500486,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,48.727063,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,53.370432,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,186.958318,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6195.999879,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,55.627921,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,19.636303,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.003099,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,9.605467,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.053283,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,18.72128,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,26.293765,0.0,0.0,0.0,0.0 +a=b redis.aot,42.013789,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,11.170105,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.460999,20.97,27.43,0.0,22.72 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,8.019435,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",904.830177,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,158.49395,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,45.450069,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,108.656147,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,127.835756,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,45.945252,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,53.921615,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,186.000689,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6184.791834,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,55.306797,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,20.066893,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.003958,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,10.050859,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.052323,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,19.353763,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,26.751337,0.0,0.0,0.0,0.0 +a=b redis.aot,42.124878,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,10.650773,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.961342,21.2,27.33,0.0,22.87 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,8.21943,0.0,0.0,0.01,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",904.646314,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,159.49813,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,44.72368,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,109.294925,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,125.889468,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,45.830977,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,53.311512,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,186.337035,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6287.994978,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,55.966966,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,21.333786,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.002998,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,9.185198,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.045374,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,18.537714,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,26.645092,0.0,0.0,0.0,0.0 +a=b redis.aot,41.992641,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,10.051425,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.817604,20.84,27.16,0.0,22.43 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,8.004706,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",905.42692,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,159.371217,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,45.035604,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,107.134713,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,128.738238,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,44.57929,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,53.521896,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,187.089447,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6186.078158,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,55.3074,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,20.696855,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.003897,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,9.233787,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.037878,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,19.188462,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,26.940351,0.0,0.0,0.0,0.0 +a=b redis.aot,42.859269,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,8.327588,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.924758,20.59,27.25,0.0,23.08 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,7.994786,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",904.879721,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,162.078067,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,46.892471,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,105.974455,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,105.974455,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,46.255798,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,53.428688,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,186.413671,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6183.511708,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,56.595354,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,20.946699,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.003633,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,9.300238,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.047927,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,19.303823,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,26.363517,0.0,0.0,0.0,0.0 +a=b redis.aot,42.476529,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,8.397048,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.524631,21.31,27.29,0.0,22.67 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,8.898562,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",905.223723,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,159.849893,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,45.060716,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,107.099995,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,130.644811,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,44.656258,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,54.103139,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,186.177032,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6253.2686,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,69.592975,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,21.581613,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.004264,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,11.32826,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.0513,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,25.27593,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,36.922724,0.0,0.0,0.0,0.0 +a=b redis.aot,41.937338,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,8.449882,0.0,0.0,0.0,0.0 +a=b linpack.aot,23.65656,21.26,27.41,0.0,22.56 +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,9.515054,0.0,0.0,0.0,0.0 +"a=b rgbd_tum.aot ./ORBvoc.txt, ./TUM3.yaml ./ ./associations/fr1_xyz.txt",904.770816,0.0,0.0,0.01,0.0 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,165.658404,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,45.005886,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,108.25651,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,131.395634,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,47.260684,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,58.996891,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,196.087124,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 tc.aot -g20 -n300,6188.892849,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 bt.aot,55.356305,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 cg.aot,21.253754,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ep.aot,0.003471,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 ft.aot,9.386186,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 lu.aot,0.050565,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 mg.aot,19.408496,0.0,0.0,0.0,0.0 +OMP_NUM_THREADS=4 sp.aot,26.768072,0.0,0.0,0.0,0.0 +a=b redis.aot,42.448026,0.0,0.0,0.0,0.0 +a=b hdastar.aot maze-6404.txt 8,11.108979,0.0,0.0,0.0,0.0 diff --git a/artifact/result/performance_multithread.pdf b/artifact/result/performance_multithread.pdf index 3690cbc60219221b311b5be02e77779bee9fb7a8..99c941837856b7d17e4150f1899d9e44e974c8ec 100644 GIT binary patch delta 8418 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�Y76**ha*>n4$TIXAmy^>b+_ee~i`r~dtZ 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 delta 10255 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 diff --git a/artifact/result/performance_singlethread.pdf b/artifact/result/performance_singlethread.pdf new file mode 100644 index 0000000000000000000000000000000000000000..22fe401ce51bdd61036dc5646060d3e0f9c886e0 GIT binary patch literal 18121 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 literal 0 HcmV?d00001 diff --git a/artifact/result/policy.csv b/artifact/result/policy.csv new file mode 100644 index 0000000..52fa2c8 --- /dev/null +++ b/artifact/result/policy.csv @@ -0,0 +1,19 @@ +name,aot,pure.aot,stack.aot,ckpt-every-dirty.aot,ckpt-loop.aot,ckpt-loop-dirty.aot +OMP_NUM_THREADS=1 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,36.838634,35.490774,35.35192,35.35192,198.85921,195.364888 +OMP_NUM_THREADS=1 bc.aot -g20 -vn300,605.145746,605.145746,505.868372,505.868372,2832.941772,2643.51066 +OMP_NUM_THREADS=1 bfs.aot -g20 -vn300,152.820818,152.820818,106.538025,106.538025,880.15895,810.526482 +OMP_NUM_THREADS=1 cc.aot -g20 -vn300,289.614659,289.614659,174.031847,174.031847,991.653426,1140.914195 +OMP_NUM_THREADS=1 cc_sv.aot -g20 -vn300,346.56919,346.56919,290.536631,290.536631,2054.915379,2225.318927 +OMP_NUM_THREADS=1 pr.aot -g20 -vn300,330.497569,330.497569,292.699061,292.699061,3772.003879,3664.336752 +OMP_NUM_THREADS=1 pr_spmv.aot -g20 -vn300,268.482607,268.482607,253.826483,253.826483,3341.810219,3171.734207 +OMP_NUM_THREADS=1 sssp.aot -g20 -vn300,427.322708,427.322708,358.032088,358.032088,1796.494136,1682.712455 +OMP_NUM_THREADS=1 tc.aot -g20 -n1,116.105684,116.105684,43.902305,43.902305,288.510501,283.057227 +OMP_NUM_THREADS=1 bt.aot,122.623808,74.751417,75.967604,75.967604,225.124168,226.011014 +OMP_NUM_THREADS=1 cg.aot,42.340921,31.23792,38.988279,38.988279,481.981174,490.708536 +OMP_NUM_THREADS=1 ep.aot,0.000893,0.00068,0.000762,0.000762,0.002982,0.002341 +OMP_NUM_THREADS=1 ft.aot,71.436148,65.882009,56.196119,56.196119,585.085743,608.715938 +OMP_NUM_THREADS=1 lu.aot,0.044005,0.028972,0.03122,0.03122,0.112689,0.117199 +OMP_NUM_THREADS=1 mg.aot,34.188291,24.821178,27.389655,27.389655,304.112518,304.972522 +OMP_NUM_THREADS=1 sp.aot,17.560042,3.989463,6.568757,6.568757,48.527141,49.368021 +OMP_NUM_THREADS=1 redis.aot,56.605383,11.058664,19.21135,19.21135,81.180751,83.398717 +a=b hdastar.aot maze-6404.txt 8,11.700573,3.84014,7.154896,7.154896,12.099818,11.431265 diff --git a/artifact/result/policy_multithread.csv b/artifact/result/policy_multithread.csv new file mode 100644 index 0000000..6d7b44a --- /dev/null +++ b/artifact/result/policy_multithread.csv @@ -0,0 +1,19 @@ +name,aot,pure.aot,stack.aot,ckpt-every-dirty.aot,ckpt-loop.aot,ckpt-loop-dirty.aot +OMP_NUM_THREADS=4 llama.aot stories110M.bin -z tokenizer.bin -t 0.0,14.5963,12.812015,13.699772,13.699772,65.36097,60.106478 +OMP_NUM_THREADS=4 bc.aot -g20 -vn300,359.709446,359.709446,298.675246,298.675246,2127.650568,2145.700998 +OMP_NUM_THREADS=4 bfs.aot -g20 -vn300,106.879639,106.879639,93.334658,93.334658,720.844827,856.513604 +OMP_NUM_THREADS=4 cc.aot -g20 -vn300,230.975482,230.975482,171.475179,171.475179,831.639095,871.120946 +OMP_NUM_THREADS=4 cc_sv.aot -g20 -vn300,258.028583,258.028583,188.356389,188.356389,1193.973139,1429.556867 +OMP_NUM_THREADS=4 pr.aot -g20 -vn300,76.301909,76.301909,69.720581,69.720581,1307.134211,1313.297207 +OMP_NUM_THREADS=4 pr_spmv.aot -g20 -vn300,105.883278,105.883278,93.995209,93.995209,1283.563528,1285.292838 +OMP_NUM_THREADS=4 sssp.aot -g20 -vn300,361.080028,361.080028,313.895867,313.895867,1538.667979,1477.450417 +OMP_NUM_THREADS=4 tc.aot -g20 -n1,45.019151,45.019151,26.695467,26.695467,184.657363,192.357612 +OMP_NUM_THREADS=4 bt.aot,101.446567,60.852957,71.079194,71.079194,171.828062,171.147518 +OMP_NUM_THREADS=4 cg.aot,40.125329,30.14231,30.014517,30.014517,242.833629,247.801786 +OMP_NUM_THREADS=4 ep.aot,0.006942,0.006505,0.002316,0.002316,0.003443,0.003858 +OMP_NUM_THREADS=4 ft.aot,21.8823,20.953326,21.708614,21.708614,194.725659,192.790959 +OMP_NUM_THREADS=4 lu.aot,0.084495,0.057258,0.04803,0.04803,0.120409,0.115161 +OMP_NUM_THREADS=4 mg.aot,40.292697,25.700802,23.616245,23.616245,129.772729,131.149166 +OMP_NUM_THREADS=4 sp.aot,46.831243,24.061054,36.231818,36.231818,78.63207,77.65184 +OMP_NUM_THREADS=4 redis.aot,63.897573,12.152266,23.619647,23.619647,86.61949,90.949312 +a=b hdastar.aot maze-6404.txt 8,13.713945,7.618424,6.05143,6.05143,13.373997,12.162823