RsBundle  Diff

Differences From Artifact [a3817d9edc]:

  • File src/mpi/problem.rs — part of check-in [59550c6fae] at 2023-04-06 16:24:53 on branch mpi — mpi::problem: mark oracle error as error source (user: fifr size: 10548)

To Artifact [a5e991e458]:

  • File src/mpi/problem.rs — part of check-in [cee7d40726] at 2023-04-06 16:29:18 on branch mpi — Rename `WorkerMsg::Update` to `WorkerMsg::ApplyUpdate` (user: fifr size: 10558)

188
189
190
191
192
193
194
195

196
197
198
199
200
201
202
188
189
190
191
192
193
194

195
196
197
198
199
200
201
202







-
+







                        let world = SystemCommunicator::world();
                        let client = world.process_at_rank(rank);

                        while let Ok((msg, result_tx)) = rx.recv() {
                            // send evaluation point
                            send_msg(&client, &msg);

                            if let WorkerMsg::Update(_) = msg {
                            if let WorkerMsg::ApplyUpdate(_) = msg {
                                // no response expected
                                continue;
                            }

                            let result_tx = result_tx.unwrap();

                            // wait for response
281
282
283
284
285
286
287
288

289
290
291
292
293
294
295
281
282
283
284
285
286
287

288
289
290
291
292
293
294
295







-
+







            .write()
            .unwrap()
            .compute_update(state, move |update| {
                let update = Arc::new(update);
                let world = SystemCommunicator::world();
                for rank in 1..world.size() as usize {
                    client_txs[rank - 1]
                        .send((WorkerMsg::Update(update.clone()), None))
                        .send((WorkerMsg::ApplyUpdate(update.clone()), None))
                        .unwrap()
                }
                let mut problem = problem.write().unwrap();
                problem.apply_update(&update)?;
                problem.send_update(&update, WorkerUpdateSender(tx))?;

                Ok(())