不要使用所有MATLAB池工作者

时间:2016-06-06 07:45:59

标签: multithreading matlab matlabpool

我已经根据我的CPU配置设置了一个本地Matlab(R2015b)工作池(四核,多线程=>总共8名工人。)

我有模拟,持续24小时,但我希望能够同时使用我的电脑。因此,我每天仅限于4次模拟(通过批量发送),以便我可以同时继续工作。

我的问题是:如何在不吃掉8名工人的情况下排队几个工作?另一个相关的问题是如果我将游泳池的大小减少到4名工人,我还会能够顺利运行Matlab吗?

非常感谢您的回答。

1 个答案:

答案 0 :(得分: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名工人,正如Ander Biguri在评论中所说的那样,尽可能少,只要你不增加额外的时间。