34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
use threadpool::ThreadPool;
use crate::{DVector, Minorant, Real};
use super::channels::{
ChannelResultSender, ChannelUpdateSender, ClientReceiver, ClientSender, EvalResult, Message, Update,
};
use super::masterprocess::{MasterError, MasterProcess, MasterResponse, Response};
use crate::master::{Builder as MasterBuilder, MasterProblem};
use crate::problem::{FirstOrderProblem, UpdateState};
use crate::terminator::{StandardTerminatable, StandardTerminator, Terminator};
use crate::weighter::{HKWeightable, HKWeighter, Weighter};
/// The default iteration limit.
pub const DEFAULT_ITERATION_LIMIT: usize = 10_000;
|
|
|
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
use threadpool::ThreadPool;
use crate::{DVector, Minorant, Real};
use super::channels::{
ChannelResultSender, ChannelUpdateSender, ClientReceiver, ClientSender, EvalResult, Message, Update,
};
use super::masterprocess::{MasterError, MasterProcess, MasterProcessState, MasterResponse, Response};
use crate::master::{Builder as MasterBuilder, MasterProblem};
use crate::problem::{FirstOrderProblem, UpdateState};
use crate::terminator::{StandardTerminatable, StandardTerminator, Terminator};
use crate::weighter::{HKWeightable, HKWeighter, Weighter};
/// The default iteration limit.
pub const DEFAULT_ITERATION_LIMIT: usize = 10_000;
|
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
|
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
#[derive(Clone, Debug)]
pub struct SyncSolverState<M> {
data: SolverData,
cnt_descent: usize,
cnt_null: usize,
cnt_evals: usize,
master_state: Option<M>,
}
impl<P, T, W, M> Solver<P, T, W, M>
where
P: FirstOrderProblem,
T: Terminator<SolverData> + Default,
W: Weighter<SolverData> + Default,
|
|
|
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
|
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
#[derive(Clone, Debug)]
pub struct SyncSolverState<M> {
data: SolverData,
cnt_descent: usize,
cnt_null: usize,
cnt_evals: usize,
master_state: Option<MasterProcessState<M>>,
}
impl<P, T, W, M> Solver<P, T, W, M>
where
P: FirstOrderProblem,
T: Terminator<SolverData> + Default,
W: Weighter<SolverData> + Default,
|
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
|
self.cnt_evals = state.cnt_evals;
let (tx, rx) = channel();
self.client_tx = Some(tx.clone());
self.client_rx = Some(rx);
self.master_proc = if let Some(s) = state.master_state {
Some(MasterProcess::start(
self.master.build_with_state(s).map_err(Error::BuildMaster)?,
tx,
&mut self.threadpool,
))
} else {
None
};
Ok(())
}
|
|
|
>
|
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
|
self.cnt_evals = state.cnt_evals;
let (tx, rx) = channel();
self.client_tx = Some(tx.clone());
self.client_rx = Some(rx);
self.master_proc = if let Some(s) = state.master_state {
Some(MasterProcess::start_with_center_idx(
self.master.build_with_state(s.master_state).map_err(Error::BuildMaster)?,
tx,
&mut self.threadpool,
s.center_idx,
))
} else {
None
};
Ok(())
}
|