MATLAB Answers

Eduard
0

Controlling new parallel feature "Automatically create a parallel pool when parallel keywords are executed"

Asked by Eduard
on 15 Jan 2014
Latest activity Commented on by Eduard
on 15 Jan 2014
Hi all,
is there a possibility to control this feature (e.g. temporarily deactivate or read the settings value) from within a script?
Background is that I have a script that contains a parfor loop. For this parfor loop to work on workers there needs to be done some initializing though before entering the loop. This initialization is omitted when the matlabpool is automatically created when reaching the parfor loop.
This means I either need to start the matlabpool before reaching the loop so I can do the initialization (which I don't want to do by default) or (as an ugly workaround) I could add a dummy parfor loop to trigger the automatic startup of the matlabpool due to the new setting early.
Is there a proper way to control the preference (without user interaction)?
Regards Eduard

  0 Comments

Sign in to comment.

1 Answer

Answer by Edric Ellis
on 15 Jan 2014
 Accepted Answer

Unfortunately, there's no API to modify the parallel preferences. I think you have essentially two options here, and these are:
  1. Turn off auto-opening pools in the parallel preferences UI. Then you have essentially the same situation as existed in R2013a.
  2. Use the optional "number of workers" argument in your PARFOR loop - see the documentation for more.
As an example of the second approach, you could do something like this
if wantToGoParallel
M = Inf;
else
M = 0;
end
parfor (idx = 1:N, M)
doStuff(...);
end

  2 Comments

Actually one could change one entry in the parallel.settings file in the prefdir. There is one sections in that file which reads:
<settings name="pool">
<key name="AutoCreate">
<bool>
<value>1</value>
</bool>
</key>
Change the value 1 to 0 to disable it. So a bit fopen, fseek, fwrite does the job.
Thanks Edric, option two sounds like a reasonable solution. I'll consider this.
Option one is not possible since the script should run out of the box and I can't make sure everyone who uses it always remembers to turn of that option.
@Friedrich: Even if that would work, it sounds very hacky to me. Actually I doubt this file is read interactively when starting the parallel pool; probably only at MATLAB startup? Anyway I'll definitely not start messing around with settings files inside scripts.

Sign in to comment.