このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,関数gpucoder.profile
を使用して,生成されたCUDA®コードの実行プロファイリングレポートを生成する方法を示します。この概念を説明するための例として,霧の修正を使用します。
CUDA対応NVIDIA GPU®。
NVIDIA CUDAツールキットおよびドライバー。
コンパイラおよびライブラリの環境変数。サポートされているコンパイラおよびライブラリのバージョンの詳細は、サードパーティハードウェアを参照してください。環境変数の設定は,前提条件となる製品の設定を参照してください。
この例のプロファイリングワークフローはNVIDIAのnvprof
ツールに依存します。CUDAツールキットv10.1以降では,NVIDIAはパフォーマンスカウンターへのアクセスを管理者ユーザーのみに制限します。GPUパフォーマンスカウンターをすべてのユーザーが使用できるようにするには,https://developer.nvidia.com/nvidia-development-tools-万博 尤文图斯solutions-ERR_NVGPUCTRPERM-permission-issue-performance-countersに記載されている手順を参照してください。
この例を実行するのに必要なコンパイラおよびライブラリが正しく設定されていることを検証するために,関数coder.checkGpuInstall
を使用します。
envCfg = coder.gpuEnvConfig (“主机”);envCfg。BasicCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);
関数fog_rectification.mは,霧のかかったイメージを入力として受け取り,霧が取り除かれたイメージを返します。CUDAコードを生成するには,ダイナミックライブラリ(“dll”
)ビルドタイプを指定して,GPUコード構成オブジェクトを作成します。関数gpucoder.profile
は嵌入式编码器構成オブジェクトのみを受け入れるため,是
オプションが明示的に選択されていない場合でも编码器。EmbeddedCodeConfig
構成オブジェクトが使用されます。
inputImage = imread (“foggyInput.png”);输入= {inputImage};designFileName =“fog_rectification”;cfg = coder.gpuConfig (“dll”);cfg.GpuConfig.MallocMode =“离散”;
0.003しきい値をに指定してgpucoder.profile
を実行し,SIL実行レポートを表示します.0.003というしきい値は代表的な数値にすぎません。生成コードに多数のCUDA APIまたはカーネルの呼び出しがある場合,各呼び出しが合計時間のほんの一部しか占めていない可能性は高くなります。意味のあるプロファイリングレポートを生成するには,低いしきい値(0.001 ~ 0.005)を設定することをお勧めします。実行数の値を非常に低い数値(5未満)に設定することは推奨されません。これでは一般的な実行プロファイルが正確に表現されないためです。
gpucoder.profile(designFileName, inputs,“CodegenConfig”cfg,“阈值”, 0.003,“我会”10);
clear fog_rectification_sil执行分析数据可供查看。打开< a href = " matlab万博1manbetx: Simulink.sdi.view;“>模拟数据检查员。终止后可用的执行分析报告。###停止SIL执行' fog_整流'
fog_rectification
のコード実行プロファイリングレポートコード実行プロファイリングレポートは,SIL実行または公益诉讼実行から収集されたデータに基づくメトリクスを提供します。実行時間の計算は,SILまたは公益诉讼テストハーネスに追加された計測プローブか,各コンポーネントについて生成されたコードの内部に追加された計測プローブで記録したデータを基に行われます。詳細は,视图执行时间(嵌入式编码)を参照してください。これらの数値は代表的なものです。実際の値はハードウェア設定によって異なります。このプロファイリングは,6コアの3.5 GHz Intel®Xeon®CPUおよびNVIDIA GPU泰坦XPを搭載したマシンでMATLAB R2020aを使用して行われました。
セクション3には,実行時間がしきい値を上回るGPU呼び出しの完全なトレースが表示されます。“阈值”
パラメーターは,実行に対する最大実行時間の割合として定義されます(初回の実行は除外されます)。たとえば,最上位の関数fog_rectification
の9回の呼び出しのうち,3回目の呼び出しで最大時間(、女士)がかかった場合,最大実行時間は女士になります。女士よりも長い時間をかけたすべてのGPU呼び出しが,このセクションに表示されます。呼び出しの上にカーソルを置くと,他の適切な,時間計測以外の関連情報に関する実行時の値が呼び出しごとに表示されます。たとえば,fog_rectification_kernel10
の上にカーソルを置くと,その呼び出しに関するブロックの次元,グリッドの次元,およびスタティック共有メモリのサイズ(简约単位)が表示されます。このトレースは最大時間がかかった実行に対応しています。
レポートのセクション4には,セクション3に表示されているGPU呼び出しの概要が示されます。cudaFree
は,fog_rectification
の1回の実行あたり17回呼び出されており,9回のfog_rectification
の実行に対する17回のcudaFree
呼び出しにかかった平均時間は1.7154毫秒です。この概要は,かかった時間の降順で並べ替えられており,最も時間がかかったGPU呼び出しをユーザーが把握しやすくなっています。