def __init__(self, rule_mapping_context, diff_context, diff_inames, allowed_nonsmoothness=None): RuleAwareIdentityMapper.__init__(self, rule_mapping_context) DifferentiationMapper.__init__( self, # This is actually ignored because we # override map_variable below. variable=None, allowed_nonsmoothness=None) self.diff_context = diff_context self.diff_inames = diff_inames self.diff_iname_exprs = tuple(var(diname) for diname in diff_inames) self.function_map = func_map
def import_instruction_and_deps(self, insn_id): if insn_id in self.imported_instructions: return insn = self.kernel.id_to_insn[insn_id] self.new_instructions.append(insn) self.imported_instructions.add(insn_id) id_map = RuleAwareIdentityMapper(self.rule_mapping_context) if isinstance(insn, lp.Assignment): id_map(insn.expression, self.kernel, insn) else: raise RuntimeError("do not know how to deal with " "instruction of type %s" % type(insn)) for dep in insn.depends_on: self.import_instruction_and_deps(dep)
def __init__(self, rule_mapping_context, diff_context, diff_inames): RuleAwareIdentityMapper.__init__(self, rule_mapping_context) self.diff_context = diff_context self.diff_inames = diff_inames self.diff_iname_exprs = tuple(var(diname) for diname in diff_inames) self.function_map = func_map