生成コードの実行プロファルの解析
この例では、ソフトウェアインザループ (SIL) 実行プロファイリングを介して、MATLAB アルゴリズムおよびその生成された CUDA コードの細粒度の解析を実行する方法を説明します。実行プロファイリング レポートを生成するには、Embedded Coder®製品がインストールされていなければなりません。
メモ
プロファイリング ワークフローは NVIDIA®からのnvprof
ツールによって異なります。CUDA®Toolkit v10.1 では、NVIDIA はパフォーマンス カウンターへのアクセスを管理者ユーザーのみに制限します。GPU パフォーマンス カウンターをすべてのユーザーが使用できるようにするには、Permission issue with Performance Counters (NVIDIA)に記載されている手順を参照してください。
設計ファイルの作成
この例では、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)を参照してください。
参考
gpucoder.profile
|codegen
|coder.EmbeddedCodeConfig