您可以使用外部模式模拟进行快速原型。外部模式仿真建立了Simulink之间的通信通道金宝app®在您的开发计算机(主机)和运行代码生成和构建过程创建的可执行文件的目标硬件上。
通过沟通渠道,您可以:
实时修改或调整块参数。当您更改模型中的参数时,Simulink将新值下载到正在执行的目标应用程序中。金宝app
监视和保存来自正在执行的目标应用程序的信号数据。
通道的低层传输层处理消息的传输。金宝appSimulink和生成的模型代码是独立于这一层的。传输层及其接口代码被隔离在单独的模块中,这些模块格式化、传输和接收消息和数据包。
设置和运行使用TCP/IP或串行(RS-232)通信信道的外部模式模拟。
创建并配置一个简单的模型。
构建目标可执行文件。
运行目标应用程序。
调优参数。
曼德尔勃洛特集是复平面中由这些值组成的区域z0由这个方程定义的轨迹是有界的k→∞.
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上运行的命令。这个计算被向量化,这样每个位置都是同时更新的。
创建一个Simul金宝appink模型并插入一个MATLAB函数块的用户定义函数图书馆。
双击MATLAB函数块。函数的默认签名出现在MATLAB函数块编辑器。
定义一个名为mandelbrot_count
,它实现了Mandelbrot算法。函数头文件声明maxIterations
,xGrid
,yGrid
作为一个论点mandelbrot_count
函数,数
作为返回值。
函数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 +内部;结束数=日志(数);
的块参数MATLAB函数块。在代码生成选项卡上,选择可重用的功能
为函数包装参数。
如果函数包装参数设置为任何其他值,CUDA®内核可能不会生成。
如图所示连接这些块。将模型保存为mandelbrot_top.slx
.
设置外部模式目标应用程序所需的模型和代码生成参数。然后,生成代码并构建目标应用程序。
从应用程序选项卡上的金宝app安装到在硬件上运行部分中,点击在硬件板上运行.
在硬件板的部分,硬件板列表中,选择英伟达杰森
.
在准备部分中,点击硬件设置.打开“配置参数”对话框,显示如下信息硬件实现由所选单板决定的设置。
在解算器面板:
在类型字段中,选择固定步
.
在解算器字段中,选择离散(无连续状态)
.
点击解算器的细节.在固定的大小字段中,指定0.1
.(否则,当你生成代码时,GPU Coder™构建过程会产生一个警告并提供一个值。)
点击应用.
在数据导入/导出窗格中,清除时间和输出复选框。在本例中,数据没有记录到工作区或mat文件中。点击应用.
在代码生成>优化帕恩,确保默认参数的行为被设置为可调
.如果需要更改,请单击应用.
在代码生成>接口窗格中,在数据交换接口部分中,选择外部模式.
在外部模式配置节中,请确保选择了默认值tcpip
为传输层参数。
的MEX-file名字指定实现主机-目标通信的mex文件的名称。TCP/IP的默认值是ext_comm
中提供的一个mex文件金宝app仿真软件编码器™软件
的MEX-file参数字段使您可以指定传递给外部接口程序的参数,例如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模型)