コード例 #1
0
ファイル: wrappers.py プロジェクト: fymenq/devito
    def make_yc_solution(self, namer):
        """
        Create and return a YASK compiler solution object.
        """
        name = namer(self.name, self.nsolutions)

        yc_soln = cfac.new_solution(name)

        # Redirect stdout/strerr to a string or file
        if configuration.yask['dump']:
            filename = 'yc_dump.%s.%s.%s.txt' % (
                name, configuration['platform'], configuration['isa'])
            filename = os.path.join(configuration.yask['dump'], filename)
            yc_soln.set_debug_output(ofac.new_file_output(filename))
        else:
            yc_soln.set_debug_output(ofac.new_null_output())

        # Set data type size
        yc_soln.set_element_bytes(self.dtype().itemsize)

        # Apply compile-time optimizations
        if configuration['isa'] != 'cpp':
            dimensions = [
                nfac.new_domain_index(str(i)) for i in self.space_dimensions
            ]
            # Vector folding
            for i, j in zip(dimensions, configuration.yask['folding']):
                yc_soln.set_fold_len(i, j)
            # Unrolling
            for i, j in zip(dimensions, configuration.yask['clustering']):
                yc_soln.set_cluster_mult(i, j)

        return yc_soln
コード例 #2
0
    def make_yc_solution(self, name):
        """Create a YASK compiler solution."""
        yc_soln = cfac.new_solution(name)

        # Redirect stdout/strerr to a string or file
        if configuration.yask['dump']:
            filename = 'yc_dump.%s.%s.%s.txt' % (
                name, configuration['platform'], configuration['platform'].isa)
            filename = os.path.join(configuration.yask['dump'], filename)
            yc_soln.set_debug_output(ofac.new_file_output(filename))
        else:
            yc_soln.set_debug_output(ofac.new_null_output())

        # Set the target ISA.
        yc_soln.set_target(configuration['platform'].isa)

        # Set data type size
        yc_soln.set_element_bytes(self.dtype().itemsize)

        # Apply compile-time optimizations
        if configuration['platform'].isa != 'cpp':
            dimensions = [
                make_yask_ast(i, yc_soln) for i in self.space_dimensions
            ]
            # Vector folding
            for i, j in zip(dimensions, configuration.yask['folding']):
                yc_soln.set_fold_len(i, j)
            # Unrolling
            for i, j in zip(dimensions, configuration.yask['clustering']):
                yc_soln.set_cluster_mult(i, j)

        return yc_soln
コード例 #3
0
ファイル: wrappers.py プロジェクト: opesci/devito
    def make_yc_solution(self, name):
        """Create a YASK compiler solution."""
        yc_soln = cfac.new_solution(name)

        # Redirect stdout/strerr to a string or file
        if configuration.yask['dump']:
            filename = 'yc_dump.%s.%s.%s.txt' % (name, configuration['platform'],
                                                 configuration['platform'].isa)
            filename = os.path.join(configuration.yask['dump'], filename)
            yc_soln.set_debug_output(ofac.new_file_output(filename))
        else:
            yc_soln.set_debug_output(ofac.new_null_output())

        # Set data type size
        yc_soln.set_element_bytes(self.dtype().itemsize)

        # Apply compile-time optimizations
        if configuration['platform'].isa != 'cpp':
            dimensions = [make_yask_ast(i, yc_soln) for i in self.space_dimensions]
            # Vector folding
            for i, j in zip(dimensions, configuration.yask['folding']):
                yc_soln.set_fold_len(i, j)
            # Unrolling
            for i, j in zip(dimensions, configuration.yask['clustering']):
                yc_soln.set_cluster_mult(i, j)

        return yc_soln
コード例 #4
0
ファイル: wrappers.py プロジェクト: xiaocenxiaocen/devito
 def make_yc_solution(self, namer):
     """
     Create and return a YASK compiler solution object.
     """
     yc_soln = cfac.new_solution(namer(self.name, self.nsolutions))
     yc_soln.set_debug_output(ofac.new_null_output())
     yc_soln.set_step_dim_name(namespace['time-dim'])
     yc_soln.set_domain_dim_names(*list(self.domain))
     yc_soln.set_element_bytes(self.dtype().itemsize)
     return yc_soln