Что такое параллельные вычисления в Optimization Toolbox?

Функциональность параллельной оптимизации

Параллельные вычисления - это метод использования нескольких процессоров по одной задаче. Причина использования параллельных вычислений - ускорение расчетов.

Следующие решатели 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(x)[f(x+Δ1e1)f(x)Δ1,f(x+Δ2e2)f(x)Δ2,,f(x+Δnen)f(x)Δn],

где

  • f представляет целевые или ограничительные функции

  • ei являются векторами единичного направления

  • .R. i - размер шага в ei направлении

Чтобы оценить  <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) параллельно,   решатели Optimization Toolbox распределяют оценку (f (x + Δ <reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3>) - f (<reservedrangesplaceholder1>))/Δ i к дополнительным процессорам.

Параллельные центральные различия

Можно выбрать, чтобы градиенты оценивались центральными конечными различиями вместо стандартных прямых конечных различий. Основная центральная конечная формула различия является

f(x)[f(x+Δ1e1)f(xΔ1e1)2Δ1,,f(x+Δnen)f(xΔnen)2Δn].

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

Включите центральные конечные различия при помощи 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 показывает три случая:

  1. Самый внешний цикл parfor. Только этот цикл проходит параллельно.

  2. Наиболее удаленное parfor цикл находится в fmincon. Только fmincon проходит параллельно.

  3. Наиболее удаленное parfor цикл находится в userfcn. userfcn может использовать parfor параллельно.

Когда parfor запускается параллельно

См. также

| |