coder.gpu.kernel
for
ループを GPU カーネルにマッピングするプラグマ
説明
coder.gpu.kernel()
は、for ループの直前に配置しなければならないループ レベルのプラグマです。ループ パラメーターから計算した次元のカーネルを生成します。
メモ
coder.gpu.kernel
プラグマでは、ソフトウェアで実行されるすべての並列ループ解析のチェックがオーバーライドされます。coder.gpu.kernel
プラグマのより高度な機能を使用する前にまず、coder.gpu.kernelfun
を使用してください。
メモ
リダクションを含むループに coder.gpu.kernel
プラグマを使用することは推奨しません。
coder.gpu.kernel(B,T)
は、for ループの直前に配置しなければならないループ レベルのプラグマです。B
および T
で指定した次元のカーネルを生成します。B[Bx,By,1]
は、次元 x
および y
(z
は使用されません) に沿ったグリッドのブロック数を定義する配列です。T[Tx,Ty,Tz]
は、次元 x
、y
、および z
に沿ったブロックのスレッド数を定義する配列です。
B
および T
の値が -1 の場合は、GPU Coder™ で自動的にグリッドとブロックの次元を推測しなければならないことを示します。coder.gpu.kernel
プラグマは、無効なグリッドとブロックの次元に対してエラーを生成します。
coder.gpu.kernel(B,T,M,name)
は、同じ引数 B
および T
を想定しています。オプション引数 M
および name
を指定することができます。M
は、ストリーミング マルチプロセッサあたりの最小ブロック数を指定する正の整数です。M
を増やすとカーネル内でのレジスタ使用量が減少し、カーネルの占有率が改善する可能性があります。M
の値が -1 の場合は、GPU Coder で既定値の 1 を使用しなければならないことを示します。name
は、生成されたカーネルの名前のカスタマイズを可能にする文字配列です。
このカーネル プラグマを指定すると、すべての並列ループ解析のチェックがオーバーライドされます。このオーバーライドにより、すべての反復が互いに依存していないことを並列ループ解析が証明できない状況で、ループを並列化できるようになります。最初に、ループを並列化して問題がないことを確認してください。
この関数はコード生成関数です。MATLAB® では効果がありません。
例
バージョン履歴
R2017b で導入
参考
アプリ
関数
codegen
|coder.gpu.kernelfun
|gpucoder.stencilKernel
|coder.gpu.constantMemory
|gpucoder.reduce
|gpucoder.sort
|coder.gpu.nokernel