LSF_SPAN

span字符串指定并行作业运行的位置。如果省略span, LSF将从可用的处理器中为作业分配所需的处理器。

一、语法

  • span[host=1]:指示分配给作业的处理器必须位于同一个主机上。

  • span[block=value]:对并行作业来说,LSF将根据block size来分配slots。LSF将尽可能的打包同一台设备上面的block,然后再检查下一个。

  • span[ptile=value]:每台设备分配给job的处理器数量,该值有以下的几个:

    • 默认的值由value指定,在下面的例子中作业在每台设备上需求4个处理器,不考虑主机真实具有多少处理器。
      在这里插入图片描述

    • 以下例子通过!使用预定义的ptile值,该值定义在lsb.hosts(MXJ)。
      在这里插入图片描述
      注:如果在lsb.hosts中并未定义该值,则忽略。在低于3.0的bash中,ptile='!',使用+H选项禁用"!"样式。

    • 预定义的ptile与多个ptile值共用

      • 对于主机type,必须在-R中指定same[type],在以下的例子中,在HP类似设备请求8个处理器,在Linux主机类型中请求2个处理器,其他的设备按照lsb.hosts中预定义的值进行取值。
        在这里插入图片描述
      • 对于主机model,必须在-R中指定same[mode],在以下的例子中,在PC1133 mode中的每个设备请求4个处理器,在PC233 mode中的每个设备请i去2个处理器,其他的设备按照lsb.hosts中预定义的值进行取值。
  • span[stripe]
    对于并行作业,LSF在候选主机的可用资源中划分作业的任务。
    例如,如果你提交了一个作业,请求四个任务,使用以下命令:
    在这里插入图片描述
    任务的放置取决于可用资源:

    • 如果只有一台可用主机,这台主机将有4个作业;
    • 如果有2台可用主机,每台主机将有2个作业;
    • 如果有3台可用主机,每台主机将有2,1,1个作业;
    • 如果有4台可用主机,每台主机将有1,1,1,1个作业;
  • span[stripe=max_tasks]
    对于并行作业,LSF将任务分发到候选主机中的一台,至到最大任务,再向下一个候选主机派发任务。

  • span[host=-1]
    禁用队列中的span设置。LSF从可用的处理器中为作业分配所需的处理器。

二、示例

下面的例子是在有以下空闲主机的集群中提交的任务:
在这里插入图片描述

  • 提交一个需要32slots的作业:
    在这里插入图片描述
    查看作业的分布:
    在这里插入图片描述
    任务平均分配给主机,任何额外的任务都分配给第一个主机。主机1、主机2上有7个任务,主机3、主机4、主机5上有6个任务。
  • 使用ptile提交任务
    在这里插入图片描述
    作业分布情况如下:
    在这里插入图片描述
    每个主机恰好分配8个任务,除了如果要分配的任务总数更少,最后一个主机的任务可能比ptile的值更少。
  • 通过block提交作业并查看任务分布:
    在这里插入图片描述
    在这里插入图片描述
  • 提交任务到单个节点并查看任务分布
    在这里插入图片描述
    在这里插入图片描述

三、重调作业资源需求

如果通过span[host=1]请求资源,那么请求的slots将全部分布在第一个执行的节点上。这样操作可以排除歧义:作业将会在被派发的时候进行修改。

对于span[ptile=n],任务将在一定数量的主机上精确分配n个槽位,并且在一台主机上分配1到n个槽位(含)。即使请求了一个范围的插槽,这也是正确的。例如,对于以下作业提交:
在这里插入图片描述

这种特殊的span行为不仅适用于调整请求的大小。适用于原始分配已经完成的可调整大小的作业,并且实现额外的调整分配。

如果每一个主机仅有1个可用的slot,那么就只分配一个slot。

对主机部分填充的调整请求进行处理,这样LSF就不会选择已经被作业占用的主机上的任何槽位。例如,通常在span[ptile=1]中使用ptile特性来调度独占作业。

对于一个可调整大小的作业(自动可调整大小或其他),请求一定范围的插槽和跨度[ptile=n],每当该作业被分配插槽时,它将接收以下任何一个:

  • 最大数量的slots请求,多个节点节点请求slots数量为n,一个节点请求slots数量为1~n-1。
  • 多个节点slots数量为n,小于最大值的总和。

例如,如果作业请求1-14个可调整的slots,并且span[ptile=4],当额外的插槽分配给作业,作业获取以下两个情况的一个:

  • 14个slots,一个几点2个slots,3个节点4个slots;
  • 4、8、12slots,4slots分配给每一个节点。

示例

当运行并行作业,期望是span[ptile=1],意味着作业在每个主机上最多获取1个slots,对于一个自动调整的作业,新的slots将从主机上分配且该slots处于空闲状态。以下的例子实现上述需求:
在这里插入图片描述

四、Block scheduling

对于对网络延迟不是特别敏感的应用程序,或者你更期望获得大吞吐量,可以为具有特定块大小的并行作业分配插槽。由作业指定的应用程序可以作为线程进程运行在n个核组成的核组之上,使用MPI应用程序或块之间的其他套接字连接。LSF将根据块的大小为作业分配插槽。:LSF尝试在一台主机上打包尽可能多的块,然后转到下一台主机。每个主机只检查一次。哪个主机包含槽块并不重要。只要以前的工作一完成,他的工作就可以开始。

例如,在下面的插图中,每种颜色代表不同的工作。有四种16路工作:
在这里插入图片描述
对于bsub -n 16和block=4,只需要4 x 4个插槽块。哪个主机包含槽块并不重要。只要之前的任何作业完成,作业就可以立即开始。

资源需求字符串的span部分中的关键字block (" span[block=value] “)支持此打包策略。” span[block=value] "也可以在lsb.queues和lsb.applications中的RES_REQ参数中配置。

当为作业指定块大小时,LSF只为作业分配块大小的倍数。例如,对于块大小为4的作业:

  • bsub -n 2,13:4、8、12slots将会被分配
  • bsub -n 5:作业将被拒绝
  • bsub -n 2,3:作业将被拒绝
  • bsub -n 12:接收作业并分配3个block大小为4
  • bsub -n 3:作业拒绝

-n min,max中的最小值将被静默更改为块的倍数。例如:
在这里插入图片描述
更改为:
在这里插入图片描述
LSF尝试将尽可能多的块打包到一个主机中,然后转到下一个主机。例如,假设host1有8个槽位,host2有8个槽位,host3也有8个槽位,每个主机的2个槽位被其他作业占用。对于-n 9 "span[block=3] "的作业,分配将是:

在这里插入图片描述
下面是一个示例,您可以显示主机及其静态和动态资源信息,指定作业的块大小和资源要求,并查看输出:

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IForFree

整理不易,望多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值