Шаблоны разработки

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

Получите обработку с помощью шаблона

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

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

Матрично-матричная обработка

Много научных приложений содержат матричные операции над матрицей включая Общую Матрицу к Умножению матриц (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, чтобы создать высокоэффективное, внедрение FAST матричных операций над матрицей на графическом процессоре.

Смотрите также

| | | |

Похожие темы