主要内容

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

MATLABコードから生成されたコードに対するGPUコードメトリクスレポートの作成

GPU静的コードメトリクスレポートには,生成されたCUDA®カーネルに関する情報,スレッドとブロックの次元,メモリ使用量その他の統計値など,生成されたCUDAコードの静的解析結果が含まれています。静的コードメトリクスレポートを作成するには,GPU编码器™を使用してスタンドアロンのCUDAコードを生成し,コード生成レポートを作成しなければなりません。コード生成レポートを参照してください。

既定では,コード生成時に静的コードメトリクス解析は実行されません。解析を実行して結果を確認したい場合は,コード生成レポートの[概要]タブにある(GPUコードメトリクス]をクリックします。

GPUコードメトリクスレポートの例

この例では,GPU静的コードメトリクス解析を実行し,静的コードメトリクスレポートを調査します。

次のコード行を使用してmandelbrot_count.mというMATLAB®関数を作成します。このコードは,マンデルブロ集合のベクトル化済みの MATLAB 実装です。これは、グリッドのすべての点(xGrid yGrid)について,方程式で定義された軌跡の原点からの距離が2になる反復インデックスを計算します。次に,の自然対数を返します。これはマンデルブロ集合の色分けされたプロットを生成するために使用されます。

函数数= mandelbrot_count (maxIterations xGrid yGrid)添加kernelfun命令来触发内核创建coder.gpu.kernelfun;曼德布洛特百分比计算z0 = xGrid + 1i*yGrid;数= 1(大小(z0));z = z0;n = 0:maxIterations z = z.*z + z0;在= abs (z) < = 2;Count = Count +内部;结束数=日志(数);

次のコード行を使用して,サンプルデータを作成します。このコードは,xlimylimで指定した範囲間に実数部(x)と虚数部(y)の1000 x 1000のグリッドを生成します。

maxIterations = 500;gridSize = 1000;xlim = [-0.748766713922161, -0.748766707771757];ylim = [0.123640844894862, 0.123640851045266];xlim x = linspace (xlim (1), (2), gridSize);ylim y = linspace (ylim (1), (2), gridSize);[xGrid, yGrid] = meshgrid (x, y);

スタンドアロンコード生成(スタティックライブラリ,ダイナミックリンクライブラリ,または実行可能プログラム)用の構成オブジェクトを使用して,コード生成レポートの作成を有効にします。

cfg = coder.gpuConfig (“dll”);cfg。GenerateReport = true;cfg。MATLABSourceComments = true;cfg.GpuConfig.CompilerFlags =“——fmad = false”

メモ

——fmad = falseフラグは,学校网站に渡すと,浮動小数点積和演算(FMAD)最適化を無効にするようにこのコンパイラに指示します。このオプションは、CPUとGPUのアーキテクチャの違いが原因で,生成コード上の数値の不一致を防ぐために設定します。詳細については,CPUとGPUの数値の差を参照してください。

あるいは,codegen报告オプションを使用します。

codegenを使用してコードを生成します。arg游戏オプションで入力例を指定し,入力引数の型を指定します。配置オプションを使用して,構成オブジェクトを指定します。

codegen配置cfgarg游戏{maxIterations, xGrid, yGrid}mandelbrot_count

コード生成レポートを開くには,[レポートの表示)をクリックします。

静的コードメトリクス解析を実行してコードメトリクスレポートを表示するには,コード生成レポートの[概要]タブにある(GPUコードメトリクス]をクリックします。

コードメトリクスレポートの確認

  1. 生成されたCUDAカーネルに関する情報を確認するには,[CUDAカーネル]をクリックします。

    GPU静态指标报告中的CUDA内核信息

    • [カーネル名)に,生成されたCUDAカーネルの一覧が表示されます。既定では,GPU编码器によって,カーネル名の先頭にエントリポイント関数の名前が追加されます。

    • [スレッドの次元)は,xy,およびzの次元に沿ったブロック内のスレッドの数を特定する(Tx,泰,Tz)形式の配列です。

    • [ブロックの次元)は,xyに沿ったブロック内のグリッドの数を定義する(Bx, 1)形式の配列です(zは使用しない)。

    • (共有メモリのサイズ](定数メモリ]の列には,生成コードにおける共有メモリ空間と定数メモリ空間の使用量に関するメトリクスが表示されます。

    • (最小BlocksPerSM]は,ストリーミングマルチプロセッサあたりの最小ブロック数で,カーネルの起動に使用するブロックの数を示します。

    レポートから,生成されたカーネルコードに移動するには,カーネル名をクリックします。

  2. GPUデバイス上でメモリが割り当てられている変数を確認するには,(CUDA Malloc)セクションに移動します。

    GPU静态指标报告中的GPU内存分配变量

  3. 生成コードにおけるcudaMemCpyの呼び出しに関する情報を表示するには,(CUDA Memcpy)をクリックします。

    GPU静态指标报告中的CUDA内存拷贝信息

制限

  • 嵌入式编码器®製品をご利用の場合,コード構成オブジェクトには,コンパイル時に静的メトリクスレポートの生成を有効にするためのGenerateCodeMetricsReportプロパティが含まれます。GPU编码器はこの設定に従わないため、コード生成には影響しません。

参考

|||

関連するトピック