Exemplo n.º 1
0
def get_subsystem_values(db, m, ml, directory, full):
    pl = sim.ProcessList(m.machine, directory)
    for b in m.benchmarks:
        pl.add_benchmark(b)
    result = dict()
    fifo_stats = FIFOStats()
    if full:
        baseline = ml.clone()
#        for f in baseline.all_fifos():
#            f.depth = 1
        score = db.get_score(m, baseline, True)
        if score is None:
            score, fstats = pl.run(ml, -1)
            db.add_score(m, baseline, True, score)
            db.add_result(m, str(ml), -1, score, fstats)
        result[0] = score
        return result, fifo_stats
    else:
        for b in m.benchmarks:
            subsystem = b.index
            mem = ml.get_subsystem(subsystem)
            mem_name = mem.get_name(True)
            value, fs_str = db.get_result(m, mem_name, subsystem)
            if value is None:
                value, fstats = pl.run(ml, subsystem)
                db.add_result(m, mem_name, subsystem, value, fstats)
            else:
                fstats = FIFOStats(fs_str)
            if value < 0:
                raise PendingException()
            result[subsystem] = value
            fifo_stats.combine(fstats)
    return result, fifo_stats