Matlab clears persistent and global variables in fmincon when activating UseParallel
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
It seems matlab clears all global and persistent variables within the objective function when using "UseParallel" in fmincon. I am trying to track each function call within the objective function (this is because my objective function should generate a specific input file to be called by an exteranl program and give a misfit output). 
I use the folowing code to within my objective function to generate the unique file name at each iteration:
persistent count_1
if isempty(count_1)
    count=0;
else
    t = getCurrentTask();
    worker_number = t.ID;
    c = worker_number * 10000 + count_1;
    count =c;
    count_1=count_1+1;
end
count_1=count_1+1;
filename = ['Run_' num2str(cout) '.dat'];
But strangly, the name would not change after the first function call.  Have you encoutered this issue? 
0 comentarios
Respuesta aceptada
  Matt J
      
      
 el 6 de Abr. de 2021
        
      Editada: Matt J
      
      
 el 6 de Abr. de 2021
  
      This happens because, in parallel computing, it isn't easily definable what it means for a variable to "persist". A peristent variable is normally one that retains its value from the previous function call. But when the objective function calls are all executing simultaneously (or at least non-sequentially), what does "previous" even mean?
With global variables, similar ambiguities arise. What if two parallel-occuring executions of the objective function assign different values to a global variable G that they share with the base workspace? Which of the conflicting values should reside in the base workspace version of G after the execution is complete?
Más respuestas (0)
Ver también
Categorías
				Más información sobre Parallel Computing Fundamentals en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

