def main(): preprocess() Logger.info('Pre-processing is done', stdout=True) locate_callsite() Logger.info('Call-site location is found', stdout=True) collect_kernel_info() Logger.info('Kernel information is collected', stdout=True) mark_generation_info() Logger.info('Kernel generation information is marked') generate_srcfiles() Logger.info('Source files are generated', stdout=True) # generate_state() # Logger.info('Instrumented files are generated', stdout=True) # # generate_kernel() # Logger.info('Kernel files are generated', stdout=True) generate_makefiles() Logger.info('Makefiles are generated', stdout=True) postprocess() Logger.info('Post-processing is done', stdout=True) Logger.info('Completed.', stdout=True)
def execute(self): self._trees = [] self.genfiles = [] self.kernel_name = State.kernel_driver['name'] try: print '' self.initialize() preprocess() Logger.info('Pre-processing is done', stdout=True) analyze() Logger.info('Program is analyzed', stdout=True) self.transform() self.output() postprocess() Logger.info('Post-processing is done', stdout=True) Logger.info('Completed.', stdout=True) except UserException as e: print 'ERROR: %s' % str(e) Logger.info(e) #Logger.critical(e) except ProgramException as e: Logger.critical(e) except Exception as e: Logger.critical(e) finally: pass
def fini(self): kernel_files = [] state_files = [] # generate source files from each node of the tree for kfile, sfile, filepath in self.genfiles: filename = os.path.basename(filepath) self.set_indent('') klines = kfile.tostring() if klines is not None: klines = self.remove_multiblanklines(klines) kernel_files.append(filename) with open('%s/%s' % (Config.path['kernel'], filename), 'wb') as fd: fd.write(klines) if sfile.kgen_stmt.used4genstate: self.set_indent('') slines = sfile.tostring() if slines is not None: slines = self.remove_multiblanklines(slines) state_files.append(filename) with open('%s/%s' % (Config.path['state'], filename), 'wb') as fd: fd.write(slines) kernel_files.append(self.kernel_name) with open('%s/%s.f90' % (Config.path['kernel'], self.kernel_name), 'wb') as fd: self.set_indent('') lines = self.driver.tostring() if lines is not None: lines = self.remove_multiblanklines(lines) fd.write(lines) Logger.info('Kernel generation and instrumentation is completed.', stdout=True) # generate kgen_utils.f90 in kernel directory kernel_files.append('kgen_utils.f90') self.generate_kgen_utils() kernel_files.append(TPROF) shutil.copyfile('%s/%s' % (KGEN_BASE, TPROF), '%s/%s' % (Config.path['kernel'], TPROF)) kernel_files.append('Makefile') state_files.append('Makefile') generate_makefiles() Logger.info('Makefiles are generated', stdout=True) postprocess() Logger.info('Post-processing is done', stdout=True) Logger.info('KExt is finished.', stdout=True) return {'kernel_files': kernel_files, 'state_files': state_files}
def fini(self): kernel_files = [] state_files = [] # generate source files from each node of the tree for kfile, sfile, filepath in self.genfiles: filename = os.path.basename(filepath) self.set_indent('') klines = kfile.tostring() if klines is not None: klines = self.remove_multiblanklines(klines) kernel_files.append(filename) with open('%s/%s'%(Config.path['kernel'], filename), 'wb') as fd: fd.write(klines) if sfile.kgen_stmt.used4genstate: self.set_indent('') slines = sfile.tostring() if slines is not None: slines = self.remove_multiblanklines(slines) state_files.append(filename) with open('%s/%s'%(Config.path['state'], filename), 'wb') as fd: fd.write(slines) kernel_files.append(self.kernel_name) with open('%s/%s.f90'%(Config.path['kernel'], self.kernel_name), 'wb') as fd: self.set_indent('') lines = self.driver.tostring() if lines is not None: lines = self.remove_multiblanklines(lines) fd.write(lines) Logger.info('Kernel generation and instrumentation is completed.', stdout=True) # generate kgen_utils.f90 in kernel directory kernel_files.append('kgen_utils.f90') self.generate_kgen_utils() kernel_files.append(TPROF) shutil.copyfile('%s/%s'%(KGEN_BASE, TPROF), '%s/%s'%(Config.path['kernel'], TPROF)) kernel_files.append('Makefile') state_files.append('Makefile') generate_makefiles() Logger.info('Makefiles are generated', stdout=True) postprocess() Logger.info('Post-processing is done', stdout=True) Logger.info('KExt is finished.', stdout=True) return { 'kernel_files': kernel_files, 'state_files': state_files }