def loadCL(self, filepath): print("Loading OpenCL Kernel") self.kernel_file = open(filepath, "r") buildDir = self.getDir(filepath) self.build_options = "" self.build_options = self.build_options + "-I "+buildDir self.build_options = self.build_options + " -D VGL_SHAPE_NCHANNELS={0}".format(vc.VGL_SHAPE_NCHANNELS()) self.build_options = self.build_options + " -D VGL_SHAPE_WIDTH={0}".format(vc.VGL_SHAPE_WIDTH()) self.build_options = self.build_options + " -D VGL_SHAPE_HEIGHT={0}".format(vc.VGL_SHAPE_HEIGHT()) self.build_options = self.build_options + " -D VGL_SHAPE_LENGTH={0}".format(vc.VGL_SHAPE_LENGTH()) self.build_options = self.build_options + " -D VGL_MAX_DIM={0}".format(vc.VGL_MAX_DIM()) self.build_options = self.build_options + " -D VGL_ARR_SHAPE_SIZE={0}".format(vc.VGL_ARR_SHAPE_SIZE()) self.build_options = self.build_options + " -D VGL_ARR_CLSTREL_SIZE={0}".format(vc.VGL_ARR_CLSTREL_SIZE()) self.build_options = self.build_options + " -D VGL_STREL_CUBE={0}".format(vc.VGL_STREL_CUBE()) self.build_options = self.build_options + " -D VGL_STREL_CROSS={0}".format(vc.VGL_STREL_CROSS()) self.build_options = self.build_options + " -D VGL_STREL_GAUSS={0}".format(vc.VGL_STREL_GAUSS()) self.build_options = self.build_options + " -D VGL_STREL_MEAN={0}".format(vc.VGL_STREL_MEAN()) #print("Build Options:\n", self.build_options) # READING THE HEADER FILES BEFORE COMPILING THE KERNEL for file in glob.glob(buildDir+"/*.h"): self.pgr = cl.Program(self.ctx, open(file, "r")) if ((self.builded == False)): self.pgr = cl.Program(self.ctx, self.kernel_file.read()) self.pgr.build(options=self.build_options) #self.pgr.build() self.builded = True else: print("Kernel already builded. Going to next step...") self.kernel_file.close()
def asVglClShape(self): result = VglClShape() result.ndim = np.int32(self.ndim) result.size = np.int32(self.size) for i in range(0, vc.VGL_MAX_DIM() + 1): result.shape[i] = np.int32(self.shape[i]) result.offset[i] = np.int32(self.offset[i]) if (self.ndim == 1): result.shape[vc.VGL_SHAPE_WIDTH()] = np.int32(self.getWidth()) result.offset[vc.VGL_SHAPE_WIDTH()] = np.int32( result.shape[vc.VGL_SHAPE_WIDTH() - 1] * result.offset[vc.VGL_SHAPE_WIDTH() - 1]) result.shape[vc.VGL_SHAPE_HEIGHT()] = np.int32(self.getHeight()) result.offset[vc.VGL_SHAPE_HEIGHT()] = np.int32( result.shape[vc.VGL_SHAPE_HEIGHT() - 1] * result.offset[vc.VGL_SHAPE_HEIGHT() - 1]) return result
def getHeight(self): if (self.ndim == 1): return 1 return self.shape[vc.VGL_SHAPE_HEIGHT()]
def getHeightIn(self): return self.shape[vc.VGL_SHAPE_HEIGHT()]
def getWidth(self): if (self.ndim == 1): return self.shape[vc.VGL_SHAPE_WIDTH()] * self.shape[ vc.VGL_SHAPE_HEIGHT()] return self.shape[vc.VGL_SHAPE_WIDTH()]