С помощью графического процессора 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 CUDA на хосте.
Переменные среды на хосте для компиляторов и библиотек. Сведения о поддерживаемых версиях компиляторов и библиотек см. в разделе Аппаратное обеспечение сторонних производителей. Сведения о настройке переменных среды см. в разделе Переменные среды.
В этом учебном пособии используется простой пример добавления вектора для демонстрации процесса построения и развертывания на графических процессорах 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).
Чтобы открыть приложение GPU Coder, на вкладке MATLAB toolstrip Apps в разделе Code Generation щелкните значок приложения GPU Coder. Вы также можете открыть приложение, введя gpucoder в окне команд MATLAB.
Приложение открывает страницу Выбор исходных файлов. Выбрать myAdd.m в качестве функции точки входа. Нажмите кнопку Далее.
В окне Определение типов ввода введите myAdd(1:100,1:100) и выберите Автоопределение типов ввода, затем нажмите кнопку Далее.
Можно инициировать процесс Проверка ошибок времени выполнения или нажать кнопку Далее, чтобы перейти к шагу Создать код.
Задайте для типа построения значение Executable и плата аппаратных средств для NVIDIA Jetson.

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

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

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