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