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
.