def optimize(self, optimizer=None, start=None, **kwargs):
self._IN_OPTIMIZATION_ = True
if self.mpi_comm is None:
super(DeepGP, self).optimize(optimizer,start,**kwargs)
elif self.mpi_comm.rank==self.mpi_root:
super(DeepGP, self).optimize(optimizer,start,**kwargs)
self.mpi_comm.Bcast(np.int32(-1),root=self.mpi_root)
elif self.mpi_comm.rank!=self.mpi_root:
x = self.optimizer_array.copy()
flag = np.empty(1,dtype=np.int32)
while True:
self.mpi_comm.Bcast(flag,root=self.mpi_root)
if flag==1:
try:
self.optimizer_array = x
except (LinAlgError, ZeroDivisionError, ValueError):
pass
elif flag==-1:
break
else:
self._IN_OPTIMIZATION_ = False
raise Exception("Unrecognizable flag for synchronization!")
self._IN_OPTIMIZATION_ = False
评论列表
文章目录