dspunfold
Отличается от parfor
? dspunfold
и parfor
(MATLAB Coder) функции ускоряют MATLAB® алгоритмы через параллелизацию. Каждая функция имеет свои преимущества и недостатки.
Когда вы используете parfor
внутри функции MATLAB точки входа и вызов codegen
на этой функции сгенерированный файл MEX является многопоточным. Для получения дополнительной информации см. «Ускорение алгоритма с использованием параллельных циклов для циклов» (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
.