主要内容

外部模式的参数调谐和信号监控

您可以使用外部模式模拟进行快速原型。外部模式仿真建立了Simulink之间的通信通道金宝app®在开发计算机(主机)和运行代码生成和生成过程创建的可执行文件的目标硬件上。

通过通信渠道,您可以:

  • 实时修改或调整块参数。当您更改模型中的参数时,Simulink将新值下载到正在执行的目标应用程序中。金宝app

  • 监视和保存来自正在执行的目标应用程序的信号数据。

通道的低层传输层处理消息的传输。金宝appSimulink和生成的模型代码是独立于这一层的。传输层及其接口代码被隔离在单独的模块中,这些模块格式化、传输和接收消息和数据包。

设置并运行使用TCP/IP或串行(RS-232)通信信道的外部模式模拟。

  1. 创建并配置一个简单的模型。

  2. 构建目标可执行文件。

  3. 运行目标应用程序。

  4. 调优参数。

示例:Mandelbrot集

描述

曼德尔勃洛特集是复平面中由这些值组成的区域z0由这个方程定义的轨迹是有界的k→∞

z k + 1 z k 2 + z 0 k 0 1 ...

图中显示了Mandelbrot集合的整体几何结构。该视图的分辨率不足以显示集合边界外的条纹的丰富细节结构。随着放大倍数的增加,Mandelbrot集合显示出一个精细的边界,显示出越来越精细的递归细节。

曼德尔勃洛特集的几何

算法

对于本教程,选择一组限制,指定在主心脏线和之间的谷中Mandelbrot集合的高度放大部分p / q灯泡在它的左边。一个1000乘1000的真实零件网格(x)和虚部(y)是在这两个界限之间创建的。然后在每个网格位置迭代Mandelbrot算法。迭代次数为500时,图像将呈现为全分辨率。

maxIterations = 500;gridSize = 1000;xlim = [-0.748766713922161, -0.748766707771757];ylim = [0.123640844894862, 0.123640851045266];

本教程使用标准MATLAB实现Mandelbrot集®CPU上运行的命令。这个计算被向量化,这样每个位置都是同时更新的。

创建曼德布洛特模型

  1. 创建一个Simul金宝appink模型并插入一个MATLAB函数块的用户定义函数图书馆

  2. 双击MATLAB函数块。函数的默认签名出现在MATLAB函数块编辑器。

  3. 定义一个名为曼德布罗特计数,它实现了Mandelbrot算法。函数头声明maxIterationsxGrid伊格里德作为对曼德布罗特计数函数,作为返回值。

    作用count = mandelbrot_count(maxIterations, xGrid, yGrid)曼德布洛特百分比计算z0 = xGrid + 1i*yGrid;数= 1(大小(z0));%将计算映射到GPUcoder.gpu.kernelfun;z = z0;n = 0:maxIterations z = z.*z + z0;在= abs (z) < = 2;Count = Count +内部;结束数=日志(数);

  4. 的块参数MATLAB函数街区,在街上代码生成选项卡,选择可重用函数函数包装参数。

    如果函数包装参数设置为任何其他值CUDA®内核可能不会生成。

  5. 添加输入(金宝app模型)块和外埠(金宝app模型)块的来源图书馆

  6. 如图所示连接这些块。将模型保存为mandelbrot_top.slx

    金宝app显示块之间连接的Simulink模型。

生成目标可执行文件

设置外部模式目标应用程序所需的模型和代码生成参数。然后,生成代码并构建目标应用程序。

  1. 应用程序选项卡上的金宝app安装到在硬件上运行部分中,点击在硬件板上运行

  2. 硬件板节,从硬件板列表中,选择英伟达杰森

  3. 准备部分中,点击硬件设置. 将打开“配置参数”对话框,其中显示硬件实现由所选板确定的设置。

  4. 解算器窗格:

    1. 类型字段,选择固定步

    2. 解算器字段,选择离散(无连续状态)

    3. 点击解算器详细信息.在固定的大小字段,指定0.1. (否则,生成代码时,GPU编码器™ 生成过程生成警告并提供值。)

    4. 点击应用

  5. 数据导入/导出窗格,清除时间输出复选框。在本例中,数据没有记录到工作区或mat文件中。点击应用

  6. 代码生成>优化窗格,确保默认参数行为设置为可调.如果需要更改,请单击应用

  7. 代码生成>接口窗格,在数据交换接口部分中,选择外部模式

  8. 外部模式配置节中,确保选择了默认值tcpip传输层参数。

    MEX文件名指定实现主机-目标通信的mex文件的名称。TCP/IP的默认值是外线通信,随提供的MEX文件金宝appSimulink编码器™软件

    MEX文件参数字段使您可以指定传递给外部接口程序的参数,例如TCP/IP服务器端口号。这些参数特定于您正在使用的外部接口。

    本教程使用默认参数。离开MEX文件参数字段空白。

    静态内存分配该复选框控制如何为目标中的外部模式通信缓冲区分配内存。对于本教程,请不要选中该复选框。

  9. 点击应用保存外部模式设置。

  10. 保存模型。

  11. 选择代码生成窗格。确保只生成代码清除。

  12. 要生成代码并创建目标应用程序,请在模型窗口中按Ctrl+B.或者,在硬件选项卡,在在硬件上运行部分中,点击监视和优化. 然后,在分步命令点击构建监测

    软件创建mandelbrot_top可执行文件在您的工作文件夹。

运行目标应用程序

运行mandelbrot_top目标可执行文件,并将Simulink用作运行目标应用金宝app程序的交互式前端。可执行文件位于您的工作文件夹中。运行目标应用程序并在Simulink和目标之间建立通信。

要运行目标应用程序,请执行以下操作:

  1. 硬件选项卡,在在硬件上运行第节:

    1. 停止时间字段,指定inf,使模型运行,直到目标应用程序从Simulink接收到停止消息金宝app

    2. 点击监视和优化. 然后,在分步命令点击部署

    目标应用程序开始执行,并进入等待状态。

  2. 硬件选项卡,在在硬件上运行部分中,点击监视和优化. 然后,在分步命令点击连接. 连接Sim金宝appulink和目标时连接按钮更改断开连接

  3. 在硬件上运行部分中,点击,它开始执行生成的模型代码。

您已经在Simulink和正在运行的目标应用程序之间建立了通信。金宝app

请注意

在包含深度学习网络的Simulink模型上执行外部模式模拟时,目标上的模型初始化期间可能金宝app会发生超时错误。此超时可能是因为可执行文件的初始化时间超过默认的最大加载时间300秒。您可以使用NVIDIA_XCP_EXTMODE_INIT_TIME环境变量。例如,在MATLAB命令窗口中,输入:

setenv ('NVIDIA_XCP_EXTMODE_INIT_TIME'“500”);

停止目标应用程序

同时断开Simulink与主机/目标通信的连接,并结束目标金宝app应用程序的执行硬件选项卡,在在硬件上运行部分中,点击停止

另请参阅

功能

相关的话题