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