Создайте код CUDA для функций шаблона
B = gpucoder.stencilKernel(FUN,A,[M N],shape,param1,param2...)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. Это может иметь одно из трех возможных значений:
B вывода 'same' - Returns, который одного размера как A.
полный- (значение по умолчанию) Возвращает полный выходной параметр. Размер 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