GPU编码器™生成优化的CUDA®代码从仿真软件金宝app®模型包含MATLAB函数块。您可以使用生成的代码和可执行的NVIDIA快速原型®gpu。代码生成报告和可追溯性允许您查看和分析生成的代码。CUDA代码生成的基本步骤使用GPU编码器:
创建或打开一个模型。
为代码生成通过选择配置模型解算器,语言,工具链和其他GPU-specific配置参数。
构建的模型。
Sobel边缘检测算法是一个简单的边缘检测算法,执行一个灰度图像上的二维空间梯度操作。该算法强调高空间频率区域对应于输入图像的边缘。
Sobel边缘算法计算水平梯度(H
)和垂直梯度(V
)输入的图像通过使用两个正交滤波器内核(k
和k”
)。过滤操作后,该算法计算梯度大小和一个阈值适用于找到图像的区域,被认为是边缘。
单([k = 1 2 1;0 0 0;1 2 1]);H = conv2(单(grayImage), k,“相同”);V = conv2(单(grayImage), k’,“相同”);E =√H。* H + V * V);edgeImage = uint8 ((E >阈值)* 255);
创建一个仿真软件模金宝app型和插入两个MATLAB函数块的用户定义函数图书馆。
添加一个常数块并将其值设置为0.4
。
添加一个从多媒体文件块的计算机视觉工具箱™图书馆。
打开块的参数对话框的从多媒体文件块并设置文件名称参数rhinos.avi
。
设置图像信号参数一个多维信号
。
添加两个视频查看器块的计算机视觉的工具箱对模型库。
双击其中的一个MATLAB函数块。一个默认的函数签名出现在MATLAB函数块编辑器。
定义一个函数调用索贝尔
,实现了Sobel边缘检测算法。函数头声明grayImage
和阈值
作为一个参数索贝尔
函数,edgeImage
的返回值。保存编辑文档文件。
函数edgeImage =索贝尔(grayImage阈值)% # codegen%定义Sobel边缘检测的内核单([k = 1 2 1;0 0 0;1 2 1]);%检测边缘H = conv2(单(grayImage), k,“相同”);V = conv2(单(grayImage), k’,“相同”);E =√H。* H + V * V);edgeImage = uint8 ((E >阈值)* 255);结束
打开块参数MATLAB函数块。在代码生成选项卡上,选择可重用的功能
为函数包装参数。
如果函数包装参数设置为其它值,CUDA内核可能不会得到生成。
修改其他MATLAB函数块实现RGB灰度转换前Sobel边缘检测操作。设置函数包装参数的MATLAB函数块可重用的功能
。
函数灰色= RGB2gray (RGB)% # codegen%将彩色图像转换为灰色图像灰色=(0.2989 *双(RGB (:,: 1)) +…0.5870 *双(RGB (:,: 2)) +…0.1140 *双(RGB (:,:, 3)));结束
连接这些块如图表所示。保存模型edgeDetection.slx
。
测试错误的模型,模拟模型在模型编辑器中。金宝app在将来发布,点击运行。
在模拟看到所有视频帧,禁用模拟>降帧来提高性能选择的视频查看器块。
模型配置参数提供许多选项的代码生成和构建过程。
打开配置参数对话框。打开解算器窗格。编制加速度模型并生成CUDA代码,配置模型使用一个固定的解决者。此表显示了这个示例的解算器配置。
参数 | 设置 | 影响生成的代码 |
---|---|---|
类型 | 固定步 |
保持一个常数(固定)步长,所需的代码生成 |
解算器 | 离散(没有连续状态) |
适用于固定的集成技术,计算模型的状态导数 |
固定的大小 | 汽车 |
金宝app模型选择步长 |
在代码生成窗格中,设置系统目标文件来grt.tlc
。
您还可以使用嵌入式编码器®目标文件ert.tlc
。
设置语言来c++
。
选择生成GPU的代码。
在代码生成窗格中,选择只生成代码。
选择工具链。Linux®平台,选择NVIDIA CUDA | gmake(64位Linux)
。对于Windows®系统,选择NVIDIA CUDA (w / Microsoft Visual c++ 20 xx) | nmake(64位windows)
。
在代码生成>界面窗格中,禁用MAT-file日志。
在代码生成报告>窗格中,选择创建代码生成报告和自动打开报告。
当你使生成GPU的代码参数,针对GPU编码器出现在选项代码生成> GPU的代码窗格。
对于这个示例,您可以使用GPU-specific参数的默认值代码生成> GPU的代码窗格。
点击好吧保存并关闭配置参数对话框。
您可以使用set_param
功能配置在MATLAB编程模型参数®命令窗口。
set_param (“edgeDetection”,“GenerateGPUCode”,CUDA的);
在模型编辑器中金宝app打开金宝app仿真软件编码器应用程序。
生成的代码。
消息出现在诊断查看器。代码生成器产生源CUDA和头文件,和一个HTML代码生成报告。代码生成器的文件在一个地方建立文件夹,一个子文件夹命名edgeDetection_grt_rtw
在你当前的工作目录。
你可以找到的CUDA内核< model_name > _eML_blk_kernel
和< model_name > _eML_blk_kernel_c
功能。三重标记内的信息是执行配置内核。
GPU的代码生成MATLAB函数块Stateflow®不支持图表。金宝app
的MATLAB函数阻止不支持的所有数据类型的MA金宝appTLAB语言。支持的数金宝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模型)