def analyze(self):
try:<EOL><INDENT>incore_analysis, asm_block =  self.kernel.iaca_analysis(<EOL>micro_architecture=self.machine['<STR_LIT>'],<EOL>asm_block=self.asm_block,<EOL>pointer_increment=self.pointer_increment,<EOL>verbose=self.verbose > <NUM_LIT:2>)<EOL><DEDENT>except RuntimeError as e:<EOL><INDENT>print("<STR_LIT>" + str(e))<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT>block_throughput = incore_analysis['<STR_LIT>']<EOL>port_cycles = incore_analysis['<STR_LIT>']<EOL>uops = incore_analysis['<STR_LIT>']<EOL>elements_per_block = abs(asm_block['<STR_LIT>']<EOL>// self.kernel.datatypes_size[self.kernel.datatype])<EOL>block_size = elements_per_block*self.kernel.datatypes_size[self.kernel.datatype]<EOL>try:<EOL><INDENT>block_to_cl_ratio = float(self.machine['<STR_LIT>'])/block_size<EOL><DEDENT>except ZeroDivisionError as e:<EOL><INDENT>print("<STR_LIT>", e, file=sys.stderr)<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT>port_cycles = dict([(i[<NUM_LIT:0>], i[<NUM_LIT:1>]*block_to_cl_ratio) for i in list(port_cycles.items())])<EOL>uops = uops*block_to_cl_ratio<EOL>cl_throughput = block_throughput*block_to_cl_ratio<EOL>T_OL = max([v for k, v in list(port_cycles.items())<EOL>if k in self.machine['<STR_LIT>']['<STR_LIT>']])<EOL>T_nOL = max([v for k, v in list(port_cycles.items())<EOL>if k in self.machine['<STR_LIT>']['<STR_LIT>']])<EOL>if T_nOL < cl_throughput:<EOL><INDENT>T_OL = cl_throughput<EOL><DEDENT>self.results = {<EOL>'<STR_LIT>': port_cycles,<EOL>'<STR_LIT>': self.conv_cy(cl_throughput),<EOL>'<STR_LIT>': uops,<EOL>'<STR_LIT>': T_nOL,<EOL>'<STR_LIT>': T_OL,<EOL>'<STR_LIT>': incore_analysis['<STR_LIT>'],<EOL>'<STR_LIT>': elements_per_block,<EOL>'<STR_LIT>': asm_block['<STR_LIT>'],<EOL>'<STR_LIT>': sum(self.kernel._flops.values())}<EOL>return self.results<EOL>
Run complete analysis and return results.