Создайте и запустите исполняемый файл на оборудовании NVIDIA с помощью приложения GPU Coder

Использование 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. Создайте функцию 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).

 main.cu

 main.h

Приложение GPU Coder

Чтобы открыть приложение GPU Coder, на вкладке Apps панель инструментов, в разделе Code Generation, щелкните значок приложения GPU Coder. Вы также можете открыть приложение, набрав gpucoder в Командном Окне MATLAB.

  1. Приложение открывает страницу Select исходных файлов. Выберите myAdd.m как функцию точки входа. Нажмите Next.

  2. В Define Input Types окне введите myAdd(1:100,1:100) и нажмите Autodefine Input Types, затем нажмите Next.

  3. Можно инициировать процесс Check for Run-Time Issues или нажатие кнопки Next, чтобы перейти к Generate Code шагу.

  4. Установите Build type равным Executable и Hardware Board для NVIDIA Jetson.

    Generate code window of the GPU Coder app showing hardware board and toolchain settings

  5. Нажмите More Settings, на панели Custom Code введите пользовательский основной файл main.cu в поле для Additional source files. Пользовательский основной файл и файл заголовка должны находиться в том же месте, что и файл точки входа.

    GPU Coder app custom code window

  6. На панели Hardware введите адрес устройства, имя пользователя, пароль и папку сборки для платы.

    GPU Coder app showing hardware settings pane

  7. Закройте 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

См. также

Объекты

  • (Пакет поддержки MATLAB CODER для платформ NVIDIA Jetson и NVIDIA DRIVE) | (Пакет поддержки MATLAB CODER для платформ NVIDIA Jetson и NVIDIA DRIVE)

Похожие темы