示例#1
0
 def gen_user_kernel(self, block: NNToolCodeBlock, ukname: str, kname: str):
     block.write("int {0}(char *Name) {{", ukname)
     block.indent()
     block.write("Kernel_T *Kernel = UserKernel(")
     block.indent()
     block.write("Name,")
     block.write("{0},", self.gen_iterspace())
     block.write("TILE_HOR,")
     cargs = self.gen_cargs()
     block.write("CArgs({0},", len(cargs))
     block.indent()
     for carg in cargs[:-1:]:
         block.write("{0},", carg)
     block.write("{0}", cargs[-1])
     block.deindent()
     block.write("),")
     block.write("Calls(1,")
     block.indent()
     block.write("Call(\"{0}\", LOC_LOOP,", kname)
     block.indent()
     bindings = self.gen_kerbingings()
     block.write("Bindings({0},", len(bindings))
     block.indent()
     for binding in bindings[:-1:]:
         block.write("{0},", binding)
     block.write("{0}", bindings[-1])
     block.deindent()
     block.write(")")
     block.deindent()
     block.write(")")
     block.deindent()
     block.write("),")
     kargs = self.gen_kargs()
     block.write("KerArgs({0},", len(cargs))
     block.indent()
     for karg in kargs[:-1:]:
         block.write("{0},", karg)
     block.write("{0}", kargs[-1])
     block.deindent()
     block.write(")")
     block.deindent()
     block.write(");")
     block.write("if (Kernel) {{")
     block.indent()
     for kinfo in self.gen_kinfos():
         block.write("{0};", kinfo)
     block.deindent()
     block.write("}}")
     block.write("return (Kernel!=0);")
     block.deindent()
     block.write("}}")
示例#2
0
 def gen_user_kernel(self, ukname: str, kname: str, code: CodeBlock = None):
     if code is None:
         code = CodeBlock()
     code.write("int {0}(char *Name) {{", ukname)
     code.indent()
     code.write("Kernel_T *Kernel = UserKernel(")
     code.indent()
     code.write("Name,")
     code.write("{0},", self.gen_iterspace())
     code.write("TILE_HOR,")
     cargs = self.gen_cargs()
     code.write("CArgs({0},", len(cargs))
     code.indent()
     for carg in cargs[:-1:]:
         code.write("{0},", carg)
     code.write("{0}", cargs[-1])
     code.deindent()
     code.write("),")
     code.write("Calls(1,")
     code.indent()
     code.write("Call(\"{0}\", LOC_LOOP,", kname)
     code.indent()
     bindings = self.gen_kerbingings()
     code.write("Bindings({0},", len(bindings))
     code.indent()
     for binding in bindings[:-1:]:
         code.write("{0},", binding)
     code.write("{0}", bindings[-1])
     code.deindent()
     code.write(")")
     code.deindent()
     code.write(")")
     code.deindent()
     code.write("),")
     kargs = self.gen_kargs()
     code.write("KerArgs({0},", len(cargs))
     code.indent()
     for karg in kargs[:-1:]:
         code.write("{0},", karg)
     code.write("{0}", kargs[-1])
     code.deindent()
     code.write(")")
     code.deindent()
     code.write(");")
     code.write("if (Kernel) {{")
     code.indent()
     for kinfo in self.gen_kinfos():
         code.write("{0};", kinfo)
     code.deindent()
     code.write("}}")
     code.write("return (Kernel!=0);")
     code.deindent()
     code.write("}}")
     return code