文件

通过使用并行构建减少引用模型的构建时间

在并行计算环境中,可以提高包含大型模型引用层次结构的模型的代码生成和编译速度。只要条件允许,通过并行构建参考模型来实现速度。例如,如果您有Parallel Computing Toolbox™软件,那么每个引用模型的代码生成和编译都可以分布在多核主机的各个核心上。如果你也有马铃薯®并行服务器™软件中,您可以跨远程工作人员分发每个引用模型的代码生成和编译MATLAB并行服务器配置。

用于大型模型参考层次结构的并行建筑

使用并行构建以引用模型实现的执行速度改进取决于若干因素。这些因素包括用于给定模型的代表层次结构,引用模型的大小以及并行计算资源的大小可以并行地建立有多少型号。该资源包括可用的本地和/或远程工作人员的数量和本地和远程计算机的硬件属性。硬件属性的示例是RAM的数量和核心数。

金宝app®缓存(.slxc)文件是在并行构建期间为整个模型引用层次结构生成的。有关更多信息,请参见金宝app增量代码生成的Simulink缓存文件

有关可应用于并行计算环境的配置需求,请参见平行建筑配置要求

有关在条件允许时并行构建引用模型的通用工作流的描述,请参见在并行计算环境中构建模型

有关如何配置自定义嵌入式系统目标文件以支持并行构建的信息,请参见金宝app金宝app支持模型引用

请注意

在一个MATLAB并行服务器并行计算配置,并行建筑设计与软件交互工作。可以从Simulink用户界面或MATLAB命令窗口使用如下命令初金宝app始化构建SLBUILD..您无法使用Builds使用或其他批量模式工作流程。

平行建筑配置要求

以下要求适用于配置并行计算模型参考层次结构的并行计算环境,只要条件允许:

  • 对于本地池,主机必须具有足够的RAM来支持您计划使用的本地工人(MATLAB会话)的数量。金宝app例如,使用parpool (4)使用四个worker创建一个并行池会在您的机器上产生五个MATLAB会话。每个池在启动时使用MATLAB和代码生成器所需的内存量。内存要求请参见对MATLAB和Simulink的系统要求金宝app

  • 远程MATLAB并行服务器参与并行构建和客户端机器的工作人员必须使用公共平台和编译器。

  • 必须在每个MATLAB工作者会话中设置一致的MATLAB环境,就像在MATLAB客户端会话中一样——例如,共享基本工作区变量、MATLAB路径设置,等等。一种方法是使用PreLoadFcn顶级模型的回调。如果将模型配置为使用每个MATLAB工作者会话加载顶部模型,则其预加载功能可用于任何MATLAB工人会话设置。

  • 在执行增量并行构建(引用模型层次结构构建)时,依赖回调来加载变量可能会导致构建错误。为了避免在并行构建期间出现此问题,请使用以下选项之一:

    • 不要依赖回调来管理引用模型的工作区变量,

    • 在构建之间运行命令spmd,bdclose全部,结束关闭并行构建工作程序上的所有模型。

    • 在构建之间,重新启动并行池。

在并行计算环境中构建模型

利用模型引用层次结构的并行构建:

  1. 在并行计算环境中设置本地和/或远程MATLAB工作者池。

    1. 确保并行计算工具箱软件已获得许可和安装。

    2. 要使用远程工作者,请确保MATLAB并行服务器软件已获得许可和安装。

    3. 发出MATLAB命令来设置并行池,例如,parpool (4)

  2. 从模型引用层次结构的顶部模型,打开“配置参数”对话框。选择启用并行模型引用构建(金宝app模型)复选框。此选择启用该参数用于构建的MATLAB工作者初始化(金宝appSimulink)。

    为了用于构建的MATLAB工作者初始化,选择以下值之一:

    • 没有一个如果软件不执行特殊工人初始化。如果模型引用层次结构中的子模型不依赖于基本工作区中的任何内容,则指定此值,超出它们的内容。一个例子是模型加载函数。

    • 复制基本工作空间如果软件更优选尝试将基本工作区复制到每个工人。如果使用设置脚本以准备要使用的多个模型的基础工作区,请指定此值。

    • 负载顶级模型如果最好是让软件将顶层模型加载到每个工人身上。如果模型引用层次结构中的顶部模型处理基本工作区设置,则指定此值。一个例子是模型加载函数。

    请注意

    只设置启用并行模型引用构建用于它所应用的模型引用层次结构的顶层模型。

  3. 可选地,打开用于模拟构建的详细消息,代码生成构建或两者。如果选择详细构建,则构建消息将报告每个并行构建的每个并行构建的进度。要生成构建消息,请选择以下配置参数:

    • 详细的加速器的构建

    • 详细的构建

    您可以在MATLAB命令窗口和并行构建日志文件中看到构建消息。

  4. 可选地,检查模型参考层次结构以根据模型依赖项确定哪些模型是并行构建的。您可以使用模型依赖性查看器。在这一点造型选项卡,评估和管理部分中,选择依赖关系>引用的模型实例

  5. 构建模型。当每个并行或串行构建开始和结束时,MATLAB命令窗口中的消息记录。参考模型的构建顺序是不确定的。每次构建模型时,他们可以以不同的顺序构建。

    如果您需要关于并行构建的更多信息,例如,如果构建失败,请参见定位并行构建日志

定位并行构建日志

如果在构建并行构建引用模型的模型时启动冗长构建,则当每个并行或串行构建开始和完成时,MATLAB命令窗口记录中的消息。例如,

###初始化并行模型参考构建的并行工作器。###并行工作器初始化完成。# # #开始并行模型参考SIM建立“bot_model001”# # #开始并行模型参考SIM建立“bot_model002”# # #开始并行模型参考SIM建立“bot_model003”# # #开始并行模型参考SIM建立“bot_model004”# # #完成并行模型参考SIM建立“bot_model001”# # #结束并行模型参考SIM建立“bot_model002”# # #完成并行模型参考SIM建立“bot_model003”# # #完成并行模型参考SIM建立“bot_model004”# # #开始并行模型参考RTW构建“bot_model001”# # #开始并行模型参考RTW构建“bot_model002”# # #并联模型开始参考RTW构建“bot_model003”# # #开始并行模型参考RTW构建“bot_model004”# # #完成并行模型参考RTW构建“bot_model001”# # #完成并行模型参考RTW构建“bot_model002”# # #完成并行模型参考RTW构建“bot_model003”# # #完成并行模型参考环球套票构建“bot_model004”

要获取有关并行构建的更详细信息,您可以检查并行构建日志。对于并行构建的每个引用模型,构建过程会生成名为的文件模型_buildlog.txt, 在哪里模型是被引用模型的名称。该文件包含该模型的完整构建日志。

如果并行构建完成,您可以在与引用模型相对应的构建子文件夹中找到构建日志文件。例如,对于引用模型的构建bot_model004.,查找构建日志文件bot_model004_buildlog.txt在引用模型子文件夹中,例如build_foldergrt / slprj / / bot_model004build_folder/ slprj ert / bot_model004,或build_folder/ slprj / sim / bot_model004.构建日志(诊断查看器)提供了到每个构建日志文件位置的相对路径。

如果并行构建失败,您可以看到类似如下的输出:

###初始化并行模型参考构建的并行工作器。###并行工作器初始化完成. ...# # #开始并行模型参考RTW构建“bot_model002”# # #开始并行模型参考RTW构建“bot_model003”# # #完成并行模型参考RTW构建“bot_model002”# # #完成并行模型参考RTW构建“bot_model003”# # #开始并行模型参考RTW构建“bot_model001”# # #开始### The parallel model reference RTW build for 'bot_model004' ### # The parallel model reference RTW build for 'bot_model004' ### # The parallel model reference RTW build for 'bot_model004' ### # The parallel model reference RTW build for 'bot_model001'

如果并行构建失败,您可以在构建子文件夹下的引用模型子文件夹中找到构建日志文件/ par_mdl_ref /模型.例如,对于失败的模型并行构建bot_model001.,查找构建日志文件bot_model001_buildlog.txt在子文件夹中,例如build_folder/ par_mdl_ref bot_model001 grt / slprj / / bot_model001build_folder/ par_mdl_ref / bot_model001 / slprj / ert / bot_model001,或build_folder/ par_mdl_ref / bot_model001 / slprj / sim / bot_model001

查看构建过程状态

构建过程状态窗口允许您查看正在进行的构建状态或取消正在进行的模型并行构建。在完成模型构建之后,您可以使用构建过程状态窗口。有关更多信息,请参见应用构建过程状态来改进并行构建

请注意

构建过程状态窗口支持引用模金宝app型层次结构的并行构建。请勿使用构建过程状态用于顺序(非并行)构建的窗口。

打开构建过程状态窗口,使用下列选项:

  • 打开构建过程状态窗口的模型,在命令窗口中输入:

    coder.buildstatus.open ('模型')
  • 打开构建过程状态窗口的模型rtwbuild函数,在命令窗口中,输入:

    RTWBuild('模型”,……“OpenBuildStatusAutomatically”,真的)
  • 打开构建过程状态窗口的模型SLBUILD.函数,在命令窗口中,输入:

    SLBUILD('模型”、“StandaloneCoderTarget”,……“OpenBuildStatusAutomatically”,真的)

若要取消正在进行的模型构建,则构建过程状态窗口提供了一个取消按钮。此按钮取消当前模型或引用模型构建完成后的构建。使用cancel停止构建结束了构建过程,而不会创建需要构建后清理的过时的构建构件。

应用构建过程状态来改进并行构建

构建过程状态窗口允许您查看正在进行的构建状态或取消正在进行的模型并行构建。有关更多信息,请参见查看构建过程状态

此示例演示如何从并行构建应用构建过程状态。状态信息可以帮助您确定通过修改引用的模型层次结构来改进并行构建的方法。

  1. 为构建过程打开一个并行池,并将模型文件夹添加到所有工人的路径。

    SPMD addpath(fullfile(matlabroot,'工具箱','rtw','rtwdemos','rtwdemo_parallelbuild')) end . / /添加路径
  2. 打开引用模型层次结构中的顶级模型。的rtwdemo_parabuild_a_1Model指的是一些参考模型。

    open_system(“rtwdemo_parabuild_a_1”)

  3. 使用模型依赖关系查看器查看模型依赖关系。在这一点造型选项卡,评估和管理部分中,选择依赖关系>引用的模型实例

    在构建过程中,构建过程状态窗口显示代码生成器的进度,因为它将引用的模型层次结构运行。代码生成器按顺序构建引用的模型,以阻止构建依赖树的模型。

  4. 启动引用模型层次结构的并行构建,并打开“构建过程状态”窗口。

    RTWBUILD('RTWDEMO_PARABUILD_A_1','OPENBUIDSTATOSAUTOMALICAL',TRUE)
  5. 随着构建的进行,“构建过程状态”窗口将显示每个引用模型的状态。

该表描述了构建状态的类型。

构建过程状态 描述

阻塞

代码生成器无法安排模型构建,因为构建被依赖项阻塞了。例如,另一个模型构建必须在计划阻塞构建之前完成。

计划

对于并行构建过程,代码生成器在未被依赖项阻止时调度模型构建。模型构建在预定状态等待,直到可用于处理模型构建的并行核心。

建筑

代码生成器正在执行模型的构建过程。

完成错误

当构建过程成功退出时,状态已完成。构建过程不成功时,状态为错误。

最新的

当构建过程检测到它不需要生成代码时(例如,生成的代码与模型是当前的),状态为Up to Date。

取消取消了

当你使用的时候取消构建按钮时,构建过程将未完成构建的状态更改为cancel。处理“取消”操作后,构建流程将这些构建的状态更改为“已取消”。

流逝时间显示构建过程在哪里花费时间。使用模型层次结构的依赖项树和参考模型构建的持续时间来确定构建过程花费最多时间的位置,并限制构建进度。减少并行构建时间的一些选项包括:

  • 重新调整引用的模型层次结构以减少个别模型的构建时间。

  • 在池中提供足够的并行工作器,以匹配正在构建的引用模型依赖项的数量。

也可以看看

|||

相关的话题