Сгенерируйте код SIMD от блоков Simulink в DSP System Toolbox

Сконфигурировать модель Simulink®, чтобы сгенерировать код SIMD:

  • Во вкладке Modeling панели инструментов модели нажмите Model Settings.

    Click on the gear icon (the third icon) under the Modeling tab.

  • В диалоговом окне Configuration Parameters, которое открывается в панели Code Generation, устанавливает System target file на ert.tlc.

    Choose Code Generation on the left. In the middle section of the window, enter ert.tlc for the System target file.

  • Под Code Generation, в панели Interface, устанавливает Code Replacement libraries на любой Intel AVX (Windows) или Intel AVX (Linux). Пользуясь этими библиотеками, можно сгенерировать код, который обрабатывает больше данных в одной инструкции. Для получения дополнительной информации о Заменяющих Библиотеках Кода смотрите то, Что Замена Кода? (Embedded Coder).

    Click on the Select button for the Code replacement libraries and choose the appropriate CRL.

  • В окне модели инициируйте генерацию кода и процесс сборки для модели при помощи одной из этих общих опций:

    • Нажмите кнопку Build Model.

    • Нажмите Ctrl+B.

    Для примера о том, как выбрать системный конечный файл для модели Simulink и как сгенерировать код С для встраиваемых систем, смотрите, Генерируют Код Используя Embedded Coder® (Embedded Coder).

    Код SIMD сгенерирован с помощью технологии Intel® AVX2. Внутренние параметры Intel AVX2 SIMD значительно улучшают производительность кода, сгенерированного из поддерживаемых алгоритмов на платформах Intel, в большинстве случаев встречаясь или превышая эффективность симуляции и простого кода С.

Сравните эффективность кода SIMD со сгенерированным простым кодом С

Рассмотрите эту модель Simulink, которая моделирует систему цифровой связи. Модель содержит корневой фильтр приподнятого косинуса на передатчике и стороне приемника, нескольких КИХ-Интерполяциях и КИХ-блоках Децимации, чтобы увеличить и уменьшить частоту дискретизации сигнала, соответственно, и канал связи аддитивного белого Гауссова шума (AWGN), чтобы передать сигнал. Корневые фильтры приподнятого косинуса с обеих сторон выполняют согласованную фильтрацию. Объединенный ответ этих двух корневых фильтров приподнятого косинуса формирует фильтр приподнятого косинуса, который помогает в минимизации интерференции межсимвола (ISI). Из-за согласованной фильтрации, сигнал, полученный при выходе, имеет высокий сигнал к шумовому отношению (ОСШ) и низкая вероятность ошибки. Чтобы подтвердить, просмотрите вывод в схеме созвездия, которая следует.

Чтобы открыть модель, введите ex_qam_matchedfilter в командной строке MATLAB®.

Block diagram showing blocks in the digital communication system. Sequence of blocks: 16 QAM data generator, root-raised cosine transmit filter, FIR Interpolator, FIR Interpolator, AWGN channel, FIR Decimator, FIR decimator, Matched root-raised cosine receive filter, constellation diagram.

Во вкладке 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 вокруг 3x по сравнению с простым кодом С на машине Windows® 10.

Похожие темы