usuario sesion que mexico mathworks log inicio iniciar fabricante empresa descargar matlab parallel-processing simulation simulink parfor

sesion - matlab usuario



Matlab Parallel Computing con Simulink Model (1)

Estoy trabajando en un proyecto en el que la computación paralela sería una gran ventaja. El proyecto simula múltiples modelos de Simulink . Hice la simulación con un for-Loop normal, pero como lleva días simular, decidí probar el "parfor"-Loop .

Pero ahí es donde comienza el problema. Primero le daré fotos de mi código, el espacio de trabajo y la parte de Simulink-part que me está causando problemas:

Aquí está mi código:

apool = gcp(''nocreate''); if isempty(apool) apool = parpool(''local''); end wpath = pwd; parfor k = 1:number_of_models load_system(strcat(wpath,''/Models_Folder/',House(k).model_name)); set_param(House(k).model_name, ''Stoptime'', num2str(foreruntime)); set_param(House(k).mask_name, ''Data_contr'', num2str(controlvector(k))); set_param(House(k).mask_name, ''Data_cons'', strcat(''GlobalData('',num2str(k),'').consume.'',MaskParam(k).consume_input)) SimOut(k) = sim(House(k).model_name); end delete(apool);

Lo confuso es si borro la columna:

SimOut(k) = sim(House(k).model_name);

el código simplemente funciona bien -> los modelparameters del modelparameters están establecidos en un parfor loop

pero si no borro la columna aparece el siguiente error:

Error using Forerunsimple (line 9)

Error evaluating parameter ''Data_cons'' in ''model_house_14/House''

Caused by: Error using parallel_function>make_general_channel/channel_general (line 907) Error evaluating parameter ''Data_cons'' in ''model_house_14/House'' Error using parallel_function>make_general_channel/channel_general (line 907) Undefined variable "GlobalData" or class "GlobalData".

Como puede ver en la imagen, la variable "GlobalData" se define en el espacio de trabajo. Entonces, en mi opinión, debería funcionar. Obviamente no es así. ¿Tienes alguna idea de cuál podría ser el problema?


Es posible que desee ver esta pregunta, en mi humilde opinión, está relacionado, y de hecho podría ser el mismo problema:

MATLAB: ¿Qué ocurre con una variable global cuando se ejecuta en el modo paralelo?

Existe una variable global del espacio de trabajo que parece estar vacía, incluso si se definió.

el usuario Edric proporciona un enlace, y una breve explicación, que las variables globales no se pasan a los trabajadores (por ejemplo simulink corriendo como paralelo).

El enlace es a esta entrada del blog: "Obteniendo parfor loops funcionando": http://blogs.mathworks.com/loren/2009/10/02/using-parfor-loops-getting-up-and-running/