Улучшание производительности с параллельными вычислениями

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

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

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

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

  • При выполнении последовательно, parfor циклы, запущенные медленнее, чем for циклы. Поэтому для лучшей эффективности, гарантируйте, что только ваш наиболее удаленный параллельный цикл вызывает parfor. Например, предположите свои вызовы кода fmincon в a parfor цикл. Для лучшей эффективности в этом случае, набор fmincon UseParallel опция к false.

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

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

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

Некоторые факторы могут влиять на числовые результаты при использовании параллельной обработки. Существует больше протестов, связанных с parfor перечисленный в параллельных циклах for (parfor) (Parallel Computing Toolbox).

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

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

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

  • Если ваша целевая функция вызывает Simulink®, результаты могут быть ненадежными с параллельной оценкой градиента.

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

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

Поиск глобальных оптимумов

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

Если у вас есть лицензия Global Optimization Toolbox, можно использовать MultiStart (Global Optimization Toolbox) решатель, чтобы исследовать несколько стартовых точек параллельно. Смотрите Параллельные вычисления (Global Optimization Toolbox) и Параллель MultiStart (Global Optimization Toolbox).

Похожие темы