我在AWS EC2上有一个使用Starcluster设置的Sun Grid Engine集群。每个节点有4个处理器和16G RAM。我想提交一个任务数组,每次调度2个作业,每个作业使用一个完整的节点(所有4个处理器和16G RAM)。但是,我不想创建一个带有-pe smp 4等标志的并行环境,因为根据经验这会大大降低性能。是否有一个qsub的标志,表示“将作业提交给具有16G内存但尚未分配给任何其他作业的节点”?我知道的标志是
-l mem_free = 16g - 如果当前有16g空闲,则将作业提交给节点 -l h_vmem = 16g - 如果内存使用量超过16g,则终止作业
这些都不适用于我的问题。使用mem_free = 16g,因为作业最初缓慢使用内存,所以qsub将所有任务分配给2个节点,然后它们都会同时耗尽内存。
答案 0 :(得分:1)
我用手动变量做到了。这是StarCluster code to it。
所以基本上它会创建一个变量" da_mem_gb"。每台机器的初始值等于其RAM。然后作业使用该变量请求他们需要多少RAM。如果他们需要机器的所有RAM,则会立即为该机器分配一个作业。