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

Как сконфигурировать Simulink® модель для генерации кода SIMD:

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

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

  • В открывшихся Параметрах конфигурации окне на панели 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 и как сгенерировать код C для встраиваемых систем, смотрите Генерация кода с использованием 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-код находится примерно в 3 раза по сравнению с простым кодом С в Windows® 10 машина.

Похожие темы