Создание кода 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