Merge pull request #491 from alexfeld/parallel_opt

fix for parallel optimization
This commit is contained in:
Max Zwiessele 2017-04-12 11:28:46 +01:00 committed by GitHub
commit a5ba3057ec
2 changed files with 5 additions and 3 deletions

View file

@ -562,11 +562,12 @@ class GP(Model):
"""
self.inference_method.on_optimization_start()
try:
super(GP, self).optimize(optimizer, start, messages, max_iters, ipython_notebook, clear_after_finish, **kwargs)
ret = super(GP, self).optimize(optimizer, start, messages, max_iters, ipython_notebook, clear_after_finish, **kwargs)
except KeyboardInterrupt:
print("KeyboardInterrupt caught, calling on_optimization_end() to round things up")
self.inference_method.on_optimization_end()
raise
return ret
def infer_newX(self, Y_new, optimize=True):
"""

View file

@ -88,9 +88,9 @@ class SparseGP_MPI(SparseGP):
def optimize(self, optimizer=None, start=None, **kwargs):
self._IN_OPTIMIZATION_ = True
if self.mpi_comm==None:
super(SparseGP_MPI, self).optimize(optimizer,start,**kwargs)
ret = super(SparseGP_MPI, self).optimize(optimizer,start,**kwargs)
elif self.mpi_comm.rank==0:
super(SparseGP_MPI, self).optimize(optimizer,start,**kwargs)
ret = super(SparseGP_MPI, self).optimize(optimizer,start,**kwargs)
self.mpi_comm.Bcast(np.int32(-1),root=0)
elif self.mpi_comm.rank>0:
x = self.optimizer_array.copy()
@ -111,6 +111,7 @@ class SparseGP_MPI(SparseGP):
self._IN_OPTIMIZATION_ = False
raise Exception("Unrecognizable flag for synchronization!")
self._IN_OPTIMIZATION_ = False
return ret
def parameters_changed(self):
if isinstance(self.inference_method,VarDTC_minibatch):