def engine_iterate(self): """ Compute one iteration. """ error_dct={} #fourier update for name,di_view in self.di.V.iteritems(): ma_view = di_view.pods.values()[0].ma_view # a bit ugly error_dct[name] = basic_fourier_update(di_view,ma_view,pbound=self.pbound,alpha=self.p.alpha) # make a sorted error array for MPI reduction error = np.array([error_dct[k] for k in np.sort(error_dct.keys())]) #print error.shape error[error<0]=0. parallel.allreduce(error) # store error. maybe better in runtime? self.error = error #self.pty.runtime.error.append(error) # probe update self.probe_update(self.pr_nrm,self.pr_buf) # object update self.object_update(self.ob_nrm,self.ob_buf) return error
def engine_iterate(self): """ Compute one iteration. """ error_dct = {} # fourier update for name, di_view in self.di.V.iteritems(): ma_view = di_view.pods.values()[0].ma_view # a bit ugly error_dct[name] = basic_fourier_update(di_view, ma_view, pbound=self.pbound, alpha=self.p.alpha) # make a sorted error array for MPI reduction error = np.array([error_dct[k] for k in np.sort(error_dct.keys())]) # print error.shape error[error < 0] = 0.0 parallel.allreduce(error) # store error. maybe better in runtime? self.error = error # self.pty.runtime.error.append(error) # probe update self.probe_update(self.pr_nrm, self.pr_buf) # object update self.object_update(self.ob_nrm, self.ob_buf) return error
def engine_iterate(self): """ Compute one iteration. """ error_dct={} t = time.time() # Fourier update for name,di_view in self.di.V.iteritems(): ma_view = di_view.pod.ma_view error_dct[name] = basic_fourier_update(di_view, ma_view, pbound=self.pbound) logger.info('Time spent in Fourier update: %.2f' % (time.time()-t)) ## make a sorted error array for MPI reduction ## error is sorted after the di_view IDs. This is needed for local error analysis later. error = np.array([error_dct[k] for k in np.sort(error_dct.keys())]) error[error<0]=0. parallel.allreduce(error) # store error. maybe better in runtime? self.error = error self.overlap_update() return error