exponenta event banner

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

С помощью графического процессора Coder™ и пакета поддержки MATLAB ® Coder™ для платформ NVIDIA ® Jetson ® и NVIDIA DRIVE™ можно использовать аппаратные платформы NVIDIA DRIVE и Jetson. После подключения к целевой платформе можно выполнить основные операции, создать исполняемый файл CUDA ® из функции MATLAB и запустить исполняемый файл на оборудовании. Пакет поддержки автоматизирует развертывание сгенерированного кода CUDA на аппаратных платформах GPU, таких как Jetson или DRIVE

Примечание

Начиная с R2021a, пакет поддержки кодеров GPU для графических процессоров NVIDIA называется MATLAB Coder Support Package для платформ NVIDIA Jetson и NVIDIA DRIVE. Для использования этого пакета поддержки в R2021a необходимо иметь продукт MATLAB Coder.

Цели обучения

В этом учебном пособии вы узнаете, как:

  • Подготовьте код MATLAB для создания кода CUDA с помощью kernelfun прагматика.

  • Создайте и настройте проект кодера графического процессора.

  • Измените настройки для подключения к целевой плате NVIDIA.

  • Создание и развертывание исполняемого файла CUDA на целевой плате.

  • Запустите исполняемый файл на плате и проверьте результаты.

Перед началом работы с этим учебным пособием рекомендуется ознакомиться с приложением кодера графического процессора. Дополнительные сведения см. в разделе Создание кода с помощью приложения кодера графического процессора.

Предварительные условия учебного пособия

Требования к целевой плате

  • Встроенная платформа NVIDIA DRIVE PX2 или Jetson.

  • Кросс-кабель Ethernet для подключения целевой платы и хост-ПК (если целевая плата не может быть подключена к локальной сети).

  • Набор инструментов NVIDIA CUDA, установленный на плате.

  • Переменные среды в целевом объекте для компиляторов и библиотек. Сведения о поддерживаемых версиях компиляторов, библиотек и их настройках см. в разделе Установка и настройка предварительных условий для плат NVIDIA (пакет поддержки кодеров MATLAB для платформ NVIDIA Jetson и NVIDIA DRIVE).

Требования к хосту разработки

Пример: Добавление вектора

В этом учебном пособии используется простой пример добавления вектора для демонстрации процесса построения и развертывания на графических процессорах NVIDIA. Создание функции MATLAB myAdd.m которая выступает в качестве начальной точки для генерации кода. В качестве альтернативы можно использовать файлы примера «Начало работы с пакетом поддержки кодеров MATLAB для платформ NVIDIA Jetson и NVIDIA DRIVE». Самый простой способ создания кода CUDA для этой функции - размещение coder.gpu.kernelfun pragma в функции. При обнаружении кодера графического процессора kernelfun pragma, он пытается распараллелить вычисления внутри этой функции и отображает их в GPU.

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, на вкладке MATLAB toolstrip Apps в разделе Code Generation щелкните значок приложения GPU Coder. Вы также можете открыть приложение, введя gpucoder в окне команд MATLAB.

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

  2. В окне Определение типов ввода введите myAdd(1:100,1:100) и выберите Автоопределение типов ввода, затем нажмите кнопку Далее.

  3. Можно инициировать процесс Проверка ошибок времени выполнения или нажать кнопку Далее, чтобы перейти к шагу Создать код.

  4. Задайте для типа построения значение Executable и плата аппаратных средств для NVIDIA Jetson.

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

  5. Нажмите кнопку «Дополнительные параметры», на панели «Пользовательский код» введите пользовательский основной файл. main.cu в поле Дополнительные исходные файлы. Пользовательский основной файл и файл заголовка должны находиться в том же расположении, что и файл точки входа.

    GPU Coder app custom code window

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

    GPU Coder app showing hardware settings pane

  7. Закройте окно Настройки (Settings) и щелкните Создать (Generate). Программа генерирует код CUDA и развертывает исполняемый файл в указанной папке. Нажмите кнопку Далее и закройте приложение.

Запуск исполняемого файла и проверка результатов

В окне команд 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 для платформ NVIDIA Jetson и NVIDIA DRIVE) | (Пакет поддержки кодеров MATLAB для платформ NVIDIA Jetson и NVIDIA DRIVE)

Связанные темы