MATLAB: Can I use parfor and CVX togther

cvxOptimization ToolboxParallel Computing Toolboxparfor

Hi, I tried to use CVX toolbox inside the parfor loop for solving my optimization problems with different parameters, and the structure of my code is
parfor index_time=1:times
invoke function { cvx_begin
optimization problem
cvx_end }
end
Unfortunately, I received a warning as follows,
Warning: A non-empty CVX problem already exists in this scope.
It is being overwritten.
In cvxprob (line 28)
In cvx_begin (line 41)
In SSR (line 11)
In parallel_function>make_general_channel/channel_general (line 923)
In remoteParallelFunction (line 46)
The above warning showed the optimizaiton problem was overwritten. However, a lot of people mentioned cvx can work with parfor on the internet. I am so confused.

Best Answer

I'm not familiar with the CVX toolbox. However, a lot of parfor problems can be remedied by pushing the body of the loop into a separate function, a bit like this:
parfor i = 1:N
out(i) = doCvxStuff(i);
end
function out = doCvxStuff(i)
% Something like whatever CVX needs...
invoke function { cvx_begin
optimization problem
cvx_end }
end
Related Question