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.
Lleve a cabo una comprobación básica introduciendo este código, donde
prof
es su perfil de cluster.parpool(prof)
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 yconstrfun.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.
Compruebe si un archivo está en la ruta de cada worker.
Si cualquier worker no cuenta con una ruta al archivo, emite el mensajepctRunOnAll('which filename')
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.
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.
Establezca
UseParallel
comotrue
y asegúrese de que el pool no paralelo existe introduciendodelete(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 ejecutaparfor
en serie, con iteraciones en bucle en orden inverso desde un buclefor
. Asegúrese de que la prueba es exitosa (que dé resultados correctos) antes de pasar a la siguiente prueba.Establezca
UseParallel
comotrue
y cree un pool paralelo usandoparpool
. 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.