Создание ядра из кода MATLAB

Структуры кода MATLAB и шаблоны, которые создают CUDA® Ядра графического процессора

GPU Coder™ генерирует и выполняет оптимизированные ядра CUDA для определенных структур алгоритма и шаблонов в вашем MATLAB® код. Вызовы сгенерированного кода оптимизировали NVIDIA® Библиотеки CUDA, включая cuFFT, cuSolver, cuBLAS, cuDNN, и TensorRT. Сгенерированный код может быть интегрирован в ваш проект как исходный код, статические библиотеки или динамические библиотеки, и может быть скомпилирован для рабочих столов, серверов и графических процессоров, встроенных в NVIDIA Джетсон, ДИСК и другие платформы. GPU Coder позволяет вам включить рукописный код CUDA в свои алгоритмы и в сгенерированный код.

Приложения

развернуть все

GPU CoderСгенерируйте код графического процессора из кода MATLAB
GPU Environment CheckПроверьте и настройте среду генерации кода графического процессора

Функции

развернуть все

codegenСгенерируйте код C/C++ из кода MATLAB
gpucoderОткрытое приложение GPU Coder
coder.checkGpuInstallПроверьте среду генерации кода графического процессора
coder.gpuConfigПараметры конфигурации для генерации кода CUDA из кода MATLAB при помощи GPU Coder
coder.gpu.kernelПрагма, которая сопоставляет for- циклы к ядрам графического процессора
coder.gpu.kernelfunПрагма, которая сопоставляет функцию с ядрами графического процессора
coder.gpu.nokernelПрагма, чтобы отключить циклы for создания ядра
coder.cevalВызовите внешнюю функцию C/C++
coder.gpu.iterationsПрагма, которая предоставляет информацию генератору кода для того, чтобы принять решения распараллеливания о переменной, связала циклы
coder.gpu.constantMemoryПрагма, которая сопоставляет переменную с постоянной памятью на графическом процессоре
coder.gpu.persistentMemoryПрагма, чтобы выделить переменную как постоянную память на графическом процессоре
gpucoder.atomicAddАтомарно добавьте заданное значение в переменную в глобальной памяти или общей памяти
gpucoder.atomicAndАтомарно выполните побитовое И между заданным значением и переменной в глобальной памяти или общей памяти
gpucoder.atomicCASАтомарно сравните и подкачайте значение переменной в глобальной памяти или общей памяти
gpucoder.atomicDecАтомарно постепенно уменьшите переменную в глобальной памяти или общей памяти в заданной верхней границе
gpucoder.atomicExchАтомарно обменивайтесь переменной в глобальной памяти или общей памяти с заданным значением
gpucoder.atomicIncАтомарно постепенно увеличьте переменную в глобальной памяти или общей памяти в заданной верхней границе
gpucoder.atomicMaxАтомарно найдите максимум между заданным значением и переменной в глобальной памяти или общей памяти
gpucoder.atomicMinАтомарно найдите минимум между заданным значением и переменной в глобальной памяти или общей памяти
gpucoder.atomicOrАтомарно выполните побитовое ИЛИ между заданным значением и переменной в глобальной памяти или общей памяти
gpucoder.atomicSubАтомарно вычтите заданное значение из переменной в глобальной памяти или общей памяти
gpucoder.atomicXorАтомарно выполните побитовое исключающее ИЛИ между заданным значением и переменной в глобальной памяти или общей памяти
gpucoder.stencilKernelСоздайте код CUDA для функций шаблона
gpucoder.matrixMatrixKernelОптимизированная реализация графического процессора функций, содержащих матричные операции над матрицей
gpucoder.batchedMatrixMultiplyОптимизированная реализация графического процессора пакетных умножение матриц операция
gpucoder.stridedMatrixMultiplyОптимизированная реализация графического процессора strided и обработанный в пакетном режиме умножение матриц операция
gpucoder.batchedMatrixMultiplyAddОптимизированная реализация графического процессора пакетных умножение матриц с, добавляет операция
gpucoder.stridedMatrixMultiplyAddОптимизированная реализация графического процессора strided, обработанного в пакетном режиме, умножение матриц с, добавляет операция
gpucoder.sortОптимизированная реализация графического процессора функции вида MATLAB
gpucoder.transposeОптимизированная реализация графического процессора MATLAB транспонирует функцию
gpucoder.reduceОптимизированная реализация графического процессора для операций сокращения

Объекты

развернуть все

coder.gpuConfigПараметры конфигурации для генерации кода CUDA из кода MATLAB при помощи GPU Coder
coder.CodeConfigПараметры конфигурации для генерации кода C/C++ из кода MATLAB
coder.EmbeddedCodeConfigПараметры конфигурации для генерации кода C/C++ из кода MATLAB с Embedded Coder
coder.gpuEnvConfigСоздайте объект настройки, содержащий параметры, переданные coder.checkGpuInstall для того, чтобы выполнить проверки среды генерации кода графического процессора

Темы

Ядра от поэлементных циклов

Создайте ядра из функций MATLAB, содержащих scalarized, поэлементных математических операций.

Ядра от рассеяния - собирают операции типа

Создайте ядра из функций MATLAB, содержащих операции сокращения.

Ядра от вызовов библиотеки

Предназначайтесь для оптимизированных математических библиотек графического процессора, таких как cuBLAS, cuSOLVER, cuFFT, и Тяга.

Поддержка массивов графического процессора

Сгенерируйте код CUDA, который использует массивы графического процессора.

Интегрирование унаследованного кода

Интегрируйте пользовательский код графического процессора с кодом MATLAB, предназначенным для генерации кода.

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

Создайте ядра для функций MATLAB, содержащих вычислительные шаблоны разработки.

Выделение памяти графического процессора и минимизация

Опции выделения памяти и оптимизация для GPU Coder.

Что такое Половина Точности?

Введение в тип данных полуточности в MATLAB и Simulink®.

Половина поддержки генерации кода точности

C/C++ и генерация кода графического процессора поддерживают для функций ту полуточность поддержки входные параметры.

Рекомендуемые примеры

Simulate Diffraction Patterns Using CUDA FFT Libraries

Симулируйте дифракционные шаблоны Используя библиотеки БПФ CUDA

Используйте GPU Coder™, чтобы усилить библиотеку CUDA® Fast Fourier Transform (cuFFT), чтобы вычислить двумерный БПФ на графическом процессоре NVIDIA®. Двумерное преобразование Фурье используется в оптике, чтобы вычислить шаблоны дифракции далекого поля. Когда монохроматический источник света проходит через маленькую апертуру, такой как в эксперименте двойного разреза Янга, можно наблюдать эти дифракционные шаблоны. Этот пример также показывает вам, как использовать указатели графического процессора в качестве входных параметров к функции точки входа при генерации MEX CUDA, исходного кода, статических библиотек, динамических библиотек и исполняемых файлов. При помощи этой функциональности производительность сгенерированного кода улучшается путем минимизации количества вызовов cudaMemcpy в сгенерированном коде.