在集群上运行软件时节点和 CPU 之间的区别?

计算科学 参考请求 高性能计算
2021-12-11 01:10:58

我正在考虑将我的一些计算转移到数据中心以获得更多的计算能力。在这个过程的上下文中,我对计算节点CPU的区别感到困惑

显然,一些商业软件包将两者区分开来。将每个计算节点想象成不同的物理计算机是否正确。

非常欢迎提供指向此教程的傻瓜教程链接。显然,谷歌搜索这个主题为我提供了许多难以解密的技术术语。

4个回答

随着架构的变化改变了 HPC 的格局,这个问题变得更加微妙。正如 Wolfgang Bangerth 提到的一种当前长期存在的观点,我将把我的答案分为基本定义和更多细节。

基本定义

  • 节点是指物理盒子,即带有南北开关的 CPU 插槽,连接内存系统和扩展卡,例如磁盘、网卡加速器

  • cpu 插槽是这些系统和cpu 核心的连接器,您可以插入具有多个 cpu 核心的芯片。这会在高速缓存内存空间中造成分裂,因此需要 NUMA 感知代码。

  • cpu核心是一个独立的计算,有自己的计算管道、逻辑单元和内存控制器。每个 cpu 内核将能够为多个cpu 线程提供服务,每个线程都有一个独立的指令流,但共享内核内存控制器和其他逻辑单元。

这种节点cpu 核心的概念让您了解大多数 HPC 排队系统,但请注意,许多 HPC 中心会向您收取“服务单元”费用,这是一个取决于节点方面的可变费率。

走得更远

如果您对实际给出分布式代码的一些性能细节感兴趣,那么这个故事就有点麻烦了。让我用这个模型没有回答的问题来说明:

  • GPU加速器 有多少个内核?

GPU 的处理器非常小,逻辑单元很少,因此将它们与 x86 cpu 进行比较是不公平的。尽管如此,营销人员会告诉你 GPU 有 1000 多个 CPU。

  • 云架构将许多传统节点放在单个物理服务器上,它们之间具有集成网络。

Calxeda这样的公司正在解决当前节点配置中的许多低效率问题,而您的传统节点配置正在共享更多系统。这个节点的想法变得模糊了。

许多现代计算机都有多个 CPU(芯片),每个芯片可能有多个内核。每个内核可以执行一个(或有时多个)指令流。

我在这里记录了对这些问题的介绍: https ://www.math.colostate.edu/~bangerth/videos.676.39.html

从集群的角度回答......您需要小心,因为定义可能取决于系统配置。我们的系统使用 PBS,“节点”可以是物理盒子或单核“虚拟节点”。

在我们的系统上,如果您请求节点=1,您将获得一个核心(这是物理 CPU 上的 6 个核心之一(物理盒上的两个 CPU 之一))。在 PBS 中,这些被称为“虚拟节点”,我认为这些可能与您的“计算节点”相同。如果您请求nodes=12,那么核心“可以”分配到集群中的任何地方(尽管排队系统试图将它们放在同一个物理盒子上)。

如果您请求nodes=1:ppn=2,您将在一个物理节点上获得两个核心。ppn 指的是每个节点的处理器。

我在这里开发了一些信息: https ://www.massive.org.au/userguide/cluster-instructions/running-pbs-script-jobs

我发布了这个 5 分钟的 YouTube 视频,其中包含解释以下术语和概念的动画:

HPC 术语和“核心”概念 - 节点中有什么?

  • 节点、核心和处理器
  • 任务、线程和进程
  • 共享内存与分布式内存
  • 调度选项——你什么时候应该限制每个节点上的任务数量?

我将它开发为使用我们校园集群的学生的视频教程系列的一部分。我希望其他人也会发现它有用。

https://www.youtube.com/watch?v=SrumAJj4UjU