Как это происходит 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.

См. также

Функции

Похожие темы