我有一台32核(2个处理器)和32G RAM的单机。我安装了gridengine来向我创建的队列提交作业。但似乎所有核心都在运行着乔布斯。
我想知道是否有办法限制每个工作的核心和RAMs。例如,我有两个队列:parlin.q和erial.q,因此我分配了20G RAMS和20个内核给erial.q,但是我希望每个作业只使用一个核心和最大1G RAMs,而8G RAMs +8个核用于一个并行作业。所有4个核心和4G公羊留在其他用途。
如何配置队列或网格引擎以获得正确的设置?我试着阅读手册,但一点线索也没有。
谢谢!
我对并行工作没有问题。我有一些串行的工作,会调用几个不同的程序,不知怎么的,系统会分配他们所有的核心可用。但我不希望所有的核心都被用于作业,例如,每个作业只有两个可用的核心。(每个作业有几个程序按顺序运行,在这种情况下,系统会分配每个程序一个核心)。顺便说一句,我希望有一些空闲的核心时刻处理其他工作,如处理数据。这是可能的还是必要的?
发布于 2014-01-16 16:19:35
事实上,如果我理解得很好,你想用几个子队列来划分一台机器,对吗?
这在SGE中可能有问题,因为主机配置允许您设置给定节点上可用的CPU数量。而不是创建队列并将不同的主机分配给不同的队列。
在这种情况下,您应该将同一主机分配给一个主队列,然后添加只能使用给定MAX_SLOTS插槽的从属队列。
但如果我能问一个问题:你为什么要分割它?如果您只设置了一个队列并配置了一些并行环境,那么您只需使用qsub -pe <parallelEnvironment> <NSLOTS>提交作业,网格引擎就可以处理所有事情。我建议您至少设置一个OpenMP并行环境,因为您可能不需要像您这样的共享内存机器上的MPI (这似乎是一台很棒的计算机BTW)。
另一件事是,您必须能够配置您的模型运行,以便您所使用的代码可以与有限数量的一起使用;这是非常重要的。实际上,您必须将相同数量的CPU分配给模拟代码,而不是分配给SGE。此信息包含在qsub的$NSLOTS变量中。
https://stackoverflow.com/questions/21158658
复制相似问题