Class with static variables in parallel global optimization algorithm
Afficher commentaires plus anciens
Hello,
I have a global optimization program dealing with large matrices (several gigabytes of data), so in order to save memory, a class with static variables was implemented similar to the implementation in Static Data, and then one object of this class is created, initialized and passed as an argument to a function handle acting as the objective function of global multistage optimization algorithm (Particle Swarm + Pattern Search). When parallelization in optimoptions is true:
optimoptions( ...
'UseParallel', true);
The optimization always yields false results, but when parallelization is turned off, it works correctly.
Thanks in advance!
Réponses (2)
All variables are cloned when parallelization is used. Each parallel worker operates with an independent copy of any variable sent to it.
5 commentaires
Omar Kamel
le 8 Fév 2019
Matt J
le 8 Fév 2019
We need to see code...
Omar Kamel
le 8 Fév 2019
Matt J
le 8 Fév 2019
Okay, but we also need to see how it is used in the optimization.
Omar Kamel
le 14 Fév 2019
Modifié(e) : Omar Kamel
le 14 Fév 2019
Walter Roberson
le 14 Fév 2019
0 votes
Look again at the link you provided . Notice the point about static data not being saved with an object . The process of sending variables to parallel workers involves save and load.
3 commentaires
Omar Kamel
le 21 Mar 2019
Modifié(e) : Omar Kamel
le 21 Mar 2019
Walter Roberson
le 21 Mar 2019
However, that saves the matrix once per worker, not "only 1 time in the memory". If you strictly need "only 1 time in the memory" then you should look in the File Exchange for https://www.mathworks.com/matlabcentral/fileexchange/28572-sharedmatrix which uses operating system shared memory.
Catégories
En savoir plus sur Surrogate Optimization dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!