From 6152f912bb48200e61a3c97c05b2728e6e235b6f Mon Sep 17 00:00:00 2001 From: Zhenwen Dai Date: Mon, 7 Sep 2015 17:20:03 +0100 Subject: [PATCH] optimize util for mpi --- GPy/util/parallel.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/GPy/util/parallel.py b/GPy/util/parallel.py index 880dae58..a2211945 100644 --- a/GPy/util/parallel.py +++ b/GPy/util/parallel.py @@ -39,3 +39,22 @@ def divide_data(datanum, rank, size): size = datanum/size offset = size*rank+residue return offset, offset+size, datanum_list + +def optimize_parallel(model, optimizer=None, messages=True, max_iters=1000, outpath='.', interval=100, name=None): + from math import ceil + from datetime import datetime + import os + if name is None: name = model.name + stop = 0 + for iter in range(int(ceil(float(max_iters)/interval))): + model.optimize(optimizer=optimizer, messages= True if messages and model.mpi_comm.rank==model.mpi_root else False, max_iters=interval) + if model.mpi_comm.rank==model.mpi_root: + timenow = datetime.now() + timestr = timenow.strftime('%Y:%m:%d_%H:%M:%S') + model.save(os.path.join(outpath, name+'_'+timestr+'.h5')) + opt = model.optimization_runs[-1] + if opt.funct_eval