def get_compiled_mfsim(self, tree, file):
        BasicBlock.id_counter = 1
        ir = self.get_ir(tree)
        ir = Program(functions=ir.functions,
                     config=CompilerCLI([
                         "-d", "-inline", "-t", "mfsim", "-i", file, "-o",
                         "output/"
                     ]).config,
                     symbol_table=ir.symbol_table,
                     bb_graph=ir.graph,
                     name=file,
                     calls=ir.calls)
        pm = PassManager(ir)
        pm.run_analysis()
        pm.run_transformations()
        prog = pm.program

        target = MFSimTarget(prog)
        target.transform()
        return str([
            target.num_cgs, target.num_transfers, target.num_dags,
            target.num_detects, target.num_dispense, target.num_dispose,
            target.num_edges, target.num_heats, target.num_mixes,
            target.num_splits, target.expid
        ])
Esempio n. 2
0
 def optimizations(self, program: Program):
     """
     Run the various optimizations that can be run.
     :param program:
     :return:
     """
     passes = PassManager(self.program)
     passes.run_analysis()
     passes.run_transformations()
     return passes.program
Esempio n. 3
0
    def get_volume(self, tree, file):
        ir = self.get_ir(tree)
        ir = Program(functions=ir.functions, config=CompilerCLI(["-d", "-tv", "-i", file, "-o", "output/"]).config,
                       symbol_table=ir.symbol_table, bb_graph=ir.graph, name=file, calls=ir.calls)
        pm = PassManager(ir)
        pm.run_analysis()
        pm.run_transformations()
        prog = pm.program

        return prog.analysis['volume_tracking']