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
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
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
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