蚊章汇 - HPC
type: channel
link: https://linuxcn.bwsl.wang/tag/HPC/
items: 超算即服务：超级计算机如何上云
items: 使用 Ansible 在树莓派上构建一个基于 Linux 的高性能计算系统

超算即服务：超级计算机如何上云
type: item
date: 2020-05-10T06:38:53+08:00
description: 高性能计算（HPC）服务可能是一种满足不断增长的超级计算需求的方式，但依赖于使用场景，它们不一定比使用本地超级计算机好。导弹和军用直升机上的电子设备需要工作在极端条件下。美国国防承包商 麦考密克·史蒂文森公司 McCormick Stevenson Corp. 在部署任何物理设备之前都会事先模拟它所能承受的真实条件。模拟依赖于像 Ansys 这样的有限元素分析软件，该软件需要强大的算力。几年前的一天，它出乎意料地超出了计算极限。麦考密克·史蒂文森公司的首席工程师 Mike Krawczyk 说：“我们的一些工作会使办公室的计算机不堪重负。购买机器并安装软件在经济上或计划上都不划算。”相反，他们与 Rescale 签约，该公司销售其超级计算机系统上的处理能力，而这只花费了他们购买新硬件上所需的一小部分。麦考密克·史蒂文森公司已成为被称为超级计算即服务或高性能计算即服务（两个紧密相关的术语）市场的早期采用者之一。根据国家计算科学研究所的定义，HPC 是超级计算机在计算复杂问题上的应用，而超级计算机是处理能力最先进的那些计算机。无论叫它什么，这些服务都在颠覆传统的超级计算市场，并将 HPC 能力带给以前负担不起的客户。但这不是万能的，而且绝对不是即插即用的，至少现在还不是。HPC 服务实践从最终用户的角度来看，HPC 即服务类似于早期大型机时代的批处理模型。 “我们创建一个 Ansys 批处理文件并将其发送过去，运行它，然后将结果文件取下来，然后导入到本地，” Krawczyk 说。在 HPC 服务背后，云提供商在其自己的数据中心中运行超级计算基础设施，尽管这不一定意味着当你听到“超级计算机”时你就会看到最先进的硬件。正如 IBM OpenPOWER 计算技术副总裁 Dave Turek 解释的那样，HPC 服务的核心是“相互互连的服务器集合。你可以调用该虚拟计算基础设施，它能够在你提出问题时，使得许多不同的服务器并行工作来解决问题。”理论听起来很简单。但都柏林城市大学数字商业教授 Theo Lynn 表示，要使其在实践中可行，需要解决一些技术问题。普通计算与 HPC 的区别在于那些互联互通 —— 高速的、低延时的而且昂贵的 —— 因此需要将这些互连引入云基础设施领域。在 HPC 服务可行之前，至少需要将存储性能和数据传输也提升到与本地 HPC 相同的水平。但是 Lynn 说，一些制度创新相比技术更好的帮助了 HPC 服务的起飞。特别是，“我们现在看到越来越多的传统 HPC 应用采用云友好的许可模式 —— 这在过去是阻碍采用的障碍。”他说，经济也改变了潜在的客户群。“云服务提供商通过向那些负担不起传统 HPC 所需的投资成本的低端 HPC 买家开放，进一步开放了市场。随着市场的开放，超大规模经济模型变得越来越多，更可行，成本开始下降。”避免本地资本支出HPC 服务对传统超级计算长期以来一直占据主导地位的私营部门客户具有吸引力。这些客户包括严重依赖复杂数学模型的行业，包括麦考密克·史蒂文森公司等国防承包商，以及石油和天然气公司、金融服务公司和生物技术公司。都柏林城市大学的 Lynn 补充说，松耦合的工作负载是一个特别好的用例，这意味着许多早期采用者将其用于 3D 图像渲染和相关应用。但是，何时考虑 HPC 服务而不是本地 HPC 才有意义？对于德国的模拟烟雾在建筑物中的蔓延和火灾对建筑物结构部件的破坏的 hhpberlin 公司来说，答案是在它超出了其现有资源时。Hpberlin 公司数值模拟的科学负责人 Susanne Kilian 说：“几年来，我们一直在运行自己的小型集群，该集群具有多达 80 个处理器核。……但是，随着应用复杂性的提高，这种架构已经越来越不足以支撑；可用容量并不总是够快速地处理项目。”她说：“但是，仅仅花钱买一个新的集群并不是一个理想的解决方案：鉴于我们公司的规模和管理环境，不断地维护这个集群（定期进行软件和硬件升级）是不现实的。另外，需要模拟的项目数量会出现很大的波动，因此集群的利用率并不是真正可预测的。通常，使用率很高的阶段与很少使用或不使用的阶段交替出现。”通过转换为 HPC 服务模式，hhpberlin 释放了过剩的产能，并无需支付升级费用。IBM 的 Turek 解释了不同公司在评估其需求时所经历的计算过程。对于拥有 30 名员工的生物科学初创公司来说，“你需要计算，但你真的不可能让 15% 的员工专门负责计算。这就像你可能也会说你不希望有专职的法律代表，所以你也会把它作为一项服务来做。”不过，对于一家较大的公司而言，最终归结为权衡 HPC 服务的运营费用与购买内部超级计算机或 HPC 集群的费用。到目前为止，这些都是你采用任何云服务时都会遇到的类似的争论。但是，可以 HPC 市场的某些特殊性将使得衡…

使用 Ansible 在树莓派上构建一个基于 Linux 的高性能计算系统
type: item
date: 2018-03-25T19:01:10+08:00
description: 使用低成本的硬件和开源软件设计一个高性能计算集群。在我的 之前发表在 Opensource.com 上的文章中，我介绍了 OpenHPC 项目，它的目标是致力于加速高性能计算（HPC）的创新。这篇文章将更深入来介绍使用 OpenHPC 的特性来构建一个小型的 HPC 系统。将它称为 HPC 系统 可能有点“扯虎皮拉大旗”的意思，因此，更确切的说法应该是，它是一个基于 OpenHPC 项目发布的 集群构建方法 的系统。这个集群由两台树莓派 3 系统作为计算节点，以及一台虚拟机作为主节点，结构示意如下：我的主节点运行的是 x86\_64 架构的 CentOS 操作系统，而计算节点运行了 aarch64 的轻度修改版的 CentOS 操作系统。下图是真实的设备工作照：要把我的系统配置成像上图这样的 HPC 系统，我是按照 OpenHPC 的集群构建方法的 CentOS 7.4/aarch64 + Warewulf + Slurm 安装指南 （PDF）的一些步骤来做的。这个方法包括了使用 Warewulf 的配置说明；因为我的那三个系统是手动安装的，我跳过了 Warewulf 部分以及创建 Ansible 剧本 的一些步骤。在 Ansible 剧本中设置完成我的集群之后，我就可以向资源管理器提交作业了。在我的这个案例中， Slurm 充当了资源管理器，它是集群中的一个实例，由它来决定我的作业什么时候在哪里运行。在集群上启动一个简单的作业的方式之一：[ohpc@centos01 ~]$ srun hostname calvin 如果需要更多的资源，我可以去告诉 Slurm，我希望在 8 个 CPU 上去运行我的命令：[ohpc@centos01 ~]$ srun -n 8 hostname hobbes hobbes hobbes hobbes calvin calvin calvin calvin 在第一个示例中，Slurm 在一个单个的 CPU 上运行了指定的命令（hostname），而在第二个示例中，Slurm 在 8 个 CPU 上运行了那个命令。我的计算节点一个命名为 calvin，而另一个命名为 hobbes；在上面的命令输出部分可以看到它们的名字。每个计算节点都是由 4 个 CPU 核心的树莓派 3 构成的。在我的集群中提交作业的另一种方法是使用命令 sbatch，它可以用于运行脚本，将输出写入到一个文件，而不是我的终端上。[ohpc@centos01 ~]$ cat script1.sh #!/bin/sh date hostname sleep 10 date [ohpc@centos01 ~]$ sbatch script1.sh Submitted batch job 101 它将创建一个名为 slurm-101.out 的输出文件，这个输出文件包含下列的内容：Mon 11 Dec 16:42:31 UTC 2017 calvin Mon 11 Dec 16:42:41 UTC 2017 为示范资源管理器的基本功能，简单的串行命令行工具就行，但是，做各种工作去配置一个类似 HPC 系统就有点无聊了。一个更有趣的应用是在这个集群的所有可用 CPU 上运行一个 Open MPI 的并行作业。我使用了一个基于 康威生命游戏 的应用，它被用于一个名为“使用 Red Hat 企业版 Linux 跨多种架构运行康威生命游戏”的 视频。除了以前基于 MPI 的 Game of Life 版本之外，在我的集群中现在运行的这个版本对每个涉及的主机的单元格颜色都是不同的。下面的脚本以图形输出的方式来交互式启动应用：$ cat life.mpi #!/bin/bash module load gnu6 openmpi3 if [[ "$SLURM_PROCID" != "0" ]]; then exit fi mpirun ./mpi_life -a -p -b 我使用下面的命令来启动作业，它告诉 Slurm，为这个作业分配 8 个 CPU：$ srun -n 8 --x11 life.mpi 为了演示，这个作业有一个图形界面，它展示了当前计算的结果：红色单元格是由其中一个计算节点来计算的，而绿色单元格是由另外一个计算节点来计算的。我也可以让康威生命游戏程序为使用的每个 CPU 核心（这里的每个计算节点有四个核心）去生成不同的颜色，这样它的输出如下：感谢 OpenHPC 提供的软件包和安装方法，因为它们让我可以去配置一个由两个计算节点和一个主节点的 HPC 式的系统。我可以在资源管理器上提交作业，然后使用 OpenHPC 提供的软件在我的树莓派的 CPU 上去启动 MPI 应用程序。想学习更多的关于使用 OpenHPC 去构建树莓派集群…