Class with static variables in parallel global optimization algorithm
3 次查看(过去 30 天)
显示 更早的评论
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!
0 个评论
回答(2 个)
Walter Roberson
2019-2-14
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 个评论
Walter Roberson
2019-3-21
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!