Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

生成コードの実行プロファルの解析

この例では、ソフトウェアインザループ (SIL) 実行プロファイリングを介して、MATLAB アルゴリズムおよびその生成された CUDA コードの細粒度の解析を実行する方法を説明します。実行プロファイリング レポートを生成するには、Embedded Coder® 製品がインストールされていなければなりません。

メモ

プロファイリング ワークフローは NVIDIA® からの nvprof ツールによって異なります。CUDA® ツールキット v10.1 では、NVIDIA はパフォーマンス カウンターへのアクセスを管理者ユーザーのみに制限します。GPU パフォーマンス カウンターをすべてのユーザーが使用できるようにするには、https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-countersに記載されている手順を参照してください。

設計ファイルの作成

この例では、N 次元高速フーリエ変換を実行するエントリポイント関数を作成します。coder.gpu.kernelfun プラグマを使用して FFT を GPU にマッピングします。既定では、EnableCUFFT プロパティが有効にされているため、コード ジェネレーターは cuFFT ライブラリを使用して FFT 演算を実行します。

function [Y] = gpu_fftn(X)
  coder.gpu.kernelfun();
  Y = fftn(X);
end

実行プロファイリング レポートの生成

関数 gpucoder.profile を使用して実行プロファイリング レポートを生成します。

cfg = coder.gpuConfig('exe');
cfg.GpuConfig.MallocMode = 'discrete';
gpucoder.profile('gpu_fftn',{rand(2,4500,4)},'CodegenConfig',cfg, ...
'CodegenArguments','-d profilingdir','Threshold',0.001)

コード実行プロファイリング レポートが開きます。このレポートは、SIL 実行から収集されたデータに基づくメトリクスを提供します。実行時間は、SIL テスト ハーネスに追加された計測プローブか、コンポーネントごとに生成されたコードの内部に追加された計測プローブで記録したデータから計算されます。詳細は、View Execution Times (Embedded Coder)を参照してください。

参考

| |

関連するトピック