coder.gpu.kernel
for
ループを GPU カーネルにマッピングするプラグマ
説明
coder.gpu.kernel()
は、for
ループの直前に配置しなければならないループ レベルのプラグマです。このプラグマは、ループ パラメーターから計算した次元のカーネルを生成します。
メモ
coder.gpu.kernel
プラグマでは、ソフトウェアで実行されるすべての並列ループ解析のチェックがオーバーライドされます。coder.gpu.kernel
プラグマを使用する前にまず、coder.gpu.kernelfun
を使用してください。
メモ
リダクションを含む coder.gpu.kernel
プラグマ for
ループを使用することは推奨しません。
coder.gpu.kernel(B,T)
は、B
および T
で指定した次元のカーネルを生成します。B[Bx,By,Bz]
は、次元 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)
は、オプションの引数 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