RsBundle  Diff

Differences From Artifact [f986c1ffd5]:

  • File src/mpi/problem.rs — part of check-in [4daadd53de] at 2023-08-14 13:15:57 on branch add-subproblems — Add API for adding subproblems in an update (user: fifr size: 16094)

To Artifact [795d73e02c]:

  • File src/mpi/problem.rs — part of check-in [e60788bc13] at 2023-08-14 17:44:16 on branch add-subproblems — Replace `PrimalExtender` by a list of minorants (user: fifr size: 15893)

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see  <http://www.gnu.org/licenses/>
 */

use super::msg::{ResultMsg, WorkerMsg};
use crate::problem::{
    FirstOrderProblem, PrimalExtender, ResultSender, SubgradientExtender, UpdateSendError, UpdateSender, UpdateState,
};
use crate::{DVector, Minorant, Real};

use log::{debug, error, info};
use mpi::environment::Universe;
use mpi::topology::{Communicator, SystemCommunicator};
use mpi::Rank;







|







13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see  <http://www.gnu.org/licenses/>
 */

use super::msg::{ResultMsg, WorkerMsg};
use crate::problem::{
    FirstOrderProblem, ResultSender, SubgradientExtender, UpdateSendError, UpdateSender, UpdateState,
};
use crate::{DVector, Minorant, Real};

use log::{debug, error, info};
use mpi::environment::Universe;
use mpi::topology::{Communicator, SystemCommunicator};
use mpi::Rank;
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
            bounds,
            Box::new(move |fidx: usize, m: &mut P::Minorant| {
                sgext.extend_subgradient(fidx, m).map_err(Error::OracleError)
            }),
        )
    }

    fn add_subproblems(
        &self,
        nnew: usize,
        pext: Box<dyn PrimalExtender<P::Minorant, P::Err>>,
    ) -> Result<(), UpdateSendError> {
        self.0.add_subproblems(
            nnew,
            Box::new(move |m: &mut P::Minorant| pext.extend_primal(m).map_err(Error::OracleError)),
        )
    }

    fn error(&self, err: P::Err) -> Result<(), UpdateSendError> {
        self.0.error(Error::OracleError(err))
    }
}







<
<
<
<
|
|
<
<
<






414
415
416
417
418
419
420




421
422



423
424
425
426
427
428
            bounds,
            Box::new(move |fidx: usize, m: &mut P::Minorant| {
                sgext.extend_subgradient(fidx, m).map_err(Error::OracleError)
            }),
        )
    }





    fn add_subproblems(&self, minorants: Vec<P::Minorant>) -> Result<(), UpdateSendError> {
        self.0.add_subproblems(minorants)



    }

    fn error(&self, err: P::Err) -> Result<(), UpdateSendError> {
        self.0.error(Error::OracleError(err))
    }
}