高性能计算（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 市场的某些特殊性将使得衡量运营支出（OPEX）与资本支出（CAPEX）时选择前者。超级计算机不是诸如存储或 x86 服务器之类的商用硬件；它们非常昂贵，技术进步很快会使其过时。正如麦考密克·史蒂文森公司的 Krawczyk 所说，“这就像买车：只要车一开走，它就会开始贬值。”对于许多公司，尤其是规模较大，灵活性较差的公司，购买超级计算机的过程可能会陷入无望的泥潭。IBM 的 Turek 说：“你会被规划问题、建筑问题、施工问题、培训问题所困扰，然后必须执行 RFP。你必须得到 CIO 的支持。你必须与内部客户合作以确保服务的连续性。这是一个非常、非常复杂的过程，并没有很多机构有非常出色的执行力。”一旦你选择走 HPC 服务的路线，你会发现你会得到你期望从云服务中得到的许多好处，特别是仅在业务需要时才需付费的能力，从而可以带来资源的高效利用。Gartner 高级总监兼分析师 Chirag Dekate 表示，当你对高性能计算有短期需求时，突发性负载是推动选择 HPC 服务的关键用例。他说：“在制造业中，在产品设计阶段前后，HPC 活动往往会达到很高的峰值。但是，一旦产品设计完成，在其余产品开发周期中，HPC 资源的利用率就会降低。” 相比之下，他说：“当你拥有大型的、长期运行的工作时，云计算的经济性才会逐渐减弱。”通过巧妙的系统设计，你可以将这些 HPC 服务突发活动与你自己的内部常规计算集成在一起。 埃森哲 Accenture 实验室常务董事 Teresa Tung 举了一个例子：“通过 API 访问 HPC 可以与传统计算无缝融合。在模型构建阶段，传统的 AI 流水线可能会在高端超级计算机上进行训练，但是最终经过反复按预期运行的训练好的模型将部署在云端的其他服务上，甚至部署在边缘设备上。”它并不适合所有的应用场景HPC 服务适合批处理和松耦合的场景。这与一个常见的 HPC 缺点有关：数据传输问题。高性能计算本身通常涉及庞大的数据集，而将所有这些信息通过互联网发送到云服务提供商并不容易。IBM 的 Turek 说：“我们与生物技术行业的客户交流，他们每月仅在数据费用上就花费 1000 万美元。”而钱并不是唯一的潜在问题。构建一个利用数据的工作流程，可能会对你的工作流程提出挑战，让你绕过数据传输所需的漫长时间。hhpberlin 的 Kilian 说：“当我们拥有自己的 HPC 集群时，当然可以随时访问已经产生的仿真结果，从而进行交互式的临时评估。我们目前正努力达到在仿真的任意时刻都可以更高效地、交互地访问和评估云端生成的数据，而无需下载大量的模拟数据。”Mike Krawczyk 提到了另一个绊脚石：合规性问题。国防承包商使用的任何服务都需要遵从《国际武器交易条例》（ITAR），麦考密克·史蒂文森公司之所以选择 Rescale，部分原因是因为这是他们发现的唯一符合的供应商。如今，尽管有更多的公司使用云服务，但任何希望使用云服务的公司都应该意识到使用其他人的基础设施时所涉及的法律和数据保护问题，而且许多 HPC 场景的敏感性使得 HPC 即服务的这个问题更加突出。此外，HPC 服务所需的 IT 治理超出了目前的监管范围。例如，你需要跟踪你的软件许可证是否允许云使用­ —— 尤其是专门为本地 HPC 群集上运行而编写的软件包。通常，你需要跟踪 HPC 服务的使用方式，它可能是一个诱人的资源，尤其是当你从员工习惯的内部系统过渡到有可用的空闲的 HPC 能力时。例如，Avanade 全球平台高级主管兼 Azure 平台服务全球负责人 Ron Gilpin 建议，将你使用的处理核心的数量回拨给那些对时间不敏感的任务。他说：“如果一项工作只需要用一小时来完成而不需要在十分钟内就完成，那么它可以使用 165 个处理器而不是 1,000 个，从而节省了数千美元。”对 HPC 技能的要求很高一直以来，采用 HPC 的最大障碍之一就是其所需的独特的内部技能，而 HPC 服务并不能神奇使这种障碍消失。Gartner 的 Dekate 表示：“许多 CIO 将许多工作负载迁移到了云上，他们看到了成本的节约、敏捷性和效率的提升，因此相信在 HPC 生态中也可以达成类似的效果。一个普遍的误解是，他们可以通过彻底地免去系统管理员，并聘用能解决其 HPC 工作负载的新的云专家，从而以某种方式优化人力成本。”对于 HPC 即服务来说更是如此。“但是 HPC 并不是一个主流的企业环境。” 他说。“你正在处理通过高带宽、低延迟的网络互联的高端计算节点，以及相当复杂的应用和中间件技术栈。许多情况下，甚至连文件系统层也是 HPC 环境所独有的。没有对应的技能可能会破坏稳定性。”但是超级计算技能的供给却在减少，Dekate 将其称为劳动力“老龄化”，这是因为这一代开发人员将目光投向了新兴的初创公司，而不是学术界或使用 HPC 的更老套的公司。因此，HPC 服务供应商正在尽其所能地弥补差距。IBM 的 Turek 表示，许多 HPC 老手将总是想运行他们自己精心调整过的代码，并需要专门的调试器和其他工具来帮助他们在云端实现这一目标。但是，即使是 HPC 新手也可以调用供应商构建的代码库，以利用超级计算的并行处理能力。第三方软件提供商出售的交钥匙软件包可以减少 HPC 的许多复杂性。埃森哲的 Tung 表示，该行业需要进一步加大投入才能真正繁荣。她说：“HPCaaS 已经创建了具有重大影响力的新功能，但还需要做的是使它易于被数据科学家、企业架构师或软件开发人员使用。这包括易用的 API、文档和示例代码。它包括解答问题的用户支持。仅仅提供 API 是不够的，API 需要适合特定的用途。对于数据科学家而言，这可能是以 Python 形式提供，并容易更换她已经在使用的框架。价值来自于使这些用户能够通过新的效率和性能最终使他们的工作得到改善，只要他们能够访问新的功能就可以了。” 如果供应商能够做到这一点，那么 HPC 服务才能真正将超级计算带给大众。via: https://www.networkworld.com/article/3534725/the-ins-and-outs-of-high-performance-computing-as-a-service.html作者：Josh Fruhlinger 选题：lujun9972 译者：messon007 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
使用 Ansible 在树莓派上构建一个基于 Linux 的高性能计算系统
使用低成本的硬件和开源软件设计一个高性能计算集群。在我的 之前发表在 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 去构建树莓派集群，请参与 Adrian Reber 在 DevConf.cz 2018 的讨论，它于 1月 26-28 日在 Brno，Czech Republic 举行，以及在 CentOS Dojo 2018 ，它于 2 月 2 日在 Brussels 举行。关于作者Adrian Reber —— Adrian 是 Red Hat 的高级软件工程师，他早在 2010 年就开始了迁移处理过程到高性能计算环境，从那个时候起迁移了许多的处理过程，并因此获得了博士学位，然后加入了 Red Hat 公司并开始去迁移到容器。偶尔他仍然去迁移单个处理过程，并且它至今仍然对高性能计算非常感兴趣。关于我的更多信息点这里via: https://opensource.com/article/18/1/how-build-hpc-system-raspberry-pi-and-openhpc作者：Adrian Reber 译者：qhwdw 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出