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
                        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 {
                                // no response expected
                                continue;
                            }

                            let result_tx = result_tx.unwrap();

                            // wait for response







|







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::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
            .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))
                        .unwrap()
                }
                let mut problem = problem.write().unwrap();
                problem.apply_update(&update)?;
                problem.send_update(&update, WorkerUpdateSender(tx))?;

                Ok(())







|







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::ApplyUpdate(update.clone()), None))
                        .unwrap()
                }
                let mut problem = problem.write().unwrap();
                problem.apply_update(&update)?;
                problem.send_update(&update, WorkerUpdateSender(tx))?;

                Ok(())