Проекты

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 для выполнения операций матричного типа.

См. также

| | | |

Похожие примеры

Подробнее о