Параллельные вычисления являются методом использования нескольких процессоров на одной проблеме. Причина использовать параллельные вычисления состоит в том, чтобы ускорить расчеты.
Следующие решатели Optimization Toolbox™ могут автоматически распределить числовую оценку градиентов целевых функций и нелинейных ограничительных функций к нескольким процессорам:
fmincon
fminunc
fgoalattain
fminimax
fsolve
lsqcurvefit
lsqnonlin
Эти решатели используют параллельную оценку градиента при следующих условиях:
У вас есть лицензия на программное обеспечение Parallel Computing Toolbox™.
Опция SpecifyObjectiveGradient
установлен в false
, или, если существует нелинейная ограничительная функция, опция SpecifyConstraintGradient
установлен в false
. Начиная с false
значение по умолчанию этих опций, вы не должны устанавливать их; только не устанавливайте их обоих на true
.
С параллельными вычислениями включают parpool
, функция Parallel Computing Toolbox.
Опция UseParallel
установлен в true
. Значением по умолчанию этой опции является false
.
Когда эти условия содержат, решатели вычисляют оцененные градиенты параллельно.
Примечание
Запускаясь параллельно, решатель иногда вызывает объективные и нелинейные ограничительные функции последовательно на хост-машине. Поэтому гарантируйте, что ваши функции не имеют никаких предположений о том, оценены ли они в последовательном или параллельном.
Одна стандартная подпрограмма решателя может вычислить параллельно автоматически: стандартная подпрограмма, которая оценивает градиент ограничительных функций и целевой функции. Это вычисление включает вычислительные значения функции в точках около текущего местоположения x. По существу вычисление
где
f представляет ограничительные функции или цель
ei является модульными векторами направления
Δi является размером шага в направлении ei
Чтобы оценить ∇f (x) параллельно, решатели Optimization Toolbox распределяют оценку (f (x + Δiei) – f (x))/Δi к дополнительным процессорам.
Можно принять решение оценить градиенты центральными конечными разностями вместо прямых конечных разностей по умолчанию. Основная центральная формула конечной разности
Это берет вдвое больше вычислений функции в качестве прямых конечных разностей, но обычно намного более точно. Центральные конечные разности работают параллельно точно то же самое прямыми конечными разностями.
Включите центральные конечные разности при помощи optimoptions
установить FiniteDifferenceType
опция к 'central'
. Чтобы использовать прямые конечные разности, установите FiniteDifferenceType
опция к 'forward'
.
Решатели используют функцию Parallel Computing Toolbox parfor
(Parallel Computing Toolbox), чтобы выполнить параллельную оценку градиентов. parfor
не работает параллельно, когда названо из другого parfor
цикл. Поэтому вы не можете одновременно использовать параллельную оценку градиента и найти что-либо подобное функциональности в вашей цели или ограничительных функциях.
Примечание
Документация рекомендует не использовать parfor
или parfeval
при вызове Simulink®; смотрите Используя функцию sim в parfor (Simulink). Поэтому вы можете столкнуться с проблемами при оптимизации параллельной симуляции Simulink с помощью встроенной параллельной функциональности решателя.
Предположим, например, своя целевая функция userfcn
вызовы parfor
, и вы хотите вызвать fmincon
в цикле. Предположим также что условия для параллельной оценки градиента fmincon
, как дали в параллельной Функциональности Оптимизации, удовлетворены. Когда Запуски parfor Параллельно показывают три случая:
Наиболее удаленный цикл parfor
. Только тот цикл запускается параллельно.
Наиболее удаленное parfor
цикл находится в fmincon
. Только fmincon
запуски параллельно.
Наиболее удаленное parfor
цикл находится в userfcn
. userfcn
может использовать parfor
параллельно.
Когда Запуски parfor Параллельно
Улучшание производительности с параллельными вычислениями | Минимизация дорогой задачи оптимизации Используя Parallel Computing Toolbox™ | Используя параллельные вычисления в Optimization Toolbox