Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions src/utils/manageWorkersPool.m
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ function manageWorkersPool(action, opt)
% opt.parallelize.killOnExit = true;
%

if ~isOctave() && opt.parallelize.do
if ~opt.parallelize.do
opt.parallelize.nbWorkers = 1;
opt.parallelize.killOnExit = true;
end

if ~isOctave()

matlabVer = version('-release');

Expand Down Expand Up @@ -56,7 +61,11 @@ function manageWorkersPool(action, opt)
if opt.parallelize.killOnExit

if str2double(matlabVer(1:4)) > 2013
delete(gcp);

pool = gcp('nocreate');
if ~isempty(pool)
delete(gcp);
end

else
matlabpool close;
Expand Down
69 changes: 69 additions & 0 deletions tests/test_manageWorkersPool.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
function test_suite = test_manageWorkersPool %#ok<*STOUT>
try % assignment of 'localfunctions' is necessary in Matlab >= 2016
test_functions = localfunctions(); %#ok<*NASGU>
catch % no problem; early Matlab versions can use initTestSuite fine
end
initTestSuite;
end

function test_manageWorkersPoolBasic()

opt.parallelize.do = true;
opt.parallelize.nbWorkers = 3;
opt.parallelize.killOnExit = true;

matlabVer = version('-release');

manageWorkersPool('close', opt);

manageWorkersPool('open', opt);

if ~isOctave()
if str2double(matlabVer(1:4)) > 2013

pool = gcp('nocreate');
nbWorkers = pool.NumWorkers;

else
nbWorkers = matlabpool('size'); %#ok<DPOOL>

end

manageWorkersPool('close', opt);

assertEqual(nbWorkers, opt.parallelize.nbWorkers);

end

end

function test_manageWorkersPoolNoParallel()

opt.parallelize.do = false;
opt.parallelize.nbWorkers = 3;
opt.parallelize.killOnExit = true;

matlabVer = version('-release');

manageWorkersPool('close', opt);

manageWorkersPool('open', opt);

if ~isOctave()
if str2double(matlabVer(1:4)) > 2013

pool = gcp('nocreate');
nbWorkers = pool.NumWorkers;

else
nbWorkers = matlabpool('size'); %#ok<DPOOL>

end

manageWorkersPool('close', opt);

assertEqual(nbWorkers, 1);

end

end