我希望在 MATLAB 中使用带有 spmd 的 labSend、labReceive 功能来执行以下操作:
- Lab1,运行全局优化例程并将中间结果传递给 Lab2
- Lab2,等待来自 Lab1 的中间结果(使用 labProbe),一旦收到使用此结果并开始新的优化程序。
- Lab3,4,..., n 等待来自 Lab_n-1 的先前结果,一旦收到使用此结果并开始新的优化程序。
问题:
Warning: An incoming message was discarded from lab 1 (tag: 1)
Warning: An incoming message was discarded from lab 1 (tag: 1)
Warning: An incoming message was discarded from lab 1 (tag: 1)
Warning: An incoming message was discarded from lab 1 (tag: 1)
Warning: An incoming message was discarded from lab 1 (tag: 1)
来自实验室发送的数据:
0.4907 0.3328 0.3625 0.5843 0.3159 0.5065 0.5100 0.4984 0.3336 0.5055
0.5216 0.5268 0.5002 0.4828 0.4907 0.3328 0.3625 0.5843 0.3159 0.5065
0.5100 0.4984 0.3336 0.5055 0.5216 0.5268 0.5002 0.4828 0.5010
这是为了 0.4907 是通过 labSend 发送的第一条消息。
从 labReceive 收到的最后一个值:
0.5055
这意味着来自 labSend 的最后 5 条消息被忽略。
现在,spmd 例程是异步的,因为它 1) 必须等待上一个实验的中间结果,并且 2) 优化例程随着它的进行而加速(搜索更小的域)
因此,之前的实验室可能会在 lab_n 有机会处理它们之前发送多条消息(执行其他操作)。
问题:
如果我正在查看 Lab2 并将其存储在某个地方,有没有办法立即处理(接收)来自 Lab1 的数据?或者有没有办法只处理最近的消息?并忽略任何排队的消息?
谢谢你的帮助!