Как dspunfold Отличающийся от parfor?

dspunfold и parfor (MATLAB Coder) функции ускоряет алгоритмы MATLAB® посредством распараллеливания. Каждая функция имеет свои собственные преимущества и недостатки.

Когда вы используете parfor в функции MATLAB точки входа и вызове codegen на этой функции сгенерированный файл MEX многопоточен. Для получения дополнительной информации смотрите, что Ускорение алгоритма Использует Параллельные циклы for (parfor) (MATLAB Coder). Однако parfor не идеально для алгоритмов ЦОС. Причина, являющаяся этим алгоритмы ЦОС, включает состояния.

Алгоритмы ЦОС включают состояния

Большинство алгоритмов в DSP System Toolbox™ содержит потоковые данные и состояния. Состояния в MATLAB моделируются с помощью персистентных переменных. Поскольку parfor не поддерживает персистентные переменные, вы не можете смоделировать использование состояний parfor циклы. Смотрите Глобальные или Персистентные Объявления в цикле parfor (MATLAB Coder). Кроме того, у вас не может быть зависимости по данным через parfor циклы. Следовательно, вы не можете обеспечить информацию состояния через эти циклы. Смотрите Если не, чтобы Использовать циклы parfor (MATLAB Coder). dspunfold преодолевает эти ограничения путем поддержки персистентных переменных.

dspunfold Вводит задержку

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

parfor Требует значительной реструктуризации в коде

parfor требует, чтобы вы реструктурировали свой алгоритм, чтобы иметь подобную циклу структуру, которая является независимой итерацией. Из-за семантических ограничений parfor, заменяя a for- цикл с a parfor- цикл часто требует значительного рефакторинга кода. dspunfold не требует, чтобы вы реструктурировали свой код.

parfor Используемый с dspunfold

Когда вы вызываете dspunfold на функции MATLAB точки входа, которая содержит parfor, parfor многопоточность отключена. dspunfold вызовы codegen с –O набор опции к disable:openmp. С этим набором опции, parfor циклы обработаны как for- циклы. Поведение многопоточности сгенерированного файла MEX должно полностью к dspunfold.

Смотрите также

Функции

Похожие темы