def getAlpha_mpg(M, Dict): # GPU PATCh_SIZE = 16 IMAGE_SIZE = 256 kin = 32 minabsin = 0 X = im2col(M, (PATCh_SIZE, PATCh_SIZE)) X = X.transpose() A = np.empty([58081, 256]) A_gpu1 = mpg.mp(Dict.transpose(), X[0:32000, :], k=kin, minabs=minabsin) A_gpu2 = mpg.mp(Dict.transpose(), X[32000:58080, :], k=kin, minabs=minabsin) A[0:32000, :] = A_gpu1 A[32000:58080, :] = A_gpu2 Alpha = np.dot(A, Dict.transpose()) A[58080, :] = X[58080, :] result = col2im(Alpha.transpose(), [IMAGE_SIZE, IMAGE_SIZE], (PATCh_SIZE, PATCh_SIZE)) return result
def main(): """Times various versions of Matching Pursuit.""" nshort = 6 tshort = 2 nmed = 3 tmed = 6 nlong = 1 #Setup variables for inference numDict = int(9600) numBatch = int(1024) dataSize = int(256) dictsIn = np.random.randn(numDict,dataSize) dictsIn = (np.sqrt(np.diag(1/np.diag(dictsIn.dot(dictsIn.T))))).dot(dictsIn) stimuli = np.random.randn(numBatch,dataSize) kin = 32 minabsin = 0. #MP params = """Parameters: numDict: """+str(numDict)+""" numBatch: """+str(numBatch)+""" dataSize: """+str(dataSize)+""" k-sparseness: """+str(kin)+"""\n""" print params start = timer() mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = timer()-start if dt < tshort: for ii in xrange(nshort-1): start = timer() mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = dt+timer()-start num = nshort dt = dt/(nshort) elif dt < tmed: for ii in xrange(nmed-1): start = timer() mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = dt+timer()-start num = nmed dt = dt/(nmed) else: for ii in xrange(nlong-1): start = timer() mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = dt+timer()-start num = nlong dt = dt/(nlong) print '---------------Numpy based MP---------------' print 'Average time over '+str(num)+' trials:' print '%f s' % dt start = timer() mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = timer()-start if dt < tshort: for ii in xrange(nshort-1): start = timer() mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = dt+timer()-start num = nshort dt = dt/(nshort) elif dt < tmed: for ii in xrange(nmed-1): start = timer() mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = dt+timer()-start num = nmed dt = dt/(nmed) else: for ii in xrange(nlong-1): start = timer() mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin) dt = dt+timer()-start num = nlong dt = dt/(nlong) print '----------NumbaPro GPU based MP---------' print 'Average time over '+str(num)+' trials:' print '%f s' % dt
def test_numbaprog(self): dictionary = self.rng.randn(self.numDict,self.dataSize) dictionary = np.array((np.sqrt(np.diag(1/np.diag(dictionary.dot(dictionary.T))))).dot(dictionary),dtype=np.float32,order='F') stimuli = np.array(self.rng.randn(self.numBatch,self.dataSize),dtype=np.float32,order='F') c = mpg.mp(dictionary,stimuli) assert np.allclose(c.dot(dictionary),stimuli,atol=1e-5)