Использование GPU Coder™ и MATLAB® Coder™ поддержки для NVIDIA® Джетсон® и NVIDIA DRIVE™ Platforms, вы можете использовать платформы NVIDIA DRIVE и Jetson оборудования. После подключения к целевой платформе можно выполнить основные операции, сгенерировать CUDA® исполняемый файл из функции MATLAB и запуск исполняемого файла на оборудовании. Пакет поддержки автоматизирует развертывание сгенерированного кода CUDA на аппаратных платформах GPU, таких как Jetson или DRIVE
Примечание
Начиная с R2021a, пакет поддержки GPU Coder для графических процессоров NVIDIA называется пакетом поддержки MATLAB CODER для платформ NVIDIA Jetson и NVIDIA DRIVE. Чтобы использовать этот пакет поддержки в R2021a, вы должны иметь продукт MATLAB Coder.
В этом руководстве вы узнаете, как:
Подготовьте код MATLAB для генерации кода CUDA с помощью kernelfun
прагма.
Создайте и настройте проект GPU Coder.
Измените параметры для подключения к целевой плате NVIDIA.
Сгенерируйте и разверните исполняемый файл CUDA на целевой плате.
Запустите исполняемый файл на плате и проверьте результаты.
Прежде чем приступить к этому руководству, рекомендуется ознакомиться с приложением GPU Coder App.Для получения дополнительной информации смотрите Генерация кода при помощи приложения GPU Coder.
NVIDIA DRIVE PX2 или встроенная платформа Jetson.
Перекрестный кабель Ethernet для подключения целевой платы и хост-ПК (если целевая плата не может быть подключена к локальной сети).
На плате установлен набор инструментов NVIDIA CUDA.
Переменные окружения целевого компьютера для компиляторов и библиотек. Дополнительные сведения о поддерживаемых версиях компиляторов, библиотек и их настройке см. в разделе Предварительные необходимые условия установки и Setup плат NVIDIA (Пакет поддержки MATLAB CODER для платформ NVIDIA Jetson и NVIDIA DRIVE).
Набор инструментов NVIDIA CUDA на хосте.
Переменные окружения на хосте для компиляторов и библиотек. Дополнительные сведения о поддерживаемых версиях компиляторов и библиотек см. в разделе Оборудование сторонних производителей. Для настройки переменных окружений смотрите Окружение Переменные.
Это руководство использует простой пример сложения векторов, чтобы продемонстрировать рабочий процесс сборки и развертывания на графических процессорах NVIDIA. Создайте функцию MATLAB myAdd.m
который действует как entry-point для генерации кода. Кроме того, используйте файлы в примере «Начало работы с пакетом поддержки MATLAB Coder для NVIDIA Jetson и NVIDIA DRIVE Platforms» для этого руководства. Самый легкий способ создать код CUDA для этой функции - это разместить coder.gpu.kernelfun
прагма в функции. Когда GPU Coder встречается kernelfun
pragma, она пытается параллелизировать расчеты в рамках этой функции и сопоставляет их с графическим процессором.
function out = myAdd(inp1,inp2) %#codegen coder.gpu.kernelfun(); out = inp1 + inp2; end
Чтобы сгенерировать исполняемый файл CUDA, который можно развернуть на целевом устройстве NVIDIA, создайте пользовательский основной файл (main.cu
) и заголовочный файл (main.h
). Основной файл вызывает код, сгенерированный для функции точки входа MATLAB. Основной файл передает вектор, содержащий первые 100 натуральных чисел, в функцию точки входа и записывает результаты в двоичный файл (myAdd.bin
).
Чтобы открыть приложение GPU Coder, на вкладке Apps панель инструментов, в разделе Code Generation, щелкните значок приложения GPU Coder. Вы также можете открыть приложение, набрав gpucoder
в Командном Окне MATLAB.
Приложение открывает страницу Select исходных файлов. Выберите myAdd.m
как функцию точки входа. Нажмите Next.
В Define Input Types окне введите myAdd(1:100,1:100)
и нажмите Autodefine Input Types, затем нажмите Next.
Можно инициировать процесс Check for Run-Time Issues или нажатие кнопки Next, чтобы перейти к Generate Code шагу.
Установите Build type равным Executable
и Hardware Board для NVIDIA Jetson
.
Нажмите More Settings, на панели Custom Code введите пользовательский основной файл main.cu
в поле для Additional source files. Пользовательский основной файл и файл заголовка должны находиться в том же месте, что и файл точки входа.
На панели Hardware введите адрес устройства, имя пользователя, пароль и папку сборки для платы.
Закройте Settings окно и нажмите Generate. Программное обеспечение генерирует код CUDA и развертывает исполняемый файл в указанной папке. Нажмите Next и закройте приложение.
В командном окне MATLAB используйте runApplication()
метод аппаратного объекта для запуска исполняемого файла на целевом компьютере.
hwobj = jetson;
pid = runApplication(hwobj,'myAdd');
### Launching the executable on the target... Executable launched successfully with process ID 26432. Displaying the simple runtime log for the executable...
Скопируйте выходной файл интервала myAdd.bin
в окружение MATLAB на хосте и сравните вычисленные результаты с результатами MATLAB.
outputFile = [hwobj.workspaceDir '/myAdd.bin'] getFile(hwobj,outputFile); % Simulation result from the MATLAB. simOut = myAdd(0:99,0:99); % Read the copied result binary file from target in MATLAB. fId = fopen('myAdd.bin','r'); tOut = fread(fId,'double'); diff = simOut - tOut'; fprintf('Maximum deviation is: %f\n', max(diff(:)));
Maximum deviation between MATLAB Simulation output and GPU coder output on Target is: 0.000000
drive
(Пакет поддержки MATLAB CODER для платформ NVIDIA Jetson и NVIDIA DRIVE) | jetson
(Пакет поддержки MATLAB CODER для платформ NVIDIA Jetson и NVIDIA DRIVE)