Обновление Waitbar выдает ошибку при использовании matlabpool

В настоящее время я работаю в Matlab и впервые пробую параллельную обработку. Мой код работает нормально, пока я не добавлю matlabpool('open',4); в верхней части моего кода и matlabpool('close'); внизу.

Если я добавлю эти две строки, все мои процессорные ядра будут на 100% загружены (как и предполагалось), и мой код все еще работает, за исключением панели ожидания, которую я реализовал внутри цикла parfor.

Код выглядит примерно так:

matlabpool('open',4);

global bar;
bar = waitbar(0, 'Waitbar');


parfor i=1:1000

    //working code

    try
        waitbar(UPDATED_VALUE, bar, UPDATED_STRING);
    end
end

try
    close(bar);
end

//display results


matlabpool('close');

Я получаю следующую ошибку:

Warning: This functionality is no longer supported under the -nodisplay and -noFigureWindows startup options. For more information, see "Changes to -nodisplay and -noFigureWindows Startup Options" in the MATLAB Release Notes. To view the release note in your system browser, run  web('http://www.mathworks.com/access/helpdesk/help/techdoc/rn/br5ktrh-1.html#br5ktrh-3', '-browser')
In uitools\private\warnfiguredialog at 26
In waitbar at 38
In montecarlo>(parfor body) at 41
In parallel_function>make_general_channel/channel_general at 891
In remoteParallelFunction at 28 

Я действительно не знаю, что я делаю неправильно. Может кто-то помочь мне, пожалуйста?

1 ответ

Я думаю, что вы сделали "неправильно" - это использование панели ожидания внутри цикла parfor, ха-ха. Но если серьезно, я боюсь, что это потому, что итерации не выполняются по порядку внутри цикла parfor, поэтому использование обычной панели ожидания запрещено из-за способа обмена информацией между клиентом Matlab и работниками, выполняющими цикл. Даже если ты не написал matlabpool('open',4) MATLAB открыл бы его, поэтому проблема в том, что панель ожидания находится в цикле parfor.

В качестве обходного пути вы можете захотеть взглянуть на эту отправку из File Exchange. Он был написан Эдриком Эллисом, который работает в The Mathworks, поэтому я доверяю его программе:)

Надеюсь, это поможет!

Другие вопросы по тегам