Потоковая передача

Что передает потоком?

Streaming является оптимизацией области, в которую HDL Coder™ преобразовывает векторный информационный канал к скалярному информационному каналу (или к нескольким векторным информационным каналам меньшего размера). По умолчанию HDL Coder генерирует реализации fully parallel для векторных расчетов. Например, генератор кода понимает векторную сумму как несколько сумматоров, выполняясь параллельно во время одного такта. Этот метод может использовать много аппаратных ресурсов. С потоковой передачей сгенерированный код сохраняет область чипа путем мультиплексирования данных по меньшему числу ресурсов общего оборудования.

Путем определения streaming factor для подсистемы можно управлять степенью, до которой такие ресурсы совместно используются в той подсистеме. Когда отношение потоковой передачи фактора (Nst) к ширине информационного канала подсистемы (Vdim) 1:1, HDL Coder реализует совершенно скалярный информационный канал. Фактор потоковой передачи 0 (значение по умолчанию) производит полностью параллельную реализацию (то есть, не совместно используя) для векторных расчетов.

Если вы знаете максимальные векторные размерности и частоту дискретизации для подсистемы, можно вычислить возможные факторы потоковой передачи и получившиеся частоты дискретизации для подсистемы. Однако, даже если требуемый фактор потоковой передачи математически возможен, подсистема должна соответствовать другим критериям для потоковой передачи.

По умолчанию, когда вы применяете оптимизацию потоковой передачи, HDL Coder сверхдискретизировал ресурс общего оборудования, чтобы сгенерировать оптимизированную областью реализацию с исходной задержкой. Если переданный потоком информационный канал действует на уровне медленнее, чем базовая ставка, генератор кода реализует информационный канал в базовой ставке. Можно также ограничить отношение сверхдискретизации, чтобы соответствовать ограничениям часов целевого компьютера. Чтобы узнать больше, смотрите, что Тактовая частота Конвейерно обрабатывает.

Можно сгенерировать и использовать модель валидации, чтобы проверить, что выход оптимизированного DUT битно-верен для результатов, приведенных исходным DUT. Чтобы узнать больше о модели валидации, см. Сгенерированную Модель Модели и Валидации.

Задайте потоковую передачу

Задавать потоковую передачу от пользовательского интерфейса:

  • Во вкладке Apps выберите HDL Coder. Вкладка HDL Code появляется. Выберите подсистему, модель - ссылку или блок MATLAB Function и затем нажмите HDL Block Properties. В поле StreamingFactor введите номер ресурсов, которые вы хотите передать потоком.

    Примечание

    Для блоков MATLAB Function, чтобы задать StreamingFactor, в диалоговом окне HDL Block Properties, необходимо установить архитектуру HDL блока к MATLAB Datapath.

  • Щелкните правой кнопкой по подсистеме, модели - ссылке или блоку MATLAB Function и выберите HDL Code> HDL Block Properties. В поле StreamingFactor введите номер ресурсов, которые вы хотите передать потоком.

В командной строке можно установить StreamingFactor использование hdlset_param функция, как в следующем примере.

modelname = 'sfir_fixed'
dut = 'sfir_fixed/symmetric_fir';
open_system(modelname)
hdlset_param(dut,'StreamingFactor', 4);

Как определить фактор потоковой передачи и шаг расчета

В данной подсистеме, если Nst фактор потоковой передачи и Vdim максимальная векторная размерность, затем информационный канал переданной потоком подсистемы результанта является одним из следующего:

  • Из ширины Vstream = (Vdim/Nst), если Vdim > Nst.

  • Из ширины Vstream = (Nst/Vdim), если Nst > Vdim.

  • Скаляр.

Если исходный информационный канал, управляемый с шагом расчета, S, это равно основному шагу расчета, затем переданная потоком подсистема действует с шагом расчета:

  • S / Nst, если Vdim > Nst.

  • S / Vdim, если Nst > Vdim.

Если исходный информационный канал, управляемый с шагом расчета, S, это больше основного шага расчета, Sbase, затем переданная потоком подсистема действует с шагом расчета Sbase / Oversampling. Заметьте, что переданный потоком шаг расчета независим от исходного шага расчета, S.

Определите блоки та потоковая передача поддержки

HDL Coder поддерживает много блоков для потоковой передачи. Как лучшая практика, запустите checkhdl функция прежде, чем сгенерировать код потоковой передачи для подсистемы. checkhdl отчеты блокируются в вашей подсистеме, которые несовместимы с потоковой передачей. Если вы инициируете генерацию кода потоковой передачи для подсистемы, которая содержит несовместимые блоки, кодер работает вокруг тех блоков и генерирует код непотоковой передачи для них.

HDL Coder не может применить оптимизацию потоковой передачи к модели - ссылке.

Требования для потоковой передачи подсистем

Прежде, чем применить потоковую передачу, HDL Coder выполняет серию, проверяет подсистемы, которые будут переданы потоком. Можно передать подсистему потоком если:

  • Передающий потоком факторный Nst совершенный делитель векторной ширины Vdim, или векторная ширина должна быть совершенным делителем фактора потоковой передачи.

  • Все входные параметры к подсистеме имеют тот же размер вектора. Если входные параметры имеют различные размеры вектора, можно передать подсистему потоком путем выравнивания иерархии подсистемы. Когда вы сглаживаете иерархию, оптимизация потоковой передачи идентифицирует области с различными размерами вектора и создает группы потоковой передачи для этих областей. У этих групп есть различные факторы потоковой передачи, которые выведены из размеров вектора.

Потоковая передача отчета

Чтобы видеть информацию о потоковой передаче в отчете, прежде чем вы сгенерируете код для каждой подсистемы или модели - ссылки, включают отчет оптимизации. Чтобы включить этот отчет, во вкладке HDL Code, выбирают Report Options, и затем выбирают Generate optimization report.

Когда вы генерируете отчет оптимизации в разделе Streaming and Sharing, вы видите эффект оптимизации потоковой передачи. Если потоковая передача неудачна, отчет показывает диагностические сообщения и нарушающие блоки, которые заставили потоковую передачу перестать работать. Когда требуемый фактор потоковой передачи не может быть реализован, HDL Coder генерирует код непотоковой передачи.

Если потоковая передача успешна, отчет отображает StreamingFactor, который был выведен, и таблица, которая задает:

  • Group: уникальный ID группы для группы блоков Simulink®, которые принадлежат группе потоковой передачи.

  • Inferred Streaming Factor: Потоковая передача фактора, выведенного HDL Coder с Streaming Factor, который вы задаете в HDL Block Properties.

Чтобы видеть группы блоков, которые принадлежат группе потоковой передачи в вашей модели Simulink и в сгенерированной модели, щелкните по ссылке Highlight streaming groups and diagnostics в отчете.

Похожие темы