def run_benchmark(name, arguments_list, precision, num_runs, platform, device): binary = "./clblast_client_x" + name # Loops over sub-benchmarks per benchmark results = [] for arguments in arguments_list: # Sets the arguments constant_arguments = ["-warm_up", "-q", "-no_abbrv", "-cblas 0", "-cublas 0"] common_arguments = ["-precision %d" % precision, "-runs %d" % num_runs] opencl_arguments = ["-platform %d" % platform, "-device %d" % device] all_arguments = opencl_arguments + common_arguments + constant_arguments for name, value in arguments.items(): all_arguments.append("-" + name + " " + str(value)) # Calls the binary and parses the results benchmark_output = utils.run_binary(binary, all_arguments) result = utils.parse_results(benchmark_output) # For half-precision: also runs single-precision for comparison if precision == 16: all_arguments = [arg if arg != "-precision 16" else "-precision 32" for arg in all_arguments] benchmark_output = utils.run_binary(binary, all_arguments) result_extra = utils.parse_results(benchmark_output) for index in range(len(min(result, result_extra))): result[index]["GBs_1_FP32"] = result_extra[index]["GBs_1"] result[index]["GBs_2"] = result_extra[index]["GBs_2"] result[index]["GFLOPS_1_FP32"] = result_extra[index]["GFLOPS_1"] result[index]["GFLOPS_2"] = result_extra[index]["GFLOPS_2"] results.extend(result) return results
return BPF(text=text, cflags=flags) if __name__ == "__main__": signal.signal(signal.SIGINT, lambda x, y: sys.exit()) signal.signal(signal.SIGTERM, lambda x, y: sys.exit()) parser = argparse.ArgumentParser() # parser.add_argument( # "-p", "--pid", required=1, type=int, help="The PID of webserver.py" # ) args = parser.parse_args() # Check for root if os.geteuid() != 0: parser.error("Need superuser privileges to run") bpfbox = BPFBoxRules() try: pid = run_binary(f"python3 {WEBSERVER_PATH}") b = bpfbox.load_program(pid=pid) os.kill(pid, signal.SIGUSR1) except: os.kill(pid, signal.SIGKILL) sys.exit(-1) while 1: b.trace_print() time.sleep(0.1)