2017-01-24 2 views
-1

Я пытаюсь использовать чужой код и есть эта строка в нем:Альтернатива для matlabpool

if (m<100) || (matlabpool('size')==0) 

Я использую MATLAB R2016a, так что эта команда не будет выполнена. Что эквивалентно matlabpool('size') в новой версии?

Я знаю, что matlabpool заменяется на parpool. Но что делает matlabpool('size') конкретно? Это фактически не создает параллельных работников.

ответ

4

В соответствии с change log:

matlabpool функция удаляют matlabpool функция была удалена . Соображения о совместимости Вызов matlabpool теперь генерирует ошибку. Вместо этого вы должны использовать parpool для создания параллельного пула .

matlabpool('size') делает именно то, что вы ожидаете от этого: он дает вам размер текущего пула, то есть количество назначенных ему работников. gcp (GetCurrentPool) делает это за вас. Первый пример его документации:

p = gcp('nocreate'); % If no pool, do not create new one. 
if isempty(p) 
    poolsize = 0; 
else 
    poolsize = p.NumWorkers 
end 
+0

Да, я это знаю. Но я не могу заменить его parpool, не зная, что делает matlabpool («размер»), в первую очередь. Я попробовал документацию google matlabpool, но все ссылки касались parpool – TyanTowers

+0

На самом деле, он использует parfor, если matlabpool ('size') не равен 0. Я предполагаю, что это было проблемой в предыдущих версиях. Я просто удалил эту часть инструкции if. Спасибо за Ваш ответ. – TyanTowers

+0

Я знаю :) Я думаю, что в предыдущих версиях, если вы используете parfor, фактически не создавая параллельных работников, это вызовет ошибку. Теперь он просто создает новый параллельный пул автоматически. – TyanTowers