Этот пример демонстрирует, как сгенерировать код CUDA ® из модели Simulink ®, которая принимает туманное изображение в качестве входных данных и производит отключенное изображение в качестве выходных данных. Этот пример является типичной реализацией алгоритма выпрямления тумана. В примере используются conv2
, im2gray
, и imhist
(Image Processing Toolbox) функции. Этот пример тесно соответствует примеру выпрямления тумана. Этот пример иллюстрирует следующие концепции:
Верификация окружения графического процессора.
Моделируйте приложение выпрямления тумана в Simulink с помощью функций обработки изображений.
Сконфигурируйте модель для генерации кода GPU.
Сгенерируйте исполняемый файл CUDA для модели Simulink.
Необходимый
Этот пример генерирует CUDA MEX и имеет следующие требования к третьим лицам.
CUDA включает графический процессор NVIDIA ® и совместимый драйвер.
Дополнительный
Для сборок, не являющихся MEX, таких как статические, динамические библиотеки или исполняемые файлы, этот пример имеет следующие дополнительные требования.
Набор инструментальных средств NVIDIA.
Переменные окружения для компиляторов и библиотек. Для получения дополнительной информации см. раздел «Оборудование сторонних производителей» и «Настройка продуктов для подготовки».
Чтобы убедиться, что компиляторы и библиотеки, необходимые для выполнения этого примера, настроены правильно, используйте coder.checkGpuInstall
функция.
envCfg = coder.gpuEnvConfig('host');
envCfg.BasicCodegen = 1;
envCfg.Quiet = 1;
coder.checkGpuInstall(envCfg);
Модель Simulink для выпрямления тумана состоит из Fog Rectification
подсистема, содержащая MATLAB Function
блок, который принимает туманное изображение как вход и возвращает отключенное изображение как выход. В нем используются fog_rectification
алгоритм, описанный в примере Fog Rectification. Когда модель запускается, Visualization
блок отображает туманное входное изображение и отключенное выходное изображение.
mdl = 'fog_rectification_model';
open_system(mdl);
Параметры конфигурации модели определяют метод ускорения, используемый во время симуляции.
set_param(mdl,'Solver','FixedStepAuto'); set_param(mdl,'GPUAcceleration','on'); set_param(mdl, 'SimulationMode','Normal');
Чтобы создать и симулировать модель ускорения графического процессора, выберите Запуск на вкладке Симуляции или используйте следующую команду MATLAB:
out = sim(mdl);
Установите следующие параметры для генерации кода.
set_param(mdl,'TargetLang','C++'); set_param(mdl,'GenerateGPUCode','CUDA'); set_param(mdl,'GPUcuBLAS','on'); set_param(mdl,'GPUcuSOLVER','on'); set_param(mdl,'GPUcuFFT','on');
Сгенерируйте и создайте модель Simulink на главном графическом процессоре с помощью slbuild
команда. Генератор кода помещает файлы в папку сборки, подпапку с именем fog_rectification_model_ert_rtw
в текущей рабочей папке.
status = evalc("slbuild('fog_rectification_model')");
Закройте модель Simulink.
close_system('fog_rectification_model');
bdclose
(Simulink) | close_system
(Simulink) | get_param
(Simulink) | load_system
(Simulink) | open_system
(Simulink) | save_system
(Simulink) | set_param
(Simulink) | sim
(Simulink) | slbuild
(Simulink)