exponenta event banner

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

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

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

Примечание

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

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

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

  • Настройка параллельной среды. Для запуска требуется время parpool чтобы начать вычисления параллельно. Если вычисления выполняются быстро, время настройки может превысить любое время, сэкономленное параллельными вычислениями.

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

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

  • При серийном выполнении parfor петли проходят немного медленнее, чем for петли.

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

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

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

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

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

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

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

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

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

Для получения рекомендаций по преобразованию для циклов для использования parfor, см. раздел Параллельные контуры (parfor) (Панель параллельных вычислений).