Exemplo n.º 1
0
 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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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