Simulink缓存文件有什么用?

在使用Simulink进行仿真的过程中,经常会发现目录下存在一些后缀为.slxc的文件,这些其实就是Simulink模型的缓存文件(.slx + cache)。

Simulink缓存文件的主要作用是提高仿真和代码生成的效率。

借助缓存文件,可以避免每次仿真或代码生成时都重新编译模型,从而显著减少时间和计算资源的消耗。

Simulink 缓存文件可用于创建该文件所用的MATLAB版本和更高版本。

以下是一些具体用途和优点:

  1. 加速初始仿真和代码生成
    第一次仿真模型或生成代码时,Simulink会生成缓存文件(.slxc文件)。这些文件包含仿真和代码生成所需的构建工件。以后如果模型没有结构性变化,Simulink可以直接使用这些缓存文件,从而加速仿真和代码生成过程。
  2. 团队协作和连续集成
    在团队开发环境中,使用缓存文件可以简化并同步团队成员之间的模型更新和构建过程。缓存文件可以在团队成员之间共享,从而避免每个成员都进行重复的编译和构建操作。这在模型层次结构复杂且引用模型较多的情况下尤为有用。
  3. 增量代码生成
    当模型发生部分更改时,Simulink只会重新生成受影响的部分代码,而不是重新生成整个模型的代码。这样可以显著减少代码生成时间,并提高开发效率。
  4. 加速模式仿真
    在使用加速模式(如加速器模式和快速加速器模式)进行仿真时,缓存文件存储了仿真目标,避免每次仿真时重新生成执行引擎。这对于大型模型尤为重要,可以节省大量时间。
  5. 减少重复构建的开销
    如果使用持续集成系统(如Jenkins),这些系统可以定期构建模型并更新缓存文件,团队成员只需获取最新的缓存文件即可开始工作,避免了不必要的重新构建。

通过利用这些缓存文件,您可以大幅提高Simulink模型的仿真和代码生成效率,特别是在团队开发和复杂模型管理中。

缓存文件的内容

Simulink 缓存文件包含以下几类内容:

  • 加速目标(Accelerator Target)

    这些是用于加速模式下仿真的预编译代码和模型目标。它们允许在不重新编译整个模型的情况下快速进行仿真。

  • 快速加速目标(Rapid Accelerator Target)

    类似于加速器目标,但用于快速加速器模式,它生成独立的可执行文件来运行仿真

  • 模型引用的仿真目标

    包含引用模型的仿真目标,便于在模型层次结构中复用和加速仿真

  • 变量使用信息

    记录模型中变量的使用情况,帮助优化仿真和代码生成.

  • 代码生成目标

    包括用于Simulink Coder和Embedded Coder生成的代码目标文件。这些文件用于生成嵌入式系统的代码

  • 模型表示 (Simulink Design Verifier)

    由Simulink Design Verifier生成的模型表示,用于模型验证和分析

  • Web 视图

    由Simulink Report Generator 生成的模型Web视图,便于在网络上查看和共享模型

Simulink缓存对加速模式的影响

在之前的文章中讨论过Simulink的三种加速模式,无论哪一种加速模式,其原理都是基于对模型的部分内容进行提前编译。

而其编译的部分数据和文件就通过Simulink缓存来保存。

这里依旧使用发动机的燃料控制系统模型进行演示,在MATLAB命令行中输入下述代码即可打开该模型。

openExample('simulink_automotive/ModelingAFaultTolerantFuelControlSystemExample')

加速模式

通过下面的命令以加速模式运行模型

mdl = 'sldemo_fuelsys';
in = Simulink.SimulationInput(mdl);
in = setModelParameter(in,'SimulationMode','Accelerator');
% AccelVerboseBuild参数指定在为加速器模式仿真、快速加速器仿真和在加速器模式下仿真的参考模型构建仿真目标期间显示的信息量。
in = setModelParameter(in,'AccelVerboseBuild','on');
out = sim(in);

运行上述命令后会出现三种情况

  1. 无缓存时

当模型没有可用的缓存,或者自上次生成缓存文件以来对模型的结构进行了更改,Simulink 将执行校验和分析并生成加速器目标。

工件(artifact)将存储在缓存文件中,以便在后续模拟中重复使用。

“工件”(artifact)指的是在模型仿真或代码生成过程中创建的文件和数据

无缓存

  1. 有缓存时

如果有缓存可用,并且自缓存构建以来模型在结构上没有发生变化,Simulink 将提取信息,使执行引擎的生成速度更快。详细日志将会显示以下内容

有可用缓存

  1. 无任何信息

模型仿真一次后,加速器模式执行引擎将保留在内存中。如果未对模型结构进行更改,则详细日志中不会显示任何内容。

快速加速模式

通过下面的命令以快速加速模式运行模型。

mdl = 'sldemo_fuelsys';
in = Simulink.SimulationInput(mdl);
in = setModelParameter(in,'SimulationMode','Rapid');
out = sim(in);
  1. 无缓存时

    此时会对模型进行编译,用时取决于模型的复杂程度。

无缓存

  1. 模型结构修改导致缓存过期

    此时会提示生成的代码已过期,需要对模型进行重新编译。

缓存过期

  1. 有可用缓存

    此时仅执行模型与缓存的检查与验证,无需重新编译。

一些缓存文件的操作

可以使用slxcinfo函数来查询缓存文件的具体内容,该函数会返回一个包含缓存文件详细信息的MATLAB表格,通过这些信息,可以避免不必要的重建,从而加快仿真和代码生成过程。

这里依旧以上文的燃料控制系统模型为例,分别使用普通模式、加速模式、快速加速模式仿真模型后,通过slxcinfo函数可以查询模型缓存信息

slxcinfo("sldemo_fuelsys.slxc")

可以看到返回值是通过Matlab表记录了相应的 Simulink 模型名称、MATLAB 版本、平台和目标类型。

缓存信息

使用slxcunpack函数可以从 Simulink 缓存文件中解包仿真和代码生成目标

slxcunpack("sldemo_fuelsys.slxc")

缓存解包

同样以MATLAB表格形式提供的返回值可用于 Simulink 检查的 CI/CD 自动化工作流程,设置为基于模型的设计量身定制的pipeline、减少构建时间、减少构建失败、调试构建失败以及将基于模型的设计工作流程部署到团队和 CI 系统。

例如作为padv.util.unpackExternalCodeCache(cacheFiles)的输入值。

缓存文件路径设置

一般情况下,缓存文件存储在仿真缓存文件夹中,也就是对应模型的根目录下。

如需修改,可参考下图的步骤。

修改缓存路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web浏览器读写NFC Ntag标签

本示例使用的发卡器&#xff1a;RS232串口USB转COM读写器IC卡发卡器WEB浏览器二次开发JS编程SDK-淘宝网 (taobao.com) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&g…

不锈钢氩弧焊丝ER316L

说明&#xff1a;TG316L 是超低碳的不锈钢焊丝。熔敷金属耐蚀、耐热、抗裂性能优良。防腐蚀性能良好。 用途:用于石油化工、化肥设备等。也可用于要求焊接后不进行热处理的高Cr钢的焊接。

真实评测:可道云teamOS文件上传功能丝滑到爱不释手

对于每日沉浸在图片与视频海洋中的媒体工作者而言&#xff0c;与海量的多媒体文件打交道几乎成了家常便饭。 文件的上传和存储&#xff0c;对他们而言&#xff0c;不仅仅是工作中的一个环节&#xff0c;更像是将一天的辛勤与付出妥善安置的仪式。无论是突发现场的精彩瞬间&am…

海报在线制作系统源码小程序

轻松设计&#xff0c;创意无限 一款基于ThinkPHPFastAdminUniApp开发的海报在线制作系统&#xff0c; 本系统不包含演示站中的素材模板资源。​ 一、引言&#xff1a;设计新纪元&#xff0c;在线海报制作引领潮流 在数字时代&#xff0c;海报已成为传播信息、展示创意的重要媒…

配音软件哪个好用?推荐5款智能配音软件

随着期末考来袭&#xff0c;校园里的空气似乎都凝固了&#xff0c;每个角落都充满了紧张的气氛。 然而&#xff0c;在这紧张的氛围中&#xff0c;有一群学生却显得格外从容&#xff0c;因为他们掌握了一种秘密武器——配音软件。这些软件就像是他们的个人学习助理&#xff0c;…

git 中有关 old mode 100644、new mode 10075的问题解决小结

问题&#xff1a; 同一个文件被修改后&#xff0c;最后代码没有变&#xff0c;文件变了&#xff0c;导致提交了一个空文件 git diff 提示 filemode 发生改变&#xff08;old mode 100644、new mode 10075&#xff09; 解决办法 &#xff1a; 原来是 filemode 的变化&#xff…

虚拟机字节码执行引擎之运行时栈帧结构

概述 执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定…

彩虹PLM系统:引领汽车行业的数字化转型

彩虹PLM系统&#xff1a;引领汽车行业的数字化转型 彩虹PLM系统作为汽车行业数字化转型的引领者&#xff0c;凭借其卓越的技术实力和丰富的行业经验&#xff0c;为汽车行业带来了全面的解决方案。以下是彩虹PLM系统如何引领汽车行业数字化转型的详细分析&#xff1a; 一、整合全…

约课健身管理系统小程序源码

健身达人的智能助手 一款基于FastAdminThinkPHPUniapp开发的米扬约课健身管理系统&#xff0c;应用于健身房&#xff0c;健身工作室&#xff0c;运动会所&#xff0c;运动场馆&#xff0c;瑜伽馆&#xff0c;拳馆等泛健身行业的场馆中。米扬约课健身致力于为各种健身场馆打造真…

Verilog刷题笔记49——Fsm1同步复位

题目&#xff1a; 解题&#xff1a; module top_module(clk,reset,in,out);input clk;input reset;input in;output out;parameter A0,B1;reg [1:0]current_state,next_state;always(posedge clk)beginif(reset)current_stateB;elsecurrent_statenext_state;endalways(*)beg…

手机图片怎么上传到电脑记事本 保姆级教程

在这个数字化时代&#xff0c;手机成了我们随身携带的摄影棚。无论是旅途中的美景&#xff0c;还是与朋友欢聚的瞬间&#xff0c;手机总能轻松捕捉。然而&#xff0c;手机存储空间有限&#xff0c;那些珍贵的照片和视频&#xff0c;怎样才能安全又方便地保存下来&#xff0c;供…

PFA量杯:精确、实用、高颜值的量杯选择!

您是否在烹饪、实验室实验或日常使用中需要一个精确、实用且高颜值的量杯&#xff1f;PFA量杯是您最佳的选择&#xff01; PFA量杯采用高品质材料制成&#xff0c;具有良好的耐腐蚀性、耐高温性&#xff0c;使用寿命长。透明度极高的杯身&#xff0c;使您在使用时能够清晰地看…

LLM在软件测试中的革新应用

一、引言 随着人工智能技术的蓬勃发展&#xff0c;大语言模型&#xff08;Large Language Model&#xff0c;简称LLM&#xff09;如GPT系列&#xff0c;在自然语言处理领域取得了显著进展。LLM不仅能够处理复杂的自然语言任务&#xff0c;还在多个领域展现出广泛的应用潜力。在…

深圳网页设计收费情况

深圳是中国最具活力和发展速度最快的城市之一&#xff0c;随着经济的快速发展&#xff0c;各种行业都飞速发展&#xff0c;尤其是互联网行业。网页设计是互联网行业的重要组成部分&#xff0c;深圳的网页设计师数量也是非常庞大的。那么&#xff0c;深圳网页设计师的收费情况是…

MySQL之可扩展性(五)

可扩展性 向外扩展 7.在节点上部署分片 需要确定如何在节点上部署数据分片。以下是一些常用的办法: 1.每个分片使用单一数据库&#xff0c;并且数据库名要相同。典型的应用场景是需要为每个分片都能镜像到原应用的结构。这在部署多个应用实例&#xff0c;并且每个实例对应一…

【Linux学习十八】网站管理:防火墙介绍、静态站点、动态站点、域名

1.Apache Apache官网: www.apache.org 软件包名称: httpd 服务端口:80/tcp(http) 443/tcp(https) 配置文件: /etc/httpd/conf/httpd.conf 子配置文件:/etc/httpd/conf.d/*.conf 查看被占用的端口号 netstat -tuln | grep <端口号> 解哪个程序正在使用端口 80&#xff0…

Jenkins通过Squid代理服务器添加局域网节点机器

✨前言&#xff1a; 当jenkins在公网上的时候&#xff0c;如果要添加局域网内的服务器为节点机器构建的时候&#xff0c;这里就需要通过squid代理服务来实现了。当然你也可以使用其他的方式例如Apache等等&#xff0c;这里主要介绍通过Squid的方式。 &#x1f31f;什么是Squi…

DllImport进阶:参数配置与高级主题探究

深入讨论DllImport属性的作用和配置方法 在基础篇中&#xff0c;我们已经简单介绍了DllImport的一些属性。现在我们将深入探讨这些属性的实际应用。 1. EntryPoint EntryPoint属性用于指定要调用的非托管函数的名称。如果托管代码中的函数名与非托管代码中的函数名不同&#…

计算机组成原理 | CPU子系统(3)MIPS32指令架构

MIPS32架构指令格式 MIPS32架构寻址方式 指令的编码与功能

文本生成sql模型(PipableAI/pip-sql-1.3b)

安装环境 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install transformers 代码 question "What are the email address, town and county of the customers who are of the least common gender?"sc…