GPU Coder™ поддерживает некоторые шаблоны проектирования, которые эффективно сопоставляются со структурами GPU.
Операции ядра трафарета вычисляют каждый элемент выходного массива как функцию небольшой области входного массива. Можно выразить множество операций фильтрации как операцию набора элементов. Примеры включают сверток, медианную фильтрацию и методы конечных элементов.

В реализации GPU Coder ядра шаблона каждый поток вычисляет один элемент выходного массива. Поскольку доступ к данному входному элементу осуществляется неоднократно для вычисления нескольких соседних выходных элементов, кодер GPU использует совместно используемую память для улучшения пропускной способности памяти и локализации данных.
Используйте gpucoder.stencilKernel и создайте код CUDA ® для функций шаблона. Пример предварительной обработки трафаретов см. в разделе Обработка трафаретов на графическом процессоре.
Для очень больших входных размеров gpucoder.stencilKernel функция может создавать код CUDA, не соответствующий числовому значению моделирования MATLAB ®. В таких случаях следует рассмотреть возможность уменьшения размера входных данных для получения точных результатов.
Многие научные приложения содержат операции матрица-матрица, включая GEneral Matrix to Matrix Multiplication (GEMM), вида C = AB где можно по желанию транспонировать A и B. Код для таких матрично-матричных операций обычно принимает шаблон:
for x = 1:M for y = 1:N for z = 1:K C(x,y) = F(A(x,z),B(z,y)); end end end
где F() является определяемой пользователем функцией. В этих операциях для вычисления соответствующего элемента выходной матрицы используют строку из одной входной матрицы и столбец из второй входной матрицы. Каждый поток перезагружает строку и столбец. Этот шаблон конструкции позволяет оптимизировать эту структуру, повторно используя данные и заставляя каждый поток вычислять несколько выходных элементов.

Например, F() может быть правильной матрицей умножения, F()=@mtimes. Для таких шаблонов кодер GPU предоставляет MatrixMatrix ядро для создания высокоэффективной, быстрой реализации матрично-матричных операций на GPU.
Используйте gpucoder.matrixMatrixKernel и создать код CUDA для выполнения операций матрично-матричного типа.
coder.gpu.constantMemory | coder.gpu.kernel | coder.gpu.kernelfun | gpucoder.matrixMatrixKernel | gpucoder.stencilKernel