Как dspunfold отличается от parfor?

dspunfold и функции parfor ускоряют алгоритмы 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, заменяя for - цикл с parfor - цикл часто требует значительного рефакторинга кода. dspunfold не требует, чтобы вы реструктурировали свой код.

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

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

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

Функции

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте