Генерация кода GPU для обнаружения маршрута в Simulink

В этом примере показано, как сгенерировать код CUDA ® для модели Simulink ®, которая может обнаруживать и выводить контуры маркера маршрута на изображение. Этот пример принимает изображение RGB как вход и использует imresize (Image Processing Toolbox), rgb2gray, ordfilt2 (Image Processing Toolbox), hough (Image Processing Toolbox), houghpeaks (Image Processing Toolbox), и houghlines (Image Processing Toolbox) функции, входящие в Image Processing Toolbox™, для обнаружения разметки маршрута. Этот пример внимательно следит за обнаружением маршрута на графическом процессоре при помощи функции houghlines.

Этот пример иллюстрирует следующие концепции:

  • Моделируйте приложение обнаружения маршрута в Simulink с помощью функций обработки изображений.

  • Сконфигурируйте модель для генерации кода GPU.

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

Необходимые условия для третьих лиц

Необходимый

Этот пример генерирует CUDA MEX и имеет следующие требования к третьим лицам.

  • CUDA включает графический процессор NVIDIA ® и совместимый драйвер.

Дополнительный

Для сборок, не являющихся MEX, таких как статические, динамические библиотеки или исполняемые файлы, этот пример имеет следующие дополнительные требования.

Проверьте окружение GPU

Чтобы убедиться, что компиляторы и библиотеки, необходимые для выполнения этого примера, настроены правильно, используйте coder.checkGpuInstall функция.

envCfg = coder.gpuEnvConfig('host');
envCfg.BasicCodegen = 1;
envCfg.Quiet = 1;
coder.checkGpuInstall(envCfg);

Обнаружение маршрута с помощью houghlines Модель Simulink

Показана модель Simulink для обнаружения маршрута.

open_system('lane_detection');

The Lane Detection подсистема содержит MATLAB Function блок, который принимает изображение интенсивности как вход и предоставляет обнаруженные полосы как выход. Эта функция основана на реализации алгоритма обнаружения маршрута с использованием houghlines как описано в разделе «Обнаружение маршрута на графическом процессоре» при помощи примера «Функции пересечения линий связи». Когда модель запускается, Visualization блок отображает обнаруженное выходное изображение маршрута.

Запуск симуляции

Откройте диалоговое окно Параметры конфигурации.

На панели Simulation Target выберите ускорение графического процессора.

Запустите симуляцию в режиме normal mode.

set_param('lane_detection', 'SimulationMode', 'Normal');
sim('lane_detection');

Сгенерируйте и создайте модель Simulink

На панели Генерация кода выберите Язык как C++ и включите Генерация кода GPU.

Откройте панель Цель Симуляция. В продвинутых параметрах включите Порог выделения динамической памяти в функциях MATLAB. Для получения дополнительной информации смотрите Динамическое выделение памяти в функциях MATLAB (Simulink)

Откройте панель «Генерация кода» > «Код графического процессора». В подкатегории Libraries включите cuBLAS, cuSOLVER и cuFFT.

Сгенерируйте и создайте модель Simulink на главном графическом процессоре с помощью slbuild команда. Генератор кода помещает файлы в папку сборки, подпапку с именем lane_detection_ert_rtw в текущей рабочей папке.

status = evalc("slbuild('lane_detection')");

Очистка

Закройте модель Simulink.

close_system('lane_detection');

См. также

Функции

Похожие темы