Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

¿En qué consiste la computación paralela?Optimization Toolbox

Funcionalidad de optimización paralela

La computación paralela es la técnica de usar varios procesadores en un solo problema. La razón para utilizar la computación paralela es acelerar los cálculos.

Los siguientes solucionadores pueden distribuir automáticamente la estimación numérica de gradientes de funciones objetivas y funciones de restricción no lineal a varios procesadores:Optimization Toolbox™

  • fmincon

  • fminunc

  • fgoalattain

  • fminimax

  • fsolve

  • lsqcurvefit

  • lsqnonlin

Estos solucionadores utilizan la estimación de degradado paralela en las siguientes condiciones:

  • Tiene una licencia para el software.Parallel Computing Toolbox™

  • La opción se establece en, o, si hay una función de restricción no lineal, la opción se establece en.SpecifyObjectiveGradientfalseSpecifyConstraintGradientfalse Puesto que es el valor predeterminado de estas opciones, no tiene que establecerlas; simplemente no los estableces a ambos.falsetrue

  • La computación paralela está habilitada con una función.parpoolParallel Computing Toolbox

  • La opción está configurada en.UseParalleltrue El valor predeterminado de esta opción es.false

Cuando estas condiciones se mantiene, los solucionadores calculan los degradados en paralelo.

Nota

Incluso cuando se ejecuta en paralelo, un solucionador ocasionalmente llama a las funciones de restricción objetiva y no lineal en serie en el equipo host. Por lo tanto, asegúrese de que sus funciones no tienen suposiciones sobre si se evalúan en serie o en paralelo.

Estimación paralela de degradados

Una subrutina de solucionador puede computar en paralelo automáticamente: la subrutina que estima el degradado de la función objetiva y las funciones de restricción. Este cálculo implica calcular los valores de función en puntos cercanos a la ubicación actual.x Esencialmente, el cálculo es

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

Dónde

  • representa funciones objetivas o de restricciónf

  • ei son los vectores de dirección de unidad

  • Δi es el tamaño de un paso en el ei Dirección

Para estimar f(x) en paralelo, los solucionadores distribuyen la evaluación deOptimization Toolbox (f(x + Δiei) – f(x))/Δi a procesadores adicionales.

Diferencias centrales paralelas

Puede elegir que los degradados se calculen por diferencias finitas centrales en lugar de las diferencias finitas adelantas predeterminadas. La fórmula básica de diferencia finita central es

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

Esto toma el doble de evaluaciones de funciones que las diferencias finitas de avance, pero suele ser mucho más preciso. Las diferencias finitas centrales funcionan en paralelo exactamente igual que las diferencias finitas adelantan.

Habilite las diferencias finitas centrales utilizando para establecer la opción.optimoptionsFiniteDifferenceType'central' Para utilizar las diferencias finitas hacia delante, establezca la opción en.FiniteDifferenceType'forward'

Funciones paralelas anidadas

Solvers emplea la función para realizar la estimación paralela de gradientes. no funciona en paralelo cuando se llama desde dentro de otro bucle.Parallel Computing Toolboxparforparforparfor Por lo tanto, no puede utilizar simultáneamente la estimación de degradado paralela y la funcionalidad paralela dentro de sus funciones de objetivo o restricción.

Supongamos, por ejemplo, que las llamadas de función objetivo, y desea llamar en un bucle.userfcnparforfmincon Supongamos también que se satisfacen las condiciones para la evaluación de gradiente paralela, como se da en. muestra tres casos:fminconFuncionalidad de optimización paralelaCuando parfor se ejecuta en paralelo

  1. El bucle más externo es.parfor Sólo ese bucle se ejecuta en paralelo.

  2. El bucle más externo está en.parforfmincon Sólo se ejecuta en paralelo.fmincon

  3. El bucle más externo está en. puede utilizar en paralelo.parforuserfcnuserfcnparfor

Cuando parfor se ejecuta en paralelo

Consulte también

| |