【问题标题】:Slurm Computing ModelSlurm 计算模型
【发布时间】:2017-03-03 22:25:39
【问题描述】:

我一直想知道某处是否存在某种图表,可以准确解释 slurm 背后的“计算模型”(如果这有意义的话)。基本上,我想知道“节点”、“任务”、“CPU”、“核心”和“线程”(它们相对于彼此的含义)概念之间的联系以及与机器/系统的关系。

我已经阅读了 sbatch 和 srun 的手册页,但我不能 100% 确定。 到目前为止,我的理解如下

  • 节点是一台物理机器(这非常简单明了:D),这些机器通常通过网络连接。上面是分布式内存模型,下面是共享内存模型 (?)。
  • 任务通常是一个进程。这就是 MPI 中的排名(对吗?)
  • A CPU == Processor (?) 是实际的物理 CPU
  • 核心是多核 CPU 的一部分
  • 线程是在给定核心上运行的东西。这只对超线程有用吗?

对吗?

然后,假设我混合了 MPI 和 OpenMP。我基本上将核心、cpu 和线程的概念用于 OpenMP 部分,然后将任务和节点用于 MPI。

正确吗?

谢谢:)

【问题讨论】:

    标签: slurm


    【解决方案1】:

    节点是一台物理机器(这非常简单明了:D),这些机器通常通过网络连接。

    实际上,节点是一台物理机器,具有一个带有一个或多个插槽的主板,每个插槽承载一个由多个内核组成的 CPU 封装。

    上面是分布式内存模型,下面是共享内存模型 (?)。

    这是一种自然的思维方式,但是编程模型和硬件结构是两个不同的东西。您可以在单个节点内运行分布式内存模型(例如 MPI)程序,也可以使用 PGAS 框架(例如 Coarray Fortranshmem)跨多个节点运行共享内存程序

    任务通常是一个进程。这就是 MPI 中的排名(对吗?)

    是的。

    A CPU == Processor (?) 是实际的物理 CPU

    在 Slurm 上下文中,CPU 被理解为禁用硬件超线程的系统的核心或启用超线程时的(硬件)线程。

    但一般来说,当您购买一个 CPU 时,您会得到一个芯片,上面有多个内核(CPU 封装),可以装入一个插槽。

    核心是多核 CPU 的一部分

    核心是 CPU 包中的一个不同的计算单元。它有自己的算术和逻辑单元,但共享一些缓存

    线程是在给定核心上运行的东西。这只对超线程有用吗?

    硬件线程是一种技术,它允许单个物理内核显示为两个不同的计算内核,因为某些寄存器和缓存是重复的。但是两个硬件线程共享相同的算术和逻辑单元。当工作负载由大量 I/O 组成时,它们很有用,这些 I/O 在进行数据传输时使算术和逻辑单元处于空闲状态。硬件超线程通常在计算集群上被禁用。

    软件线程是进程的轻量级版本。使用 pthreads 或 OpenMP 等库/工具,单个进程可以由多个线程组成。

    然后,假设我混合了 MPI 和 OpenMP。对于 OpenMP 部分,我基本上使用核心、cpu 和线程的概念,然后对于 MPI 使用任务和节点。

    您可以简单地将--ntasks 设置为您想要的 MPI 进程数,并将 --cpus-per-task 设置为您想要的 OpenMP 线程数,假设 Slurm 将核心配置为可消耗资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多