Не используйте всех работников пула MATLAB
Я настроил локальный пул работников Matlab (R2015b) в соответствии с конфигурацией моего процессора (четырехъядерный, многопоточность => 8 работников в общей сложности).
У меня есть симуляции, которые длятся 24 часа, но я хочу иметь возможность использовать мой компьютер одновременно. Поэтому я ограничиваю себя четырьмя симуляциями в день (отправляемыми партиями), чтобы я мог продолжать работать одновременно.
У меня такой вопрос: как я могу поставить в очередь несколько рабочих мест, не съедая 8 рабочих? Другой связанный с этим вопрос: если я уменьшу размер пула до 4 рабочих, смогу ли я по-прежнему бесперебойно запускать Matlab?
Большое спасибо за ответ.
1 ответ
Я бы сказал, что лучшее решение вашей проблемы - это сделать это через bash вместо matlab. В bash у вас есть команда nice, которая позволяет вам расставить приоритеты в симуляции. Это означает, что, если вы используете компьютер, вы получите питание, а если вы его не используете, питание перейдет к вычислениям.
По поводу второй части вашего вопроса. Самый простой способ поставить в очередь все задания - сделать скрипт bash примерно таким:
for f in $(find . -name name_of_matlab_script*)
do
nice -n 10 matlab -nodisplay <$f
done
где имя сценариев Matlab будет называться как-то с той же базой, и тогда все остальное позаботится о запуске. Затем он будет запускать сценарии друг за другом, однако отдавать приоритет тому, для чего вы в противном случае используете компьютер.
Если вам нужна более продвинутая программа планирования, я обычно использую Slurm.
Что касается 4 рабочих вместо 8, то, как говорит Андер Бигури в комментариях, как можно меньше, если вы не добавляете много дополнительного времени.