このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
GPU静的コードメトリクスレポートには,生成されたCUDA®カーネルに関する情報,スレッドとブロックの次元,メモリ使用量その他の統計値など,生成されたCUDAコードの静的解析結果が含まれています。静的コードメトリクスレポートを作成するには,GPU编码器™を使用してスタンドアロンのCUDAコードを生成し,コード生成レポートを作成しなければなりません。コード生成レポートを参照してください。
既定では,コード生成時に静的コードメトリクス解析は実行されません。解析を実行して結果を確認したい場合は,コード生成レポートの[概要]タブにある(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 +内部;结束数=日志(数);
次のコード行を使用して,サンプルデータを作成します。このコードは,xlim
とylim
で指定した範囲間に実数部(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コードメトリクス]をクリックします。
生成されたCUDAカーネルに関する情報を確認するには,[CUDAカーネル]をクリックします。
[カーネル名)に,生成されたCUDAカーネルの一覧が表示されます。既定では,GPU编码器によって,カーネル名の先頭にエントリポイント関数の名前が追加されます。
[スレッドの次元)は,x
、y
,およびz
の次元に沿ったブロック内のスレッドの数を特定する(Tx,泰,Tz)
形式の配列です。
[ブロックの次元)は,x
とy
に沿ったブロック内のグリッドの数を定義する(Bx, 1)
形式の配列です(z
は使用しない)。
(共有メモリのサイズ]と(定数メモリ]の列には,生成コードにおける共有メモリ空間と定数メモリ空間の使用量に関するメトリクスが表示されます。
(最小BlocksPerSM]は,ストリーミングマルチプロセッサあたりの最小ブロック数で,カーネルの起動に使用するブロックの数を示します。
レポートから,生成されたカーネルコードに移動するには,カーネル名をクリックします。
GPUデバイス上でメモリが割り当てられている変数を確認するには,(CUDA Malloc)セクションに移動します。
生成コードにおけるcudaMemCpy
の呼び出しに関する情報を表示するには,(CUDA Memcpy)をクリックします。
嵌入式编码器®製品をご利用の場合,コード構成オブジェクトには,コンパイル時に静的メトリクスレポートの生成を有効にするためのGenerateCodeMetricsReport
プロパティが含まれます。GPU编码器はこの設定に従わないため、コード生成には影響しません。
codegen
|coder.gpuConfig
|编码器。CodeConfig
|编码器。EmbeddedCodeConfig