• 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] "的作业,分配将是:

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

    在这里插入图片描述

  • 相关阅读:
    win10&11安装MG-SOFT+MIB+Browser+v10b
    构建智能工厂设施的“智能电机保护和信息监控解决方案”
    PlantUML基础使用教程
    Python之hello, world
    [附源码]计算机毕业设计JAVAjsp校园疫情防控管理系统
    leetcode 9. 回文数
    学术论文写作
    【Pygame实战】打扑克牌嘛?赢了输了?这款打牌游戏,竟让我废寝忘食。
    设计模式 | 策略模式
    面试经典sql(大数据):连续登陆问题
  • 原文地址:https://blog.csdn.net/qq_25562325/article/details/125516307