Параллельные вычисления - это метод использования нескольких процессоров по одной задаче. Причина использования параллельных вычислений - ускорение расчетов.
Следующие решатели 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 являются векторами единичного направления
.R. i - размер шага в ei направлении
Чтобы оценить <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) параллельно, решатели Optimization Toolbox распределяют оценку (f (x + Δ <reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3>) - f (<reservedrangesplaceholder1>))/Δ 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, как указано в Parallel Optimization Functivality, удовлетворены. Когда Parfor Run In Parallel показывает три случая:
Самый внешний цикл parfor. Только этот цикл проходит параллельно.
Наиболее удаленное parfor цикл находится в fmincon. Только fmincon проходит параллельно.
Наиболее удаленное parfor цикл находится в userfcn. userfcn может использовать parfor параллельно.
Когда parfor запускается параллельно

Повышение эффективности при параллельных вычислениях | Минимизация дорогостоящей задачи оптимизации с помощью Parallel Computing Toolbox™ | Использование параллельных вычислений в Optimization Toolbox