Exemplo n.º 1
0
 def _generate_kernel_bin(self, k, ctx):
     gk = gpuarray.GpuKernel(k.code, k.name, k.params, context=ctx,
                             **k.flags)
     bin = gk._binary
     bcode = ','.join(hex(ord(c)) for c in bin)
     return ("""static const char %(bname)s[] = { %(bcode)s };""" %
             dict(bname=k.binvar, bcode=bcode))
Exemplo n.º 2
0
 def c_support_code_apply(self, node, name):
     nb = 0
     if self.kshp is not None:
         nb = self.kshp[1]
     kernels = self.gpu_kernels(node, name)
     k = kernels[0]
     code = """
     #define THEANO_KERN_WID %(nb)d
     """ % locals()
     code += "\n".join([
         open(os.path.join(os.path.split(__file__)[0], f)).read()
         for f in ["conv_kernel.cu", "conv_full_kernel.cu"]
     ])
     kname = "conv_full_load_everything"
     gk = gpuarray.GpuKernel(code, k.name, k.params, **k.flags)
     bin = gk._binary
     bcode = ','.join(hex(ord(c)) for c in bin)
     code = code.replace('\\', '\\\\')
     code = code.replace('"', '\\"')
     code = code.replace('\n', '\\n')
     mod = """
     static const char conv_bcode[] = {%(bcode)s};
     static const char *conv_code = "%(code)s";
     """ % locals()
     for k in kernels:
         mod += "static GpuKernel " + k.name + '_' + name + ";\n"
     mod += open(os.path.join(os.path.split(__file__)[0], "conv.cu")).read()
     return mod