gpucoder.stencilKernel
(非推奨) ステンシル関数の CUDA コードの作成
関数 gpucoder.stencilKernel
は推奨されません。代わりに stencilfun
を使用してください。詳細については、互換性の考慮事項を参照してください。
説明
B = gpucoder.stencilKernel(FUN,A,[M N],shape,param1,param2...)
は、関数 FUN
を、入力 A
の各 [M,N]
スライディング ウィンドウに適用します。関数 FUN
は、A
の各 [M,N]
部分行列に対して呼び出され、出力 B
の要素を計算します。この要素のインデックスは [M,N]
ウィンドウの中心に対応します。
FUN
は、入力と同じ型のスカラー出力を返すユーザー定義関数のハンドルです。
C= FUN(X,param1,param2, ...)
X
は元の入力 A
の [M,N]
部分行列です。X
は、入力 A
の境界などで、必要に応じてゼロでパディングできます。X
とこのウィンドウは 1 次元にすることもできます。
C
は FUN
のスカラー値の出力です。これは、[M,N]
配列 X
の中心要素について計算された出力であり、出力配列 B
の対応する要素に代入されます。
param1,param2
はオプション引数です。入力ウィンドウのほかに追加のパラメーターが FUN
に必要な場合、これらの引数を渡します。
ウィンドウ [M,N]
は A
以下のサイズで、A
と同じ形状でなければなりません。
A
が 1 次元行ベクトルの場合、ウィンドウは [1,N]
でなければなりません。
A
が 1 次元列ベクトルの場合、ウィンドウは [N,1]
でなければなりません。
shape
は出力配列 B
のサイズを決定します。これは次の 3 つの値のいずれかを持つことができます。
'same'
-A
と同じサイズの出力B
が返されます。'full'
- (既定) 完全な出力が返されます。つまり、A
のサイズが (x,y) の場合は、B
のサイズ >A
のサイズ。B = [x + floor(M/2), y + floor(N/2)]
のサイズ'valid'
- 出力のうち、A
のエッジをゼロ パディングせずに計算される部分のみが返されます。B = [x - floor(M/2), y - floor(N/2)]
のサイズ
入力 A
は、FUN
でサポートされている数値型を持つベクトルまたは行列でなければなりません。B
のクラスは、A
のクラスと同じです。
コード生成は、固定サイズの出力についてのみサポートされます。形状とウィンドウはコンパイル時の定数でなければなりません。これらによって出力のサイズが決定されるためです。
例
制限
入力サイズが非常に大きい場合、関数
gpucoder.stencilKernel
は、MATLAB® のシミュレーションと数値的に一致しない CUDA コードを生成する可能性があります。このような場合、正確な結果が得られるように、入力サイズを小さくすることを検討してください。
バージョン履歴
R2017b で導入参考
アプリ
関数
codegen
|coder.gpu.kernel
|gpucoder.matrixMatrixKernel
|coder.gpu.constantMemory
|gpucoder.reduce
|gpucoder.sort
|coder.gpu.nokernel