Векторизация Скалярного алгоритма с помощью для каждой подсистемы

В этом примере показано, как использовать подсистему For Each. В этом примере для простоты выполняются операции с вектором.

Используйте кнопку Open Model, чтобы открыть пример модели sldemo_foreach_vectorized. Эта модель содержит подсистему For Each, которая обрабатывает входные сигналы один за другим.

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

Каждый сигнал является скалярным и должен обрабатываться индивидуально. Следовательно, блок For Each, который управляет размерностью разбиения, устанавливается на разбиение входного сигнала по размерности 1 путем срезания по ширине разбиения 1. Для каждого входного сигнала соответствующий набор коэффициентов также должен быть разбит с использованием тех же критериев. Усиление является общим для всех сигналов, поэтому этот вход не разбит.

Поскольку размерность выходного сигнала, как ожидается, совпадает с размерностью входного сигнала, размерность конкатенации устанавливается равным размерности разбиения. Если вы предпочитаете изменить величину сигнала (транспонирование в этом случае), можно выбрать 2 в качестве размерности конкатенации.

Для подсистемы For Each необходимо задать размерность и ширину разбиения, но не размер входного сигнала. Затем проверка гарантирует, что этот размер является произведением ширины раздела. Если ошибка не обнаружена, подсистема вычисляет количество независимых выполнений, которые будет выполнять вложенная подсистема. Эти выполнения являются независимыми, поскольку состояние, сопоставленное с данным блоком, содержащимся в подсистеме, имеет уникальное значение в каждом из соответствующих исполнений.

Чтобы увидеть невекторизованную реализацию для этой модели, дважды кликните по блоку в правом нижнем углу модели. Эта реализация не использует подсистему For Each, но имитирует ее функциональность, повторяя подсистему столько раз, сколько необходимо, а также выбирая и конкатенируя сигналы соответствующим образом. Этот процесс репликации подвержен ошибке и не масштабируется - изменение размера входного сигнала потребует соответствующей смены модели.