GPU Coder™ поддерживает некоторые шаблоны проекта, которые эффективно сопоставляются со структурами графический процессор.
Операции с ядром трафарета вычисляют каждый элемент массива выхода как функцию от небольшой области массива входа. Можно выразить множество операций фильтрации как операцию трафарета. Примеры включают свертку, медианную фильтрацию и методы с конечными элементами.
В реализации GPU Coder ядра трафарета каждый поток вычисляет один элемент выходного массива. Поскольку к данному входному элементу обращаются неоднократно для вычисления нескольких соседних выходных элементов, GPU Coder использует общую память для улучшения полосы пропускания памяти и локальности данных.
Используйте 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 Coder предоставляет MatrixMatrix
ядро для создания высокоэффективной, быстрой реализации матрично-матричных операций на графическом процессоре.
Используйте gpucoder.matrixMatrixKernel
и создайте код CUDA для выполнения операций матричного типа.
coder.gpu.constantMemory
| coder.gpu.kernel
| coder.gpu.kernelfun
| gpucoder.matrixMatrixKernel
| gpucoder.stencilKernel