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

Почему запущенный параллельно?

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

Примечание

Некоторые функции Statistics and Machine Learning Toolbox™ имеют встроенные возможности параллельных вычислений. Смотрите Параллельные вычисления Быстрого запуска для Statistics and Machine Learning Toolbox. Можно также использовать любые функции Statistics and Machine Learning Toolbox с функциями Parallel Computing Toolbox™, такими как parfor циклы. Чтобы решить, когда вызвать функции параллельно, рассмотрите факторы, влияющие на скорость и результаты.

Факторы, влияющие на скорость

Некоторые факторы, которые могут влиять на скорость выполнения параллельной обработки:

  • Параллельная установка среды. Это занимает время, чтобы запустить parpool начать вычислять параллельно. Если ваш расчет быстр, время установки может превысить любое время, сохраненное путем вычисления параллельно.

  • Параллель наверху. Существуют издержки в коммуникации и координации при выполнении параллельно. Если вычисления функции быстры, эти издержки могли бы быть заметной частью общего времени вычисления. Таким образом решение задачи параллельно может быть медленнее, чем решение задачи последовательно. Для примера смотрите Улучшающую Производительность Оптимизации с Параллельными вычислениями в Обзоре MATLAB®, март 2009.

  • Нет вложенный parfor циклы. Это описано в Работе с parfor. parfor не работает параллельно, когда названо из другого parfor цикл. Если вы запрограммировали свои пользовательские функции, чтобы использовать в своих интересах параллельную обработку, ограничение не вложенного parfor циклы могут заставить параллельную функцию запускаться медленнее, чем ожидалось.

  • При выполнении последовательно, parfor циклы, запущенные немного медленнее, чем for циклы.

  • Передающие параметры. Параметры автоматически передаются сеансам рабочего во время выполнения параллельных расчетов. Если существует много параметров, или они берут большой объем памяти, передающие параметры могут замедлить выполнение вашего расчета.

  • Конкуренция для ресурсов: сеть и вычисление. Если пул рабочих имеет низкую пропускную способность или высокую задержку, параллельный расчет может быть медленным.

Факторы, влияющие на результаты

Некоторые факторы могут влиять на результаты при использовании параллельной обработки. Вы можете должны быть настроить свой код, чтобы запуститься параллельно, например, вам нужны независимые циклы, и рабочие должны смочь получить доступ к переменным. Некоторые важные факторы:

  • Персистентные или глобальные переменные. Если какие-либо функции используют персистентные или глобальные переменные, эти переменные могут принять различные значения на различных процессорах рабочего. Тело parfor цикл не может содержать глобальные или персистентные объявления переменной.

  • Доступ к внешним файлам. Порядок расчетов не гарантируется во время параллельной обработки, таким образом, к внешним файлам можно будет получить доступ в непредсказуемом порядке, ведя к непредсказуемым результатам. Кроме того, если несколько процессоров пытаются считать внешний файл одновременно, файл может стать заблокированным, ведя к ошибке чтения, и остановив функциональное выполнение.

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

  • parfor не позволяет break или return операторы.

  • Случайные числа, которые вы используете, могут влиять на результаты ваших расчетов. Смотрите Воспроизводимость в параллельных Статистических Расчетах.

Для совета относительно преобразования циклов for, чтобы использовать parfor, смотрите Параллельные циклы for (parfor) (Parallel Computing Toolbox).