Основной причиной параллельного запуска статистических расчетов является увеличение скорости, что означает сокращение времени выполнения вашей программы или функций. Факторы, влияющие на скорость, обсуждают основные элементы, влияющие на скорость программ или функций. Факторы, влияющие на результаты, обсуждают детали, которые могут привести к тому, что параллельный запуск даст другие результаты, чем последовательный запуск.
Примечание
Некоторые функции Statistics and Machine Learning Toolbox™ имеют встроенные возможности параллельных вычислений. Смотрите Quick Start Parallel Computing для Statistics and Machine Learning Toolbox. Можно также использовать любые функции Statistics and Machine Learning Toolbox с функциями Parallel Computing Toolbox™, такими как parfor
циклы. Чтобы решить, когда вызывать функции параллельно, учитывайте факторы, влияющие на скорость и результаты.
Некоторые факторы, которые могут повлиять на скорость выполнения параллельной обработки:
Параллельная настройка окружения. Чтобы запустить, требуется время parpool
чтобы начать вычислять параллельно. Если ваш расчет быстрая, время настройки может превысить любое время, сэкономленное при параллельных вычислениях.
Параллельные накладные расходы. В связи и координации при параллельном запуске есть накладные расходы. Если вычисления функции выполняются быстро, эти накладные расходы могут быть заметной частью общего времени расчета. Таким образом, решение задачи параллельно может быть медленнее, чем решение задачи последовательно. Для получения примера смотрите Улучшение Эффективности Оптимизации с Параллельными Вычислениями в MATLAB® Дайджест, март 2009.
Нет вложенных parfor
циклы. Это описано в Работе с parfor. parfor
не работает параллельно при вызове из другого parfor
цикл. Если вы запрограммировали свои пользовательские функции, чтобы использовать преимущества параллельной обработки, ограничение отсутствия вложенных parfor
циклы могут привести к тому, что параллельная функция будет работать медленнее, чем ожидалось.
При выполнении последовательно, parfor
циклы выполняются немного медленнее, чем for
циклы.
Передача параметров. Параметры автоматически передаются в рабочие сеансы во время выполнения параллельных расчетов. Если параметров много, или они берут большой объем памяти, передача параметров может замедлить выполнение ваших расчетов.
Конкуренция за ресурсы: сеть и вычисления. Если пул работников имеет низкую пропускную способность или высокую задержку, параллельные расчеты могут быть медленными.
Некоторые факторы могут влиять на результаты при использовании параллельной обработки. Вам может потребоваться настроить код, чтобы запустить параллельно, например, вам нужны независимые циклы, и работники должны иметь возможность доступа к переменным. К числу важных факторов относятся следующие:
Постоянные или глобальные переменные. Если какие-либо функции используют постоянные или глобальные переменные, эти переменные могут принимать различные значения на разных рабочих процессорах. Тело a parfor
цикл не может содержать глобальные или постоянные объявления переменных.
Доступ к внешним файлам. Порядок расчетов не гарантирован во время параллельной обработки, поэтому к внешним файлам можно обращаться в непредсказуемом порядке, приводя к непредсказуемым результатам. Кроме того, если несколько процессоров пытаются одновременно считать внешний файл, файл может стать заблокированным, что приведет к ошибке чтения и остановке выполнения функции.
Некомпутационные функции, такие как input
, plot
, и keyboard
, может плохо себя вести, когда используется в ваших пользовательских функциях. Не используйте эти функции в parfor
цикл, поскольку они могут привести к тому, что рабочий процесс станет невосприимчивым, поскольку он ожидает входа.
parfor
не позволяет break
или return
операторы.
Случайные числа, которые вы используете, могут повлиять на результаты ваших расчетов. См. Воспроизводимость в параллельных статистических расчетах.
Для получения консультации по преобразованию циклов в использование parfor
, см. Parallel for-Loops (parfor) (Parallel Computing Toolbox).