主要内容

GPU Coderを使用したSi万博1manbetxmulinkモデルからのコド生成

GPU Coder™は,MATLAB函数ブロックを含むS万博1manbetximulink®モデルから,最適化されたcuda®コドを生成します。生成されたコドと実行可能ファルを使用して,英伟达®显卡でのラピッドプロトタ显卡ピングを行うことができます。コド生成レポートとトレーサビリティによって、生成されたコードを表示して解析できます。GPU Coder を使用した CUDA コード生成の基本的な手順は次のとおりです。

  • モデルを作成するか開きます。

  • [ソルバ][言語][ルチェン]およびその他のGPU固有のコンフィギュレーションパラメーターを選択して,コード生成用のモデルを構成します。

  • モデルをビルドします。

例:ソベルエッジ検出

ソーベルエッジ検出アルゴリズムは,グレースケールイメージで2次元の空間勾配演算を行う,シンプルなエッジ検出アルゴリズムです。このアルゴリズムは、入力。

ソベルエッジ検出アルゴリズムは,2の直交フィルタ(kk”)を使用して、入力(H)と垂直方向勾配(Vを計算します。このアルゴリズムは,フィルター処理演算を実行した後,勾配の大きさを計算してしきい値を適用し,エッジと考えられるイメージの領域を見つけます。

K = single([1 2 1;0 0 0;-1 -2 -1];H = conv2(single(grayImage),k,“相同”);V = conv2(single(grayImage),k',“相同”);E =√(H。* h + v * v);edgeImage = uint8((E >阈值)* 255);

MATLAB pepper .png测试图像及其边缘检测输出。

エッジ検出モデルの作成

  1. 万博1manbetxSimulinkモデルを作成し,(用户自定义函数)ラ操作系统管理员ブラリから2操作系统管理员のMATLAB函数ブロックを挿入します。

  2. 常数ブロックを追加して,その値を0.4に設定します。

  3. [计算机视觉工具箱™]ラ邮箱ブラリから来自多媒体文件ブロックを追加します。

  4. 来自多媒体文件ブロックの[ブロックパラメタ]ダアログボックスを開き,[ファル名]パラメタをrhinos.aviに設定します。

    [econメジ信号]パラメタを[1 wqの多次元信号]に設定します。

  5. [计算机视觉工具箱]ラ操作系统管理员ブラリから2操作系统管理员の视频查看器ブロックをモデルに追加します。

    万博1manbetxSimulink模型包含块,用于实现边缘检测算法。

  6. MATLAB函数ブロックのうの1をダブルクリックします。既定の関数シグネチャがMATLAB函数ブロックエディタに表示されます。

  7. ソベルエッジ検出アルゴリズムを実装する,関数索贝尔を定義します。関数ヘッダーは、grayImageおよび阈值を関数索贝尔の引数として宣言し,edgeImageを戻り値として宣言します。エディタドキュメントをファ。

    函数edgeImage = sobel(grayImage,threshold)% # codegen为Sobel边缘检测定义内核K = single([1 2 1;0 0 0;-1 -2 -1];%检测边缘H = conv2(single(grayImage),k,“相同”);V = conv2(single(grayImage),k',“相同”);E =√(H。* h + v * v);edgeImage = uint8((E >阈值)* 255);结束

  8. MATLAB函数ブロックのブロックパラメタを開きます。[コド生成]タブで,[関数のパッケジ化]パラメタに[再利用可能な関数]を選択します。

    [関数のパッケジ化]パラメタが他の値に設定されている場合,cudaカネルが生成されません。

  9. 他のMATLAB函数ブロックを変更して,ソーベルエッジ検出の演算の前にRGBからグレースケールへの変換を実装します。MATLAB函数ブロックの[関数のパッケジ化]パラメタを[再利用可能な関数]に設定します。

    函数灰色= RGB2gray(RGB)% # codegen将彩色图像转换为灰色图像gray = (0.2989 * double(RGB(:,:,1)) +...0.5870 * double(RGB(:,:,2)) +...0.1140 * double(RGB(:,:,3));结束
  10. これらのブロックを,次の図に示すように接続します。モデルをedgeDetection.slxとして保存します。

    万博1manbetxSimulink模型显示块之间的连接。

  11. モデルのエラをテストするには,S万博1manbetximulinkエディタトします。ルストリップで,[実行]をクリックします。

    シミュレション中にすべてのビデオフレムを表示するには,视频查看器ブロックの[シミュレション],[フレムを落として性能を改善]オプションを無効にします。

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

コド生成用のモデルの構成

モデルコンフィギュレーションパラメーターにより,コードの生成とビルドのプロセスのさまざまなオプションを指定できます。

  1. [コンフィギュレションパラメタ]ダ。[ソルバ]ペ邮箱ンを開きます。高速化のためにモデルをコンパイルし,CUDAコードを生成するには,固定ステップソルバーを使用するようにモデルを構成します。次の表に,この例のソルバ構成を示します。

    パラメパラメタ 設定 生成されたコドに対する影響
    タ邮箱プ 固定ステップ コド生成に必要である,一定の(固定)ステップサ。
    ソルバ 離散(連続状態なし) モデルの状態微分の計算に固定ステップ積分手法を適用します。
    固定ステップサ邮箱ズ 汽车 万博1manbetxSimulinkによりステップサズが選択されます。

    显示模拟求解器选项的配置参数对话框的快照。

  2. [コド生成]ペンで,[システムタゲットファル](grt.tlc)に設定します。

    嵌入式编码器®のタゲットファ(ert.tlc)またはカスタムのシステムタゲットファ。

    图形处理器コド生成の場合,カスタムタ(grt.tlc)または(ert.tlc)に基づいていなければなりません。カスタムタゲットファルの開発に,システムタゲットファズ(万博1manbetx仿真软件编码器)を参照してください。

  3. [言語](c++)に設定します。

  4. [gpuコドの生成]を選択します。

  5. [コド生成]ペンで,[コド生成のみ]を選択します。

  6. [ルチェン]を選択します。Linux®プラットフォムの場合は[NVIDIA CUDA | gmake(64位Linux)]を選択します。窗户®システムの場合は[NVIDIA CUDA (w/Microsoft Visual c++ 20XX) | nmake(64位windows)]を選択します。

    カスタムのシステムターゲットファイルを使用する場合は,ツールチェーンアプローチ用のビルドコントロールを設定しなければなりません。カスタムタゲット用のチの詳細に,カスタムタゲットを使用した(万博1manbetx仿真软件编码器)を参照してください。

  7. [コド生成],[ス]ペンで,[matファルのログ]を無効にします。

  8. [コド生成],[レポト]ペ邮箱ンで[コド生成レポトを作成][レポトを自動的に開く]を選択します。

  9. [gpuコドの生成]パラメタを有効にすると,GPU Coder固有のオプションが[コド生成],[gpuコド]ペ邮箱ンに表示されます。

    この例では,[コド生成],[gpuコド]ペopenstackンでgpu固有のパラメopenstackタopenstackの既定値を使用できます。

    模型配置参数对话框上的“GPU Code”面板。

  10. (好的)をクリックして,[コンフィギュレションパラメタ]ダ。

    関数set_paramを使用して,モデルパラメタの構成をmatlab®コマンドウィンドウでプログラムによって行うことができます。

    set_param (“edgeDetection”“GenerateGPUCode”CUDA的);

モデルのcudaコドの生成

  1. 万博1manbetxSimulinkエディタで,万博1manbetx仿真软件编码器アプリを開きます。

  2. コドを生成します。

診断ビュアにメッセジが表示されます。コードジェネレーターにより,CUDAソースファイルおよびヘッダーファイルとHTMLコード生成レポートが作成されます。コドジェネレタルを"ビルドフォルダ"(現在の作業フォルダの中のedgeDetection_grt_rtwという名前のサブフォルダ)に配置します。

関数< model_name > _eML_blk_kernelおよび< model_name > _eML_blk_kernel_cでcudaカネルを見。3の連続する山形かっこで囲まれている情報が,カネルの実行コンフィギュレションです。

制限

  • Stateflow®チャトでのMATLAB函数ブロック用のgpuコド生成はサポトされていません。

  • MATLAB函数ブロックでは,matlab言語のすべてのデタ型がサポトされているわけではありません。サポトされているデタ型に,ブロックのドキュメンテ。

  • 图形处理器コド生成の場合,カスタムタ(grt.tlc)または(ert.tlc)に基づいていなければなりません。

参考

関数

関連するトピック