您可以使用外部模式模拟快速原型。外部模式仿真在Simulink之间建立通信通道金宝app®在您的开发计算机(主机)和运行由代码生成和构建过程创建的可执行文件的目标硬件上。
通过沟通渠道,您可以:
实时修改或调优块参数。当您更改模型中的参数时,Simulink将新值下载到正在执行的目标应用程序。金宝app
监视并保存来自执行目标应用程序的信号数据。
通道的低级传输层处理消息的传输。金宝appSimulink和生成的模型代码独立于这一层。传输层及其接口代码被隔离在单独的模块中,这些模块格式化、传输和接收消息和数据包。
设置并运行使用TCP/IP或串行(RS-232)通信通道的外部模式模拟。
创建并配置一个简单的模型。
构建目标可执行文件。
运行目标应用程序。
调优参数。
曼德尔布罗特集是复平面上由这些值组成的区域z0由这个方程定义的轨迹在k→∞.
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上运行。这个计算是向量化的,这样每个位置都会同时更新。
创建一个Simul金宝appink模型并插入一个MATLAB函数从用户定义函数图书馆。
双击MATLAB函数块。属性中出现默认函数签名MATLAB函数块编辑器。
定义一个函数mandelbrot_count
,实现了Mandelbrot算法。函数头声明maxIterations
,xGrid
,yGrid
作为一个参数mandelbrot_count
函数,数
作为返回值。
函数count = mandelbrot_count(maxIterations, xGrid, yGrid)% mandelbrot计算z0 = xGrid + 1i*yGrid;Count = ones(size(z0));将计算映射到GPUcoder.gpu.kernelfun;Z = z0;为n = 0:maxIterations z = z.*z + z0;Inside = abs(z)<=2;计数=计数+内部;结束Count = log(Count);
的块参数MATLAB函数块。在代码生成选项卡上,选择可重用的功能
为函数包装参数。
如果函数包装参数设置为任何其他值,CUDA®内核可能无法生成。
如图所示,把这些块连接起来。将模型另存为mandelbrot_top.slx
.
设置外部模式目标应用程序所需的模型和代码生成参数。然后,生成代码并构建目标应用程序。
从应用程序选项卡中的Simuli金宝appnk工具条中的在硬件上运行的设置部分中,点击在硬件板上运行.
在硬件板节,从硬件板列表中,选择英伟达杰森
.
在准备部分中,点击硬件设置.打开“配置参数”对话框,显示硬件实现由所选单板决定的设置。
在解算器面板:
在类型字段中,选择固定步
.
在解算器字段中,选择离散(无连续状态)
.
点击解算器的细节.在固定的大小字段中,指定0.1
.(否则,当你生成代码时,GPU Coder™构建过程会产生一个警告并提供一个值。)
点击应用.
在数据导入/导出窗格中,清除时间而且输出复选框。在本例中,数据没有记录到工作区或mat文件。点击应用.
在代码生成>优化派恩,确保默认参数行为设置为可调
.如果要更改,请单击应用.
在代码生成>接口窗格,在数据交换接口部分中,选择外部模式.
在外部模式配置部分,请确保您选择了默认值tcpip
为传输层参数。
的MEX-file名字指定实现主机-目标通信的mex文件的名称。TCP/IP的默认值是ext_comm
方法提供的一个mex文件金宝app仿真软件编码器™软件
的MEX-file参数field允许您指定参数,例如TCP/IP服务器端口号,以传递给外部接口程序。这些参数特定于您正在使用的外部接口。
本教程使用默认参数。离开MEX-file参数字段空白。
的静态内存分配复选框控制如何为目标中的外部模式通信缓冲区分配内存。对于本教程,不要选中复选框。
点击应用保存外部模式设置。
保存模型。
选择代码生成窗格。确保只生成代码清除。
要生成代码并创建目标应用程序,请在模型窗口中按一下Ctrl + B.或者,在硬件选项卡,在在硬件上运行部分中,点击监视和调优.然后,在分步命令,点击为监控而构建.
软件创建mandelbrot_top
工作文件夹中的可执行文件。
运行mandelbrot_top
目标可执行文件,并使用Simulink作为运行的目标金宝app应用程序的交互式前端。可执行文件在工作文件夹中。运行目标应用程序并在Simulink和目标之间建立通信。金宝app
运行目标应用程序:
在硬件选项卡,在在硬件上运行部分:
在停止时间字段中,指定正
,这将使模型运行,直到目标应用程序接收到来自Simulink的停止消息金宝app
点击监视和调优.然后,在分步命令,点击部署.
目标应用程序开始执行,并进入等待状态。
在硬件选项卡,在在硬件上运行部分中,点击监视和调优.然后,在分步命令,点击连接.当Simu金宝applink与目标连接时,将连接按钮更改为断开连接.
在在硬件上运行部分中,点击,它开始执行生成的模型代码。
您已经在Simulink和正在运行的目标应用程序之间建立了通信。金宝app
请注意
在包含深度学习网络的Simulink模型上进行外部模式仿真时,在目标上初始化模型时可能会金宝app出现超时错误。这个超时可能是因为可执行文件的初始化时间超过了默认的最大加载时间300秒。方法可以增加超时时间NVIDIA_XCP_EXTMODE_INIT_TIME
环境变量。例如,在MATLAB命令窗口中输入:
setenv (“NVIDIA_XCP_EXTMODE_INIT_TIME”,“500”);
要同时断开Simulink与主机/目标通信并结束目标应用程金宝app序的执行,请在硬件选项卡,在在硬件上运行部分中,点击停止.
open_system
(金宝app模型)|load_system
(金宝app模型)|save_system
(金宝app模型)|close_system
(金宝app模型)|bdclose
(金宝app模型)|get_param
(金宝app模型)|set_param
(金宝app模型)|sim卡
(金宝app模型)|slbuild
(金宝app模型)