Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

霧修正 Simulink モデルの GPU コードの生成

この例では、霧のかかったイメージを入力として受け取り、霧が取り除かれたイメージを出力として生成する Simulink® モデルから、CUDA® コードを生成する方法を示します。この例は、霧修正アルゴリズムの一般的な実装です。この例では、関数conv2im2gray、およびimhist (Image Processing Toolbox)を使用します。この例は霧の修正の例とほぼ同じです。この例では、次の概念を説明します。

  • GPU 環境の検証。

  • イメージ処理関数を使用した、Simulink での霧修正アプリケーションのモデル化。

  • GPU コード生成用のモデルの構成。

  • Simulink モデルの CUDA 実行可能ファイルの生成。

サードパーティの必要条件

必須

この例では、CUDA MEX を生成します。以下のサードパーティ要件が適用されます。

  • CUDA 対応 NVIDIA® GPU および互換性のあるドライバー。

オプション

スタティック ライブラリ、ダイナミック ライブラリ、または実行可能ファイルなどの MEX 以外のビルドについて、この例では以下の要件も適用されます。

GPU 環境の検証

この例を実行するのに必要なコンパイラおよびライブラリが正しく設定されていることを検証するために、関数coder.checkGpuInstallを使用します。

envCfg = coder.gpuEnvConfig('host');
envCfg.BasicCodegen = 1;
envCfg.Quiet = 1;
coder.checkGpuInstall(envCfg);

霧修正 Simulink モデル

霧修正のための Simulink モデルを構成する Fog Rectification サブシステムには、霧のかかったイメージを入力として受け取り、霧が取り除かれたイメージを出力として返す MATLAB Function ブロックが含まれています。これには霧の修正の例で説明する fog_rectification アルゴリズムが使用されます。このモデルを実行すると、Visualization ブロックにより、霧がかかっている入力イメージと霧が取り除かれた出力イメージが表示されます。

mdl = 'fog_rectification_model';
open_system(mdl);

GPU による高速化のためのモデルの構成

モデル コンフィギュレーション パラメーターにより、シミュレーション中に使用される高速化の方法が決定します。

set_param(mdl,'Solver','FixedStepAuto');
set_param(mdl,'GPUAcceleration','on');
set_param(mdl, 'SimulationMode','Normal');

GPU による高速化を使用するモデルのビルド

GPU による高速化を使用するモデルをビルドしてシミュレートするには、[シミュレーション] タブで [実行] を選択するか、次の MATLAB コマンドを使用します。

out = sim(mdl);

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

コード生成のために以下のパラメーターを設定します。

set_param(mdl,'TargetLang','C++');
set_param(mdl,'GenerateGPUCode','CUDA');
set_param(mdl,'GPUcuBLAS','on');
set_param(mdl,'GPUcuSOLVER','on');
set_param(mdl,'GPUcuFFT','on');
set_param(mdl,'ProdLongLongMode','on');

モデルの CUDA コードの生成

slbuild コマンドを使用して、ホスト GPU で Simulink モデルを生成してビルドします。コード ジェネレーターは実行可能ファイルを "ビルド フォルダー" (現在の作業フォルダーの中の fog_rectification_model_ert_rtw という名前のサブフォルダー) に配置します。

status = evalc("slbuild('fog_rectification_model')");

クリーンアップ

Simulink モデルを閉じます。

close_system('fog_rectification_model');

参考

関数

関連するトピック