2013-01-29 2 views
2

Я использую панель параллельных вычислений (PCT) в сочетании с инструментарием Simbiology в MATLAB 2012b. Я получаю сообщение об ошибке прерывистого, когда я бег моего сценария с удаленным пулом рабочих, но не с местным бассейном работников:Параллельная панель инструментов MATLAB, remoteParallelFunction: RUNTIME_ERROR во время оценки функции

Пойманного std::exception Сообщения об исключении является:

vector::_M_range_check 

Error using parallel_function (line 589) 
Error in remote execution of remoteParallelFunction : RUNTIME_ERROR 

Error in PSOFit (line 486) 
         parfor ns = 1:r.NumSwp 

Error in PSOopt_driver (line 209) 
     PSOFit(ObjFuncName,LB,UB,PSOopts); 

ошибка не происходят, когда я прокомментирую вызов функции sbiosimulate (функция SimBiology для оценки модели).

У меня есть пара идей:

  • Я представил свой род гонку условия, что вызывает проблемы в доступе к модели переменных (это возможно в MATLAB?)
  • модели компиляция в simbiology иногда, но не всегда совместимы с РСТ, и я ударил какой-то крайний случай
  • Поскольку sbiosimulate оценивает компилируется C++ код, для некоторых входов там может быть ошибка в источнике, который генерирует исключение

Мне известно this.

+0

У вас может быть нехватка памяти на удаленной машине? – slayton

+0

Действительно ли все остальные переменные равны при локальном запуске, т.е. используете ли вы один и тот же набор данных? выполняется одинаковое количество итераций? и т.д...? – slayton

+0

Вы уверены, что все рабочие работают с текущей версией matlab? – slayton

ответ

1

Я разработчик SimBiology. Я считаю, что это ошибка, которая была введена в код C++ SimBiology в версии R2012a. Ошибка запускается, когда симуляция заканчивается без каких-либо результатов моделирования. Иногда это может произойти, когда модель настроена на сообщение только определенного времени (с использованием опций OutputTimes) И симуляция сконфигурирована для завершения после определенного количества реального времени (с использованием параметра MaximumWallClock). В принципе, симуляция «время ожидания» до того, как она когда-либо получит возможность регистрировать первое время выхода.

Один из способов обойти эту проблему - всегда включать время 0 в OutputTimes. Это время всегда будет регистрироваться перед оценкой критерия MaximumWallClock, предотвращая запуск ошибки. Я также напрямую свяжусь с этим пользователем и буду работать над исправлением ошибки в будущей версии.

Смежные вопросы