Создайте код CUDA для функций трафарета
B = gpucoder.stencilKernel(FUN,A,[M N],shape,param1,param2...)
применяет функцию FUN
каждому [M,N]
скользящее окно входного A
. Функциональные FUN
вызывается для каждого [M,N]
подматрица A
и вычисляет элемент выхода B
. Индекс этого элемента соответствует центру [M,N]
окно.
FUN
- указатель на определяемую пользователем функцию, которая возвращает скалярный выход того же типа, что и вход.
C= FUN(X,param1,param2, ...)
X
является [M,N]
подматрица исходного входного A
. X
может быть заполнен нулями при необходимости, например, на границах входных A
. X
и окно также может быть 1-D.
C
является скалярным значением выхода FUN
. Это выход, вычисленный для центрального элемента [M,N]
массивы направленности X
и назначается соответствующему элементу массива выхода B
.
param1,param2
являются необязательными аргументами. Передайте эти аргументы, если FUN
требует любых дополнительных параметров в сложение к входу окну.
Окно [M,N]
должен быть меньше или равен размеру A
, с такой же формой, как A
.
Если A
1-D векторы-строки, окно должно быть [1,N]
.
Если A
1-D векторы-столбцы, окно должно быть [N,1]
.
shape
определяет размер выходного массива B
. Это может иметь одно из трех возможных значений:
'same'
- Возвращает значение B
это тот же размер, что и A
.
'full'
- (по умолчанию) Возвращает полный выход. Размер B
> размер A
, то есть, если A
имеет размер (x, y). Размер 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
функция может выдать код CUDA, который не совпадает численно с MATLAB® симуляция. В таких случаях рассмотрите уменьшение размера входа, чтобы получить точные результаты.
codegen
| coder.gpu.constantMemory
| coder.gpu.kernel
| coder.gpu.nokernel
| gpucoder.matrixMatrixKernel
| gpucoder.reduce
| gpucoder.sort