Пример #1
0
Файл: kgen.py Проект: NCAR/KGen
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)
Пример #2
0
    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
Пример #3
0
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)
Пример #4
0
    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}
Пример #5
0
    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 }