Main Content

Usar la computación paralela en Optimization Toolbox

Usar la computación paralela con procesadores multinúcleo

Si tiene un procesador multinúcleo, puede aumentar la velocidad de procesamiento usando el procesamiento paralelo. Puede establecer un pool paralelo de varios workers con una licencia de Parallel Computing Toolbox™. Para obtener una descripción del software Parallel Computing Toolbox, consulte Get Started with Parallel Computing Toolbox (Parallel Computing Toolbox).

Suponga que tiene un procesador de dos núcleos y quiere usar la computación paralela. Introduzca este código en la línea de comandos.

parpool

MATLAB® inicia un pool de workers usando el procesador multinúcleo. Si establece previamente un perfil de cluster no predeterminado, puede aplicar la computación multinúcleo (local) introduciendo este código.

parpool('local')

Nota

En función de sus preferencias, MATLAB puede iniciar un pool paralelo de forma automática. Para habilitar esta funcionalidad, seleccione Parallel > Parallel Preferences en el grupo Environment de la pestaña Home y, a continuación, seleccione Automatically create a parallel pool.

Establezca las opciones del solver para utilizar la computación paralela.

options = optimoptions('solvername','UseParallel',true);

Cuando ejecuta un solver aplicable con options, los solvers aplicables utilizan de forma automática la computación paralela.

Para detener las optimizaciones de computación en paralelo, establezca UseParallel como false. Para detener toda la computación paralela, introduzca este código.

delete(gcp)

Nota

La documentación recomienda no utilizar parfor o parfeval cuando se llame a Simulink®. Consulte Using sim Function Within parfor (Simulink). Por lo tanto, es posible que encuentre problemas al optimizar una simulación de Simulink en paralelo usando una funcionalidad en paralelo integrada del solver.

Usar la computación paralela con una red multiprocesador

Si tiene múltiples procesadores en una red, utilice las funciones de Parallel Computing Toolbox y el software Parallel Server™ de MATLAB para establecer la computación paralela.

Asegúrese de que su sistema esté configurado correctamente para la computación paralela. Póngase en contacto con su administrador de sistemas o consulte la documentación de Parallel Computing Toolbox.

  1. Lleve a cabo una comprobación básica introduciendo este código, donde prof es su perfil de cluster.

    parpool(prof)
  2. Los workers deben poder acceder a su archivo de función objetivo y, si es aplicable, su archivo de función de restricción. Complete uno de los pasos siguientes para asegurar el acceso:

    • Distribuya los archivos a los workers usando el argumento parpool (Parallel Computing Toolbox)AttachedFiles. En este ejemplo, objfun.m es su archivo de función objetivo y constrfun.m es su archivo de función de restricción no lineal.

      parpool('AttachedFiles',{'objfun.m','constrfun.m'});

      Los workers acceden a sus propias copias de los archivos.

    • Proporcione una ruta de archivos de red a sus archivos de función objetivo o de restricción.

      pctRunOnAll('addpath network_file_path')

      Los workers acceden a los archivos de función a través de la red.

  3. Compruebe si un archivo está en la ruta de cada worker.

    pctRunOnAll('which filename')
    Si cualquier worker no cuenta con una ruta al archivo, emite el mensaje
    filename not found.

Establezca las opciones de solver que desea especificar usando la computación paralela. El argumento 'solvername' representa un solver no lineal que admite evaluación paralela.

options = optimoptions('solvername','UseParallel',true);

Una vez que haya establecido su entorno de computación paralela, los solvers aplicables utilizan automáticamente la computación paralela en el momento en el que los llama con options.

Para detener las optimizaciones de computación en paralelo, establezca UseParallel como false. Para detener toda la computación paralela, introduzca este código.

delete(gcp)

Nota

La documentación recomienda no utilizar parfor o parfeval cuando se llame a Simulink. Consulte Using sim Function Within parfor (Simulink). Por lo tanto, es posible que encuentre problemas al optimizar una simulación de Simulink en paralelo usando una funcionalidad en paralelo integrada del solver.

Probar computaciones paralelas

Siga estos pasos para probar si su problema se ejecuta correctamente en paralelo.

  1. Pruebe su problema sin computación paralela para asegurar que se ejecute en serie. Asegúrese de que la prueba es exitosa (que dé resultados correctos) antes de pasar a la siguiente prueba.

  2. Establezca UseParallel como true y asegúrese de que el pool no paralelo existe introduciendo delete(gcp). Para asegurar que MATLAB no crea un pool paralelo, seleccione Parallel > Parallel Preferences en el grupo Environment de la pestaña Home y, a continuación, borre Automatically create a parallel pool. Su problema ejecuta parfor en serie, con iteraciones en bucle en orden inverso desde un bucle for. Asegúrese de que la prueba es exitosa (que dé resultados correctos) antes de pasar a la siguiente prueba.

  3. Establezca UseParallel como true y cree un pool paralelo usando parpool. Si no tiene un procesador multinúcleo o una red configurada, esta prueba no aumenta la velocidad de procesamiento. Esta prueba está destinada únicamente a verificar el correcto funcionamiento de los cálculos.

Recuerde llamar a su solver usando un argumento options para probar o usar la funcionalidad paralela.

Temas relacionados