139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
-
+
-
+
|
fn from(err: masterprocess::Error<MErr, PErr>) -> Error<MErr, PErr> {
use masterprocess::Error::*;
match err {
DisconnectedSender => Error::Disconnected,
DisconnectedReceiver => Error::Disconnected,
Aggregation(err) => Error::Master(err),
SubgradientExtension(err) => Error::Update(err),
Master(err) => Error::Master(err.into()),
Master(err) => Error::Master(err),
}
}
}
impl<MErr, PErr> From<RecvError> for Error<MErr, PErr> {
fn from(err: RecvError) -> Error<MErr, PErr> {
Error::Process(err.into())
Error::Process(err)
}
}
type ClientSender<P> = Sender<EvalResult<usize, <P as FirstOrderProblem>::Primal, <P as FirstOrderProblem>::Err>>;
type ClientReceiver<P> = Receiver<EvalResult<usize, <P as FirstOrderProblem>::Primal, <P as FirstOrderProblem>::Err>>;
|
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
|
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
|
-
+
|
.unwrap_or(false)
{
return Err(Error::Dimension("upper bounds".to_string()));
}
debug!("Start master process");
self.master_proc = Some(MasterProcess::start(
self.master.build().map_err(|err| Error::BuildMaster(err.into()))?,
self.master.build().map_err(Error::BuildMaster)?,
master_config,
&mut self.threadpool,
));
debug!("Initial problem evaluation");
// We need an initial evaluation of all oracles for the first center.
let y = Arc::new(self.data.cur_y.clone());
|