Simulink并行运行块?

时间:2016-06-15 17:45:03

标签: matlab parallel-processing simulink

假设我在Simulink中有一个大型模型,让它称之为模型A.现在考虑模型A的一个非常小的子集,称之为模型B.当模型B计算某些东西时,这些结果会被发送给其他模型A的一部分,他们做某些事情作为其功能。然而,模型B可能需要很长时间来计算 - 然而,这对于模型A的这些其他模块来说不是问题,他们很乐意在模型B完成计算时从模型B接收数据。本质上,我希望模型B将并行运行到模型A,这样在等待模型B完成其工作时不会停止整个模拟/过程。这可以在Simulink中做到吗?

1 个答案:

答案 0 :(得分:1)

我认为数据流域旨在解决您所描述的问题。

它会自动划分您的Simulink模型并使用多个线程来模拟子系统。

在具有数据流域的模型的仿真和代码生成中,该软件都会识别系统中可能存在的并发性,并使用两种并行性对数据流域进行分区。

  1. 任务并行性
  2. 模型管道执行(管道设计)。

任务并行性

任务并行性通过将应用程序拆分为多个任务来实现并行性。任务并行性涉及跨多个处理节点在应用程序内分布任务。有些任务可能与其他任务有数据依赖性,因此所有任务不会完全同时运行。

模型管道执行:

该软件使用模型流水线执行或流水线来解决任务并行性问题,即线程不能完全并行运行。这种方法涉及修改系统,以在存在数据依赖性的任务之间引入延迟。

请查看下面的链接

https://www.mathworks.com/help/dsp/ug/dataflow-domains.html

https://www.mathworks.com/help/dsp/ug/multicore-simulation-and-code-generation-of-dataflow-systems.html