Main Content

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

この例では、ソフトウェアインザループ (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)を参照してください。

参考

||

関連するトピック