Обновление 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, поэтому я доверяю его программе:)
Надеюсь, это поможет!