Когда запускать статистические функции параллельно

Зачем бежать параллельно?

Основной причиной параллельного запуска статистических расчетов является увеличение скорости, что означает сокращение времени выполнения вашей программы или функций. Факторы, влияющие на скорость, обсуждают основные элементы, влияющие на скорость программ или функций. Факторы, влияющие на результаты, обсуждают детали, которые могут привести к тому, что параллельный запуск даст другие результаты, чем последовательный запуск.

Примечание

Некоторые функции 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).

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