主要内容

通过使用GPU编码器模拟加速度

您可以使用GPU编码器™加快你的模型的执行万博1manbetx®模型英伟达®gpu。GPU-accelerated计算遵循一个异构编程模型。高度并行的部分应用程序映射到内核执行成千上万的GPU并行核心,而剩下的顺序代码仍然在CPU上运行。

执行GPU-accelerated模拟、模型仿真软件的计算密集型应用程序的一部分使用万博1manbetxMATLAB函数(万博1manbetx模型)块。当你模拟模型,该模型包含了一个MATLAB函数块,并生成CUDA软件分区®MATLAB®可执行(墨西哥人)代码,这段代码与仿真软件模型集成。万博1manbetx

模拟加速利用GPU编码器的基本步骤是:

  • 创建或打开一个模型。

  • 为GPU加速通过选择配置模型解算器,语言和其他GPU-specific配置参数。

  • GPU加速运行模型。

例子:Sobel边缘检测

Sobel边缘检测算法是一个简单的边缘检测算法,执行一个灰度图像上的二维空间梯度操作。该算法强调高空间频率区域对应于输入图像的边缘。

Sobel边缘算法计算水平梯度(H)和垂直梯度(V)输入的图像通过使用两个正交滤波器内核(kk”)。过滤操作后,该算法计算梯度大小和一个阈值适用于找到图像的区域,被认为是边缘。

单([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辣椒。png图像测试及其边缘检测到输出。

创建边缘检测模型

  1. 创建一个仿真软件模万博1manbetx型和插入两个MATLAB函数块的用户定义函数图书馆。

  2. 添加一个常数块并将其值设置为0.4

  3. 添加一个从多媒体文件块的计算机视觉工具箱™图书馆。

  4. 打开块的参数对话框的从多媒体文件块并设置文件名称参数rhinos.avi

    设置图像信号参数一个多维信号

  5. 添加两个视频查看器块的计算机视觉的工具箱对模型库。

    万博1manbetx仿真软件模型包含块实现边缘检测算法。

  6. 双击其中的一个MATLAB函数块。一个默认的函数签名出现在MATLAB函数块编辑器。

  7. 定义一个函数调用索贝尔,实现了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);结束

  8. 打开块参数MATLAB函数块。在代码生成选项卡上,选择可重用的功能函数包装参数。

    如果函数包装参数设置为其它值,CUDA内核可能不会得到生成。

  9. 修改其他MATLAB函数块实现RGB灰度转换前Sobel边缘检测操作。设置函数包装参数的MATLAB函数可重用的功能

    函数灰色= RGB2gray (RGB)% # codegen%将彩色图像转换为灰色图像灰色=(0.2989 *双(RGB (:,: 1)) +0.5870 *双(RGB (:,: 2)) +0.1140 *双(RGB (:,:, 3)));结束
  10. 连接这些块如图表所示。保存模型edgeDetection.slx

    万博1manbetx仿真软件模型显示模块之间的连接。

  11. 测试错误的模型,模拟模型在模型编辑器中。万博1manbetx在将来发布,点击运行

    在模拟看到所有视频帧,禁用模拟>降帧来提高性能选择的视频查看器块。

    边缘检测视频查看器的输出块。

为GPU加速配置模型

模型配置参数决定加速度方法在模拟。

  1. 打开配置参数对话框。打开解算器窗格。编制加速度模型并生成CUDA代码,配置模型使用一个固定的解决者。此表显示了这个示例的解算器配置。

    参数 设置 影响生成的代码
    类型 固定步 保持一个常数(固定)步长。
    解算器 离散(没有连续状态) 适用于固定的集成技术,计算模型的状态导数。
    固定的大小 汽车 万博1manbetx模型选择步长。

    快照的配置参数对话框显示为仿真解算器选项。

  2. 模拟目标窗格中,使GPU加速参数。

    请注意

    语言参数自动设置c++

  3. 现在可见的GPU编码器特定选项模拟目标> GPU加速窗格。对于本示例中,您可以使用所有GPU-specific参数的默认值。

    GPU加速面板模型的配置参数对话框。

  4. 保存并关闭配置参数对话框中,点击好吧

    您还可以使用set_param(万博1manbetx模型)功能配置模型参数在MATLAB编程命令窗口。

    set_param (“edgeDetection”,“GPUAcceleration”,“上”);

构建GPU加速的模型

构建和模拟GPU加速模型,选择运行模拟选项卡或使用MATLAB命令如下:

sim卡(“edgeDetection”);

软件首先检查是否CUDA代码之前编译的模式。如果以前创建的代码,运行的软件模型。如果代码没有之前构建,CUDA首先生成和编译的软件代码,然后运行模型。代码生成工具生成的代码在一个地方工作文件夹的子文件夹slprj / _slprj / edgeDetection

边缘检测视频查看器的输出块。

限制

  • GPU的代码生成MATLAB函数块Stateflow®不支持图表。万博1manbetx

  • GPU加速启用,代码生成器不支持万博1manbetx导入自定义代码对进口自定义编写CUDA源文件(* .cu)。相反,使用coder.cevalMATLAB函数块。

  • MATLAB函数阻止不支持的所有数据类型的MA万博1manbetxTLAB语言。支持的数万博1manbetx据类型,参考文档。

另请参阅

功能

相关的话题