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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Похожие темы