计算节点内核 (CNK) 操作系统

2025年1月7日 | 阅读10分钟

计算节点内核 (CNK) 操作系统首次出现是在 2004 年发布的 IBM Blue Gene/L 超级计算机中。计算节点内核 (CNK) 是 IBM 为其 Blue Gene 系列超级计算机开发的轻量级操作系统。它被设计运行在 Blue Gene 设备上的每个处理节点上,并支持每个节点上一个用户运行一个应用程序。

CNK 由大约 5,000 行 C++ 代码编写而成,其设计理念是尽可能简洁和最小化,以最大化运行性能。它缺少普通操作系统中的许多功能,例如虚拟内存、多任务处理和文件输入/输出。相反,它专注于提供执行高性能计算 (HPC) 程序所需的基本服务,包括内存管理、进程管理以及与机器内其他节点的通信。

CNK 与传统操作系统相比是一个重大的转变,传统操作系统通常是为了适应单个节点上的多个程序而构建的。然而,CNK 设计为一次只运行一个节点上的一个程序。这使得 CNK 能够尽可能多地将 CPU 周期分配给应用程序执行。

CNK 的另一个显著特点是使用了静态内存映射。这意味着 CNK 在运行时知道所有软件代码和数据的内存地址。这消除了与动态内存管理相关的开销,而动态内存管理在 HPC 程序中可能非常庞大。

CNK 在 Blue Gene 系列超级计算机的成功中发挥了重要作用。它为 Blue Gene 系统成为世界上最强大、最高效的超级计算机之一做出了贡献。

除了 Blue Gene 系列,CNK 还被用于各种超级计算机,包括 Cray XT5 和 IBM Power Systems LC921。CNK 也可能用于未来的超级计算机,例如 IBM Exascale Computing Project。

CNK OS 的主要特点

CNK 有几个主要特点。CNK 的一些主要特点如下:

  • 轻量级且高效:为了最大化运行效率,CNK 的设计理念是尽可能简单和最小化。它缺少许多普通操作系统中的功能,例如虚拟内存、多任务处理和文件输入/输出。因此,CNK 非常适合运行 HPC 工作负载,因为这些工作负载受益于更低的开销。
  • 静态内存映射:CNK 采用静态内存映射,这意味着 CNK 在运行时就知道所有实用代码和数据的内存地址。这消除了与动态内存管理相关的开销,而动态内存管理在 HPC 程序中可能非常庞大。CNK 还采用页面锁定机制,防止操作系统将应用程序代码和报告分页到磁盘。它始终将应用程序代码和信息保留在内存中,这可以提高整体性能。
  • 无调度或上下文切换:在每个节点上,CNK 被设计为一次只运行一个作业。这消除了对调度或上下文切换的需求,而这两者都会增加开销。CNK 还采用一种称为“技术固定”的方法,将每个软件进程固定到单个节点中心。通过减少在节点之间移动应用程序任务相关的开销,可以提高整体性能。
  • 高效通信:CNK 提供了有效的数据交换原语,使程序能够以低延迟和高带宽进行通信。CNK 通过使用多种机制来实现这一点,包括直接内存访问 (DMA) 和共享内存。CNK 还支持不同的数据交换协议,包括TCP/IPMPI
  • 可扩展性:CNK 设计用于支持大量节点。应用程序已在具有大量节点的系统上运行。CNK 通过使用分布式设计来实现可扩展性。每个节点都有自己的 CNK 实例,并且不同节点上的 CNK 实例相互交互以协调应用程序执行。
  • 支持多个内存银行:CNK 可以通过利用节点上的多个内存银行来提高执行速度。
  • 支持硬件加速器:CNK 可以通过利用硬件加速器(例如GPU)来提高整体性能。
  • 支持检查点和恢复:CNK 允许应用程序检查点和恢复。它允许在稍后保存和重新启动应用程序,这对于长时间运行或易于出现故障的程序至关重要。
  • 设备抽象层:CNK 包括一个设备抽象层,允许应用程序以统一的方式访问节点系统,而无论设备类型如何。这可以简化应用程序开发,并使应用程序移植到多个节点更加容易。
  • 支持作业调度:CNK 与作业调度软件兼容,包括LoadLevelerSLURM。用户可以将作业推送到 CNK 节点,并由作业调度程序管理其执行。
  • 支持监控和调试:CNK 包括用于监控和调试应用程序的多种工具。例如,CNK 可用于收集应用程序性能指标,并逐行单步执行应用程序代码。
  • 安全特性:CNK 包括多种安全机制,以防止未经授权访问应用程序和报告。例如,CNK 支持用户身份验证和授权,以及内存和磁盘上的文件加密。
  • 周期级可重现性:CNK 可以为程序提供周期级可重现性。这意味着应用程序无论在何时执行其指令,都将始终产生相同的结果。对于需要确定性的应用程序(例如科学计算)来说,这是一个有用的功能。
  • 支持异构节点:CNK 还可以处理具有多种硬件的节点,包括 CPU、GPU 和 FPGA。它允许用户构建针对特定应用程序优化的异构集群。
  • 支持持久内存:CNK 支持持久内存,例如Intel Optane DC 持久内存。它允许程序以低延迟和高带宽访问持久内存中的数据。
  • 支持机器学习和人工智能:CNK 包含执行机器学习和人工智能程序所需的许多关键功能,包括 GPU 和 FPGA 支持。
  • 支持容器:CNK 支持容器,包括 Docker 容器。用户可以将他们的应用程序打包并分发为容器,从而简化应用程序的部署和维护。

除了这些能力之外,CNK 还在积极开发中,并在每次更新中添加新功能。CNK 正在开发以支持新硬件,例如 IBM POWER10 处理器,以及新应用程序,例如量子计算。

CNK OS 的优点

CNK OS 有几个优点。CNK OS 的一些主要优点如下:

  • 性能提升:CNK 的轻量级架构和高效的资源利用可以为 HPC 应用程序带来显著的性能提升。例如,基准测试表明,CNK 可以将科学计算应用程序的性能提高高达20%
  • 降低成本:CNK 可以帮助降低部署和运行超级计算机的成本。CNK 可以减少特定应用程序所需的计算节点数量,从而节省硬件和能源支出。
  • 支持多种编程语言和库:CNK 与各种编程语言和库兼容,包括 C、C++、Fortran、MPI、OpenMP 和 BLAS。用户可以根据其应用程序最相关的内容选择编程语言和库。
  • 减少开销:CNK 中没有调度或上下文切换,并且使用了静态内存映射,这些都有助于减少执行 HPC 程序相关的开销。这可以带来更快的性能和更高的效率。
  • 支持新硬件和应用程序:CNK 正在不断发展,以支持新硬件和应用程序。例如,CNK 正在开发以支持新硬件,例如IBM POWER10 处理器,以及新应用程序,例如量子计算。

除了这些功能和优势之外,CNK 是一个高度可定制的操作系统。它允许用户定制 CNK 以满足其应用程序或环境的特定需求。

  • 2012 年到 2014 年,CNK 用于支持橡树岭国家实验室的 Titan 超级计算机,当时它是世界上最快的超级计算机。CNK 也用于为瑞士国家超级计算中心Piz Daint超级计算机提供支持,该超算也是世界上最强大的之一。
  • Sequoia 超级计算机由位于德克萨斯州奥斯汀的 IBM 研究实验室使用 CNK 构建。Sequoia 是第一个突破 20 Petaflop 障碍的超级计算机,并保持了世界最快超级计算机的记录一年多。
  • 瑞士国家超级计算中心使用 CNK 开发了 Piz Daint 超级计算机。Piz Daint 是世界上最强大的超级计算机之一,它被用于执行大量 HPC 应用程序,包括科学计算、工程模拟和数据分析。
  • 在 CNK 出现之前,HPC 系统通常运行在像Linux这样的普通操作系统上。然而,这些操作系统并不是为 HPC 工作负载而设计的,它们可能会带来降低性能的开销。

限制/缺点

CNK OS 有几个缺点。CNK OS 的一些主要缺点如下:

  • CNK 是一个高性能计算 (HPC) 专用操作系统。它不适用于通用用途,并且缺少通用操作系统所需的关键元素,例如用户界面、文件系统和网络支持。
  • CNK 仅在少数选定的硬件平台上可用。目前仅支持 IBM POWER 和 IBM POWER 计算机 LC 计算机。因此,CNK 不能在其他硬件系统上使用,例如x86或 GPU 加速系统。
  • CNK 仍在开发中。CNK 是一个强大的操作系统,但仍处于开发阶段。这意味着新功能和问题修复在不断添加。但是,这也意味着 CNK 可能不如其他操作系统稳定。
  • CNK 可能难以安装和管理。CNK 是一个强大而灵活的操作系统,但它可能难以安装和操作。这是因为 CNK 提供了大量的选项和自定义设置。因此,理解 CNK 以有效配置和管理它是很重要的。
  • CNK 的用户和开发者网络较小。CNK 是一个高性能计算 (HPC) 操作系统,不像 Linux 等其他操作系统那样被广泛使用。这意味着用户和开发者的网络较小,能够提供指导和帮助。
  • 商业软件制造商对 CNK 的支持不足。CNK 是一个专业的操作系统,与 Linux 等其他操作系统相比,商业软件供应商的支持较少。这意味着找到与 CNK 兼容的商业软件可能更困难。

应用

CNK OS 有几个应用。CNK OS 的一些主要应用如下:

  • 量子计算:CNK 正在开发以支持量子计算应用程序。量子计算是一种新型计算机,利用量子物理学进行计算。许多行业,包括制药、材料、技术研究和金融,都将从量子计算中受益。
  • 基因组学:CNK 用于运行基因组学应用程序。基因组学是对基因组的研究,基因组是一个生物体的全部遗传物质。基因组学应用可用于发现与疾病相关的基因、生产新药和个性化医疗。
  • 金融建模:金融建模应用程序在 CNK 上运行。金融建模是利用数学模型分析经济数据并预测未来财务绩效的应用。
  • 材料科学:材料科学应用程序在 CNK 上执行。材料科学是对材料特性和结构的研究。材料科学应用可用于创造具有更高质量(例如能量、耐用性和导电性)的新材料。
  • 自动驾驶汽车:CNK 正在开发中,以使自动驾驶汽车能够实时处理传感器数据。这些数据包括摄像头图像、激光雷达数据和雷达数据。CNK 可用于实时分析这些数据,以便做出有关如何有效导航车辆的决策。
  • 医学影像:CNK 用于协助实时医学成像。使用MRICT 扫描等医学成像技术可以创建身体内部的图像。CNK 可以实时处理这些图像,并在手术或其他医疗操作期间为临床专家提供反馈。
  • 工业控制:CNK 用于协助工业管理。工业控制系统控制工业流程,例如制造和发电。CNK 可用于实时处理传感器数据并做出控制决策。

CNK 还可用于运行各种其他 HPC 应用程序,包括计算机图像应用程序、视频处理应用程序和计算化学应用程序。CNK 可用于实时处理传感器数据和管理决策。

结论

计算节点内核 (CNK) 操作系统是一个强大而灵活的平台,用于执行高性能计算 (HPC) 应用程序。它提供了许多功能和优点,可以帮助用户提高应用程序的性能、可扩展性和安全性。

近年来,CNK 还被用于创新的实时应用程序,例如自动驾驶汽车、金融交易、医学成像和工业控制。这凸显了 CNK 的适应性灵活性,使其适用于各种 HPC 和实时应用程序。

总而言之,CNK 是 HPC 用户的一个有用的工具,并且它正在不断发展以支持新工具和应用程序。一个强大而灵活的操作系统可以帮助用户解决世界上一些最棘手的问题。