def most_recent_experiment(problem_name): q = "SELECT experiment_id FROM experiments \ INNER JOIN problems ON experiments.problem_id = problems.problem_id \ WHERE problems.problem_name = '" + problem_name + "' \ ORDER BY experiments.datetime DESC LIMIT 1" return (detup(db.select_values(q)))[0]
def find_mc_context_ids2(experiment_id, strat, mls): q = "SELECT DISTINCT(context_id) FROM contexts \ WHERE experiment_id = " + str(experiment_id) + " \ AND compiler = 'pmlc' \ AND max_leaf_size = " + str(mls) + " \ AND input LIKE '%" + strat[0] + "%'" return (get.detup(db.select_values(q)))
def stat_of_par_context_id(context_id, n_procs): q = "SELECT AVG(runs.time_sec), STDDEV(runs.time_sec) \ FROM runs \ INNER JOIN contexts ON contexts.context_id = runs.context_id \ WHERE contexts.context_id = " + str(context_id) + "\ AND runs.n_procs = " + str(n_procs) return (db.select_values(q)[0])
def branch_of_context_id(context_id): q = "SELECT compiler_src_url \ FROM contexts where context_id = " + str(context_id) url = db.select_values(q)[0][0] if url == branches.SWP.url(): return (branches.SWP) else: return (branches.Trunk)
def find_context_ids(experiment_id, bench_url, bench_input, compiler_src_url, seq_compilation): q = "SELECT DISTINCT(context_id) FROM contexts \ WHERE experiment_id = " + str(experiment_id) + " \ AND bench_url = '" + bench_url + "'" + " \ AND input = '" + str(bench_input) + "'" + " \ AND compiler_src_url = '" + compiler_src_url + "' \ AND seq_compilation = " + seq_compilation return (db.select_values(q))
def parallel_times(context_id): q = "SELECT n_procs, time_sec \ FROM runs \ WHERE n_procs>0 \ AND context_id = '" + str(context_id) + "'" v = db.select_values(q) if (len(v) == 0): print("no parallel times found for context id " + context_id) print("halting") sys.exit(1) return v
def most_recent_smlnj_bench(experiment_id): q = "SELECT context_id \ FROM contexts \ INNER JOIN experiments ON contexts.experiment_id = experiments.experiment_id \ WHERE experiments.experiment_id = " + str(experiment_id) + " \ AND contexts.compiler = 'SMLNJ' \ ORDER BY experiments.datetime DESC LIMIT 1" res = detup(db.select_values(q)) if (len(res) == 0): return False elif (len(res) == 1): return res[0] else: raise Exception("expected 0 or 1 values; got more!")
def gc_stat(column_name, context_id, n_procs): q = "SELECT AVG(" + column_name + "), STDDEV(" + column_name + ") \ FROM gc INNER JOIN runs ON runs.run_id = gc.run_id \ WHERE runs.context_id = " + str( context_id) + " AND runs.n_procs = " + str(n_procs) v = db.select_values(q) if (len(v) == 0): print("no gc stats found for " + str(context_id) + " on nprocs= " + str(n_procs)) print("halting") sys.exit(1) elif (len(v) == 1): return v[0] print("get_gc_stat: bogus record") sys.exit(1)
def most_recent_pml_bench(experiment_id, branch, seq): seqStr = strictIf(seq, 'true', 'false') q = "SELECT context_id \ FROM contexts \ INNER JOIN experiments ON contexts.experiment_id = experiments.experiment_id \ WHERE experiments.experiment_id = " + str(experiment_id) + " \ AND contexts.compiler_src_url = '" + branch.url() + "' \ AND contexts.seq_compilation = " + seqStr + " \ ORDER BY experiments.datetime DESC LIMIT 1" res = detup(db.select_values(q)) if (len(res) == 0): return False elif (len(res) == 1): return res[0] else: raise Exception("expected 0 or 1 values, got more!")
def most_recent_smlnj(): retval = [] bs = distinct_bench_urls() for b in bs: q = "SELECT context_id \ FROM contexts \ WHERE bench_url='" + b + "' \ AND compiler='SMLNJ' \ ORDER BY datetime DESC \ LIMIT 1;" v = detup(db.select_values(q)) if len(v) == 0: pass # that's a python noop elif len(v) == 1: retval.append([v[0], b, 'mlton']) else: raise Exception("too many") return (retval)
def most_recent(bench, branch, seq_elision): seq = "seq_compilation" if (not (seq_elision)): seq = "NOT(" + seq + ")" q = "SELECT context_id \ FROM contexts \ WHERE bench_url='" + bench + "' \ AND compiler_src_url='" + branch.url() + "' \ AND " + seq + " \ AND input='' \ ORDER BY datetime DESC \ LIMIT 1;" v = detup(db.select_values(q)) if len(v) == 0: return False elif len(v) == 1: return v[0] else: raise Exception("too many")
def stat_of_context_id(context_id): q = "SELECT AVG(runs.time_sec), STDDEV(runs.time_sec) \ FROM runs \ INNER JOIN contexts ON contexts.context_id = runs.context_id \ WHERE contexts.context_id = " + str(context_id) return (db.select_values(q)[0])
def different_bench_urls(experiment_id): q = "SELECT DISTINCT(bench_url) FROM contexts \ INNER JOIN experiments ON experiments.experiment_id = contexts.experiment_id \ WHERE experiments.experiment_id = " + str(experiment_id) return (db.select_values(q))
def is_context_manticore(context_id): q = "SELECT compiler FROM contexts WHERE context_id = " + str(context_id) return (db.select_values(q)[0][0] == 'pmlc')
def is_context_mlton(context_id): q = "SELECT compiler FROM contexts WHERE context_id = " + str(context_id) return (db.select_values(q)[0][0] == 'mlton')
def is_context_sequential(context_id): q = "SELECT seq_compilation FROM contexts WHERE context_id = " + str( context_id) return (db.select_values(q)[0][0] == 't')
def is_context_parallel(context_id): q = "SELECT seq_compilation FROM contexts WHERE context_id = " + str( context_id) return (db.select_values(q)[0][0] == 'f')
def baseline_times(context_id): q = "SELECT time_sec \ FROM runs \ WHERE n_procs=0 \ AND context_id='" + str(context_id) + "'" return (db.select_values(q))
def problem_name_of_experiment(experiment_id): q = "SELECT problem_name FROM problems \ INNER JOIN experiments ON experiments.problem_id = problems.problem_id \ WHERE experiments.experiment_id = " + str(experiment_id) return (db.select_values(q)[0][0])
def distinct_n_procs(context_id): q = "SELECT DISTINCT(n_procs) \ FROM runs \ WHERE context_id = " + str(context_id) return (map(int, detup(db.select_values(q))))
def different_bench_inputs(experiment_id, bench_url): q = "SELECT DISTINCT(input) FROM contexts \ INNER JOIN experiments ON experiments.experiment_id = contexts.experiment_id \ WHERE experiments.experiment_id = " + str(experiment_id) + " \ AND bench_url = '" + bench_url + "'" return (db.select_values(q))
def max_leaf_size_of_context_id(context_id): q = "SELECT max_leaf_size FROM contexts \ WHERE context_id = " + str(context_id) return (db.select_values(q))[0][0]
def find_mlton_context_ids(experiment_id, strat): q = "SELECT DISTINCT(context_id) FROM contexts \ WHERE experiment_id = " + str(experiment_id) + " \ AND compiler = 'mlton' \ AND input LIKE '%" + strat[0] + "%'" return (get.detup(db.select_values(q)))
def distinct_bench_urls(): q = "SELECT DISTINCT(bench_url) \ FROM contexts \ WHERE bench_url LIKE '%benchmarks/prog%'" return (detup(db.select_values(q)))
def input_of_context_id(context_id): q = "SELECT input FROM contexts \ WHERE context_id = " + str(context_id) return (db.select_values(q))[0][0]
def find_mc_context_ids3(experiment_id): q = "SELECT DISTINCT(context_id) FROM contexts \ WHERE experiment_id = " + str(experiment_id) + " \ AND compiler = 'pmlc'" return (get.detup(db.select_values(q)))