Параллельные вычисления являются методом использования нескольких процессоров на одной проблеме. Причина использовать параллельные вычисления состоит в том, чтобы ускорить вычисления.
Следующие решатели 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
, чтобы выполнить параллельную оценку градиентов. parfor
не работает параллельно, когда названо из другого цикла parfor
. Поэтому вы не можете одновременно использовать параллельную оценку градиента и найти что-либо подобное функциональности в вашей цели или ограничительных функциях.
Предположим, например, своя целевая функция, userfcn
вызывает parfor
, и вы хотите вызвать fmincon
в цикле. Предположим также, что условия для параллельной оценки градиента fmincon
, как дали в параллельной Функциональности Оптимизации, удовлетворены. Когда Выполнения parfor Параллельно показывают три случая:
Наиболее удаленным циклом является parfor
. Только тот цикл запускается параллельно.
Наиболее удаленный цикл parfor
находится в fmincon
. Только fmincon
запускается параллельно.
Наиболее удаленный цикл parfor
находится в userfcn
. userfcn
может использовать parfor
параллельно.
Когда Выполнения parfor Параллельно
Улучшание производительности с параллельными вычислениями | Минимизация дорогой задачи оптимизации Используя Parallel Computing Toolbox™ | Используя параллельные вычисления в Optimization Toolbox