Как сконфигурировать Simulink® модель для генерации кода SIMD:
На вкладке Modeling панели инструментов модели нажмите Model Settings.
В открывшихся Параметрах конфигурации окне на панели Code Generation установите значение System target file ert.tlc
.
В разделе Code Generation на панели Interface установите значение Code Replacement libraries Intel AVX (Windows)
или Intel AVX (Linux)
. Используя эти библиотеки, можно сгенерировать код, который обрабатывает больше данных в одной инструкции. Для получения дополнительной информации о библиотеках замещения кода смотрите Что такое замена кода? (Embedded Coder).
В окне модели инициируйте генерацию кода и процесс сборки для модели с помощью одной из следующих распространенных опций:
Нажмите кнопку Build Model.
Нажмите Ctrl + B.
Для примера, как выбрать системный целевой файл для модели Simulink и как сгенерировать код C для встраиваемых систем, смотрите Генерация кода с использованием Embedded Coder ® (Embedded Coder).
SIMD- кода генерируется с помощью Intel® AVX2 технологии. Характеристики Intel AVX2 SIMD значительно повышают эффективность кода, сгенерированного поддерживаемыми алгоритмами на платформах Intel, в большинстве случаев отвечая или превышая эффективность симуляции и простого кода С
Рассмотрим эту модель Simulink, которая моделирует цифровую систему связи. Модель содержит корневой фильтр косинуса на стороне передатчика и приемника, пару блоков Конечных Импульсных Характеристик Интерполяции и Конечной Импульсной Характеристики Десятикратного уменьшения для увеличения и уменьшения скорости дискретизации сигнала, соответственно, и аддитивный канал связи белого Гауссова шума (AWGN) для передачи сигнала. Корневые фильтры косинуса с обеих сторон выполняют согласованную фильтрацию. Комбинированный ответ двух корневых косинусоидных фильтров образует фильтр приподнятого косинуса, который помогает минимизировать межсимвольную интерференцию (ISI). Из-за согласованной фильтрации сигнал, принятый на выходе, имеет высокое отношение сигнал/шум (ОСШ) и низкую вероятность ошибки. Чтобы подтвердить, посмотрите выход в следующей сигнализации созвездия.
Чтобы открыть модель, введите ex_qam_matchedfilter
в MATLAB® командная строка.
На вкладке Modeling модели нажмите Model Settings. В открывшемся окне параметров конфигурации под Code Generation на панели Interface установите Code replacement libraries None
. Создайте модель, и эта настройка генерирует простой исполняемый код С в текущей директории MATLAB. Измерьте время, необходимое для запуска исполняемого файла.
tic;
system('ex_qam_matchedfilter');
tplain = toc
tplain = 42.64
Повторите процесс, установив для Code replacement libraries значение Intel AVX (Windows)
или Intel AVX (Linux)
, в зависимости от используемой платформы. Создайте модель и измерьте время, необходимое для запуска сгенерированного исполняемого файла.
tic;
system('ex_qam_matchedfilter');
tAVX2 = toc
tAVX2 = 14.67
Сгенерированный SIMD-код находится примерно в 3 раза по сравнению с простым кодом С в Windows® 10 машина.