def processData(self): if VERBOSE: print 'Start processing image...' if self.multiFile: self.s = System(self.dataTag + ' %d' % (self.image_idx.value + 1)) self.Xd_i = self.s.data.Xd else: self.Xd_i = self.Xd[self.image_idx.value, :, :, :].copy() self.Xd_i = self.Xd_i[self.sliceAngleStart.value:self.sliceAngleEnd. value:self.sliceAngleStep.value, self.sliceRangeStart.value:self.sliceRangeEnd. value:self.sliceRangeStep.value, self.sliceElementStart.value:self.sliceElementEnd .value:self.sliceElementStep.value] self.Nx = self.Xd_i.shape[0] # No. beams self.Ny = self.Xd_i.shape[1] # No. range samples self.Nm = self.Xd_i.shape[2] # No. channels self.angles = self.s.data.angles.squeeze() self.angles = self.angles[self.sliceAngleStart.value:self.sliceAngleEnd .value:self.sliceAngleStep.value] self.ranges = self.s.data.ranges.squeeze() self.ranges = self.ranges[self.sliceRangeStart.value:self.sliceRangeEnd .value:self.sliceRangeStep.value] # Make delay and sum image if self.apod.value is 1: self.das_w = np.hamming(self.Nm) self.das_w_sub = np.hamming(self.L.value) else: self.das_w = np.ones(self.Nm) self.das_w_sub = np.ones(self.L.value) self.img_das = np.dot(self.Xd_i, self.das_w) / self.Nm if self.K.value > 0: self.img_das = self.img_das[:, self.K.value:-self.K. value] # truncate to get equal dim on das and capon image # init sub/beam-space matrix if self.Nb.value > 0: self.B = np.ones((self.Nb.value, self.L.value)) else: self.B = np.array([0]) # Make capon image res_gpu = getCaponCUDA.getCaponCUDAPy(self.Xd_i, 10.0**self.d.value, self.L.value, self.K.value, self.B, False, False) self.img_capon = res_gpu[0] self.capon_weights = res_gpu[2] #self.img_capon = self.img_das if VERBOSE: print 'getCaponCUDA return code: ', res_gpu[3] print 'done.'
def processData(self): if VERBOSE: print 'Start processing image...' if self.multiFile: self.s = System(self.dataTag + ' %d'%(self.image_idx.value+1)) self.Xd_i = self.s.data.Xd else: self.Xd_i = self.Xd[self.image_idx.value, :, :, :].copy() self.Xd_i = self.Xd_i[self.sliceAngleStart.value:self.sliceAngleEnd.value:self.sliceAngleStep.value, self.sliceRangeStart.value:self.sliceRangeEnd.value:self.sliceRangeStep.value, self.sliceElementStart.value:self.sliceElementEnd.value:self.sliceElementStep.value]; self.Nx = self.Xd_i.shape[0] # No. beams self.Ny = self.Xd_i.shape[1] # No. range samples self.Nm = self.Xd_i.shape[2] # No. channels self.angles = self.s.data.angles.squeeze() self.angles = self.angles[self.sliceAngleStart.value:self.sliceAngleEnd.value:self.sliceAngleStep.value] self.ranges = self.s.data.ranges.squeeze() self.ranges = self.ranges[self.sliceRangeStart.value:self.sliceRangeEnd.value:self.sliceRangeStep.value] # Make delay and sum image if self.apod.value is 1: self.das_w = np.hamming(self.Nm) self.das_w_sub = np.hamming(self.L.value) else: self.das_w = np.ones(self.Nm) self.das_w_sub = np.ones(self.L.value) self.img_das = np.dot(self.Xd_i, self.das_w) / self.Nm if self.K.value > 0: self.img_das = self.img_das[:,self.K.value:-self.K.value]# truncate to get equal dim on das and capon image # init sub/beam-space matrix if self.Nb.value > 0: self.B = np.ones((self.Nb.value, self.L.value)) else: self.B = np.array([0]) # Make capon image res_gpu = getCaponCUDA.getCaponCUDAPy(self.Xd_i, 10.0**self.d.value, self.L.value, self.K.value, self.B, False, False) self.img_capon = res_gpu[0] self.capon_weights = res_gpu[2] #self.img_capon = self.img_das if VERBOSE: print 'getCaponCUDA return code: ', res_gpu[3] print 'done.'
def testMVDRKernelPerformance(M=32,L=16,K=0): # c = 12345*6789 # print 'The result of 12345 x 6789 :', c # return c import framework.beamformer.capon.getCaponCUDA as getCaponCUDA # import scipy.interpolate as interpolate s = System('Holmengraa') r = [3000,9000] #Ny, Nx, M = s.data.Xd.shape Xd = s.data.Xd[r[0]:r[1],:,0:M] Nt = s.data.Nt[r[0]:r[1]] ext=(0,62.76,Nt.max(),Nt.min()) fs = s.data.fs Ny, Nx, M = Xd.shape das = Xd.sum(2) d = 0.01 # L = 16 # K = 0 V = np.array([]) # from time import sleep # sleep(7) Xd = Xd[:500,:100].copy() print " Running getCaponCUDA.getCaponCUDAPy(Xd[100x10xM=%d], d, L=%d, K, V, False, False)"%(M,L) mvdr1 = getCaponCUDA.getCaponCUDAPy(Xd, d, L, K, V, False, False)