Создайте код 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
и окно может также быть 1D.
C
скаляр, оцененный выход FUN
. Это - выход, вычисленный для центрального элемента [M,N]
массив X
и присвоен соответствующему элементу выходного массива B
.
param1,param2
дополнительные аргументы. Передайте эти аргументы если FUN
требует любых дополнительных параметров в дополнение к входному окну.
Окно [M,N]
должно быть меньше чем или равно размеру A
, с той же формой как A
.
Если A
1D вектор-строка, окном должен быть [1,N]
.
Если A
1D вектор-столбец, окном должен быть [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
.
Генерация кода поддерживается только для фиксированного размера выходные параметры. Форма и окно должны быть константами времени компиляции, потому что они определяют размер выхода.
coder.gpu.constantMemory
| coder.gpu.kernel
| coder.gpu.kernelfun
| gpucoder.matrixMatrixKernel