このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
この例では、ソフトウェアインザループ (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)を参照してください。
codegen
| coder.EmbeddedCodeConfig
| gpucoder.profile