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

Используя GPU Coder™ и MATLAB® Coder™ Support Package для NVIDIA® Jetson® и NVIDIA Платформы Drive™, можно предназначаться для ДИСКА NVIDIA и аппаратных платформ Джетсона. После соединения с целевой платформой можно выполнить основные операции, сгенерировать исполняемый файл CUDA® от функции MATLAB и запустить исполняемый файл на оборудовании. Пакет поддержки автоматизирует развертывание сгенерированного кода CUDA по аппаратным платформам графического процессора, таким как Джетсон или ДИСК

Примечание

Начиная в R2021a, Пакет Поддержки GPU Coder для NVIDIA, графические процессоры называют Пакетом Поддержки MATLAB Coder для NVIDIA Джетсоном и NVIDIA, УПРАВЛЯЕТ Платформами. Чтобы использовать этот пакет поддержки в R2021a, у вас должен быть продукт MATLAB Coder.

Изучение целей

В этом примере вы учитесь как:

  • Подготовьте свой код MATLAB к генерации кода CUDA при помощи kernelfun прагма.

  • Создайте и настройте проект GPU Coder.

  • Измените настройки, чтобы связать с требуемой платой NVIDIA.

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

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

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

Учебные необходимые условия

Требования требуемой платы

  • ДИСК NVIDIA PX2 или Джетсон встроил платформу.

  • Кабель перекрестного соединения Ethernet, чтобы соединить требуемую плату и PC хоста (если требуемая плата не может быть соединена с локальной сетью).

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

  • Переменные окружения на цели для компиляторов и библиотек. Для получения информации о поддерживаемых версиях компиляторов библиотеки и их настройка, видят Необходимые условия Установки и Setup для Советов NVIDIA (Пакет Поддержки MATLAB Coder для NVIDIA, Джетсон и NVIDIA УПРАВЛЯЮТ Платформами).

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

  • NVIDIA инструментарий CUDA на хосте.

  • Переменные окружения на хосте к компиляторам и библиотекам. Для получения информации о поддерживаемых версиях компиляторов и библиотек, смотрите Стороннее Оборудование. Для подготовки переменных окружения смотрите Переменные окружения.

Пример: векторное сложение

Этот пример использует пример сложения простого вектора, чтобы продемонстрировать сборку и рабочий процесс развертывания на NVIDIA графические процессоры. Создайте функцию MATLAB myAdd.m это действует как entry-point для генерации кода. В качестве альтернативы используйте файлы в Начале работы с Пакетом Поддержки MATLAB Coder для NVIDIA, Джетсон и NVIDIA УПРАВЛЯЮТ примером Платформ для этого примера. Самый легкий способ создать код CUDA для этой функции состоит в том, чтобы поместить coder.gpu.kernelfun прагма в функции. Когда GPU Coder сталкивается с kernelfun прагма, это пытается параллелизировать расчеты в этой функции и сопоставляет их с графическим процессором.

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 панели инструментов MATLAB, под 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 Джетсон и NVIDIA УПРАВЛЯЕТ платформами), | (Пакет поддержки MATLAB Coder для NVIDIA Джетсон и NVIDIA УПРАВЛЯЕТ платформами),

Похожие темы