创建支持 HPC 的虚拟机实例

紧密耦合的高性能计算 (HPC) 工作负载通常使用消息传递接口 (MPI) 来在进程和虚拟机 (VM) 实例之间进行通信。但是,要自行构建经过调整的虚拟机映像来实现最优 MPI 性能,您需要具备系统专业知识、 Cloud de Confiance by S3NS 相关知识以及额外的维护时间。如需为 HPC 工作负载快速设置优化环境,请使用 HPC 虚拟机映像

HPC 虚拟机映像是基于 Rocky Linux 8 的虚拟机映像,针对紧密耦合的 HPC 工作负载进行了优化。其中包含创建在 Cloud de Confiance by S3NS上实现最佳 MPI 性能的虚拟机实例所需的预配置内核和网络调整参数。

为获得最佳效果,请将 HPC 虚拟机映像部署在经过 HPC 优化的机器系列(例如 H4D 或 H3 系列)或计算优化型机器系列(例如 C2 或 C2D)中的机器类型上。这些机器类型专为紧密耦合的 HPC 应用而设计。如需将 RDMA 与 H4D 搭配使用,您必须使用 20241125 版或更高版本的 HPC 虚拟机映像。

您可以使用以下选项创建支持 HPC 的虚拟机实例:

优势

HPC 虚拟机映像具有以下优势:

  1. 支持开箱即用的 HPC 工作负载的虚拟机实例。无需手动调整性能、管理虚拟机实例重启,也不必及时了解最新 Cloud de Confiance 更新即可实现紧密耦合的 HPC 工作负载。
  2. 紧密耦合的工作负载的网络优化。可缩短简短消息的延迟时间的优化包括在内,这种优化对很大程度依赖于点到点和 Collective 通信的应用很有利。如果使用 H4D 机器系列,HPC 虚拟机映像包含必要的 Cloud RDMA 驱动程序。
  3. HPC 工作负载的计算优化:可降低系统抖动的优化包括在内,使单节点高性能更容易预测。
  4. 一致、可重现的性能。虚拟机映像标准化可提供一致、可重现的应用级性能。
  5. 提升应用兼容性。与 Intel HPC 平台规范的节点级要求一致,能够在系统之间实现高度互操作性。

HPC 虚拟机映像功能

HPC 虚拟机映像提供多项旨在优化高性能计算 (HPC) 工作负载性能的功能:

  • 已停用自动更新
  • Intel MPI Collective 调节
  • 预安装的 RPM

已停用自动更新

自动更新可能会对 HPC 工作负载的性能产生负面影响。使用 HPC 虚拟机映像时,可以在创建虚拟机实例时将 google_disable_automatic_updates 元数据条目设置为 TRUE,以停用自动更新。在创建实例期间设置此元数据条目的方式取决于您用于创建实例的工具。

例如,使用 gcloud compute instances create 命令创建虚拟机实例时,请提供 --metadata 参数。如需了解详情,请参阅虚拟机元数据简介

Intel MPI Library

Google 建议您使用 Intel MPI 2021 库在 Cloud de Confiance by S3NS上运行 MPI 作业。如需了解详情,请参阅以下部分:

预安装的 RPM

HPC 虚拟机映像预安装了以下 RPM 软件包:

  • daos-client
  • gcc-gfortran
  • gcc-toolset-12
  • Lmod
  • dkms
  • htop
  • hwloc
  • hwloc-devel
  • infiniband-diags
  • kernel-devel
  • kmod-idpf-irdma
  • libfabric
  • librdmacm-utils
  • libibverbs-utils
  • libXt
  • ltrace
  • nfs-utils
  • numactl
  • numactl-devel
  • papi
  • pciutils
  • pdsh
  • perf
  • perftest
  • rdma-core
  • redhat-lsb-core
  • redhat-lsb-cxx
  • rsh
  • screen
  • strace
  • wget
  • zsh
  • “开发工具”软件包组

快速入门

以下教程介绍了设置经过 HPC 优化的虚拟机实例的步骤。以下步骤介绍了如何执行以下操作:

  • 创建 HPC 虚拟机实例(不配置 Cloud RDMA)
  • 在创建 HPC 虚拟机实例时指定紧凑布置政策
  • 创建使用 Cloud RDMA(预览版)的 HPC 虚拟机实例

您无法向现有的 HPC 虚拟机实例添加 Cloud RDMA,因此请在创建实例时按照相应步骤操作。

准备工作

  1. 如需使用 Google Cloud CLI 完成本快速入门中的操作,您必须先安装并初始化 Google Cloud CLI
  2. 在 Cloud de Confiance 控制台的项目选择器页面上,选择或创建Cloud de Confiance 项目。

创建 HPC 虚拟机实例

我们强烈建议您从以下机器系列中选择一种机器类型:

这些虚拟机具有虚拟核心到物理核心的固定映射,并向客机操作系统公开 NUMA 单元架构,这两种特性对于紧密耦合的 HPC 应用性能至关重要。

控制台

  1. 在 Cloud de Confiance 控制台中,前往“HPC 虚拟机 Cloud Marketplace”页面。前往“HPC 虚拟机 Cloud Marketplace”页面

  2. 点击开始使用

  3. 在“HPC 虚拟机部署”页面上,输入部署名称。此名称将成为虚拟机的根名称。为实例命名时,Compute Engine 会将 -vm 附加到此名称。

  4. 选择可用区机器类型。对于本快速入门,您可以保留所有设置,也可以根据需要进行更改。

  5. 启动磁盘类型启动磁盘大小网络接口保留为默认设置。

  6. 点击部署

虚拟机实例创建完成后,Cloud Deployment Manager 即会打开,您可以在其中管理 HPC 虚拟机和其他部署。

gcloud

使用 instances create 命令创建 HPC 虚拟机。如果您要创建多个相互关联的 HPC 虚拟机实例,请使用紧凑布置政策创建 HPC 虚拟机,以实现低网络延迟。

如需创建不含布置政策的 HPC 虚拟机实例,请使用类似于以下内容的命令:

gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --image-family=IMAGE_FAMILY \
        --image-project=cloud-hpc-image-public \
        --maintenance-policy=TERMINATE \
        --machine-type=MACHINE_TYPE

替换以下内容:

  • INSTANCE_NAME:HPC 虚拟机实例的名称。
  • ZONE:要在其中创建实例的可用区
  • IMAGE_FAMILY:创建虚拟机实例时要使用的映像所属的映像系列。对于基于 Rocky Linux 8 的最新映像,请使用 hpc-rocky-linux-8
  • MACHINE_TYPE:创建虚拟机实例时要使用的机器类型。

一段时间后,虚拟机实例将创建完成。如需验证实例配置并查看其状态,请运行以下命令:

gcloud compute instances describe INSTANCE_NAME

使用紧凑布置政策创建 HPC 虚拟机实例

您可以通过创建紧凑布置政策来缩短虚拟机实例之间的延迟时间。紧凑布置政策可确保位于同一可用性可用区中的实例彼此靠近。

如果单个紧凑布置政策不能满足您需要的虚拟机实例数量,请将实例划入多个布置政策。使用满足所有实例要求的最低布置政策数量。

如需创建指定紧凑布置政策的 HPC 虚拟机实例,请按照以下步骤操作:

  1. 创建紧凑布置政策

  2. 执行下列其中一项操作:

创建使用 Cloud RDMA 的 HPC 虚拟机实例

如需创建使用 Cloud RDMA 的 HPC 虚拟机实例,您必须先创建至少一个常规 VPC 网络和一个 Falcon VPC 网络。Falcon VPC 网络使用 RDMA 网络配置文件,可在计算实例之间实现 RDMA 流量。此网络与将非 RDMA 流量传输到其他Cloud de Confiance by S3NS 服务或互联网的常规 VPC 网络是分开的。

如需创建使用 Cloud RDMA 的 HPC 虚拟机实例,您需要完成以下任务:

  1. 确定或创建至少两个 VPC 网络:

    • 用于通过 gVNIC 网络接口传输流量的常规 VPC 网络
    • 用于 RDMA 流量的 Falcon VPC 网络
  2. 创建 HPC 虚拟机实例。

    1. 对于源映像,请使用 HPC 虚拟机映像。此映像包含 Cloud RDMA 所需的驱动程序。
    2. 在创建实例期间,配置至少两个网络接口:一个使用 gVNIC 驱动程序,另一个使用 IRDMA 驱动程序

      如需更全面的说明,请参阅创建使用 Cloud RDMA 的实例

  3. 如果您计划在采用 Cloud RDMA 的 HPC 虚拟机实例上运行 MPI 应用,请按照在采用 Cloud RDMA 的 H4D 虚拟机上设置和扩缩 MPI 应用中的 MPI 配置步骤操作。

访问 HPC 虚拟机实例

创建 HPC 虚拟机实例后,它会自动启动。如需访问实例,请执行以下操作之一:

控制台

  1. 在 Cloud de Confiance 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 点击虚拟机实例的名称。

  3. 远程访问部分中,点击第一个下拉列表,然后选择您希望使用哪种方式访问该实例。

Compute Engine 会传播您的 SSH 密钥并创建您的用户。如需了解详情,请参阅连接到 Linux 虚拟机

gcloud

如需使用 SSH 访问实例,请使用 gcloud compute ssh 命令

gcloud compute ssh INSTANCE_NAME

Compute Engine 会传播您的 SSH 密钥并创建您的用户。如需了解详情,请参阅连接到实例

清理

为避免系统因本快速入门中使用的资源向您的 Cloud de Confiance by S3NS 账号收取费用,请删除您创建的所有 HPC 虚拟机实例。

控制台

  1. 在 Cloud de Confiance 控制台中,前往部署页面。

    转到部署

  2. 选中 HPC 虚拟机部署旁边的复选框。

  3. 点击删除

gcloud

使用 instances delete 命令

gcloud compute instances delete INSTANCE_NAME

根据最佳做法配置 HPC 虚拟机实例

为了获得 HPC 虚拟机实例更好且更具预测性的性能,我们建议您使用以下最佳做法。

停用并发多线程

HPC 虚拟机映像默认启用并发多线程 (SMT),这在 Intel 处理器上也称为超线程。停用 SMT 可以提高性能的可预测性,并能缩短作业时间。

您可以使用以下方法停用 SMT:

  • 如需在创建新的 HPC 虚拟机时停用 SMT,请按照创建 HPC 虚拟机的步骤操作并添加 --threads-per-core=1 标志。

  • 如需在现有 HPC 虚拟机上停用 SMT,请连接到该虚拟机,然后从该虚拟机运行以下命令:

    sudo google_mpi_tuning --nosmt
    

如需了解详情,请参阅设置每个核心的线程数

将 gVNIC 配置为 C2 和 C2D 实例的网络接口类型

HPC 虚拟机映像支持将 Virtio-net 和 Google 虚拟 NIC (gVNIC) 作为虚拟网络接口。使用 gVNIC 而不是 Virtio-net 可以提供更好的通信性能和更高的吞吐量,从而提高 MPI 应用的可伸缩性。此外,gVNIC 是实现每个虚拟机的 Tier_1 网络性能的前提条件,该网络性能提供更高的带宽并支持更高的吞吐量。

如果您创建新的 C2 或 C2D 实例,则默认情况下,Virtio-net 会用于虚拟网络接口。如需使用 gVNIC,请按照创建 HPC 虚拟机的步骤操作,并执行以下任一操作:

控制台

如需将 gVNIC 设置为网络接口,请在创建实例时,点击导航菜单中的网络。在显示的“网络”窗格中,执行以下操作:

  1. 前往网络接口部分
  2. 对于网络接口卡,选择 gVNIC

gcloud

gcloud compute instances create 命令中添加 --network-interface=nic-type=GVNIC 标志。

HPC 虚拟机映像将 gVNIC 驱动程序添加为动态内核模块支持 (DKMS)。如需了解详情,请参阅使用 Google 虚拟 NIC

关闭 Meltdown 和 Spectre 缓解措施

HPC 虚拟机映像默认启用 Meltdown 和 Spectre 缓解措施。在某些情况下,这些缓解措施可能会导致特定于工作负载的性能下降。如需停用这些缓解措施并承担相关的安全风险,请执行以下操作:

  1. 在 HPC 实例上运行以下命令:

    sudo google_mpi_tuning --nomitigation
    
  2. 重启实例。

提升网络性能

如需提升实例的网络性能,请设置以下一个或多个配置:

  • 配置更高的带宽。如需为 C2 或 C2D 虚拟机配置 Tier_1 网络,请使用 gcloud compute instances create 命令创建虚拟机并指定 --network-performance-configs 标志。如需了解详情,请参阅创建具有高带宽配置的虚拟机

  • 使用巨型帧。为了帮助最大限度地减少网络数据包的处理开销,我们建议使用较大的数据包大小。您需要根据应用的具体情况验证较大的数据包大小。如需了解如何使用巨型帧和数据包大小,请参阅最大传输单元指南

  • 提高 TCP 内存限制。带宽越高,需要的 TCP 内存就越大。按照相关步骤提高 tcp_*mem 设置

  • 使用网络延迟配置文件。评估应用的延迟时间并启用频繁轮询以减少网络接收路径中的延迟时间。在 /etc/sysctl.conf 中调整 net.core.busy_pollnet.core.busy_read 设置,或使用 tuned-adm

使用 Intel MPI 2021

Google 建议使用 Intel MPI 2021 库在Cloud de Confiance上运行 MPI 作业。

MPI 实现具有许多会影响通信性能的内部配置参数。这些参数与 MPI Collective 通信尤其相关,MPI Collective 通信可让您指定在 Cloud de Confiance by S3NS 环境中执行方式截然不同的算法和配置参数。

HPC 虚拟机映像包含一个实用程序 google-hpc-compute,该实用程序可安装推荐的 MPI 库并使用通过 TCP 传输的 Cloud de Confiance by S3NS 定制的 Libfabric 提供程序。

限制

调节的好处因应用而异。在某些情况下,特定调节可能会对性能产生负面影响。请考虑对应用进行基准测试,以便找到最高效或最具成本效益的配置。

使用 google-hpc-compute 实用程序来支持 Intel MPI 2021

google_install_intelmpi 脚本是 Google-hpc-compute 实用程序中的 MPI 相关工具。有助于安装和配置 Intel MPI。

google-hpc-compute 实用程序包含在 HPC 虚拟机映像中。

安装 Intel MPI 2021

如需在创建新的 HPC 虚拟机时安装 Intel MPI 库,请按照相关步骤创建 HPC 虚拟机,并在创建虚拟机实例时添加以下内容:

--metadata=google_install_intelmpi="--impi_2021"

如需在现有 HPC 虚拟机上安装该库,请在该虚拟机上运行以下命令:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

install_dir 的默认位置设置为 /opt/intel

Intel MPI Library 2018 和 MPI Collective 调节

HPC 虚拟机映像包括使用紧凑布置政策针对 c2-standard-60c2d-standard-112 实例执行的 Intel MPI Collective 调节。这些调节位于 /usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018 目录中。

如需在已安装的 MPI 库上应用这些调节配置,请对 mpivars shell 脚本执行 source 命令以设置适当的环境。然后,您可以使用以下命令直接安装调节(如果您需要目录的根访问权限,请使用 --sudo 选项):google_install_mpitune

您可以使用 mpitune 手动指定用于 MPI Collective 通信的算法和配置参数,并生成配置文件。

例如,如需针对 22 个虚拟机实例和每个实例 30 个 vCPU 进行调整,请对 mpivars shell 脚本执行 source 命令以设置适当的环境,然后运行以下命令。您必须拥有对该目录的 write 访问权限,或以根用户身份运行该命令。

mpitune -hf hostfile -fl 'shm:tcp' -pr 30:30 -hr 22:22

此命令会在 Intel MPI 目录中生成一个配置文件,该文件稍后可用于运行应用。如需使用应用的调节配置,请将 -tune 选项添加到 mpirun 命令行,例如:

mpirun -tune -hostfile HOSTFILE -genv I_MPI_FABRICS 'shm:tcp' -np 660 -ppn 30 ./APPLICATION_NAME

替换以下内容:

  • HOSTFILE:客机操作系统中列出虚拟机实例的网络名称的文件的名称
  • APPLICATION_NAME:要运行的应用文件的名称

使用 HPC 虚拟机映像创建自定义映像

如需大规模实施最佳实践,请创建自定义操作系统映像以用于 HPC 虚拟机实例。完成以下任务,以创建在创建 HPC 虚拟机实例时使用的自定义映像:

  1. 创建使用 HPC 虚拟机映像的虚拟机

  2. 通过 MPI 调节来自定义虚拟机

  3. 使用 HPC 虚拟机映像的启动磁盘作为来源磁盘创建自定义映像。您可以使用 Cloud de Confiance 控制台Google Cloud CLI 执行此操作。

控制台

  1. 在 Cloud de Confiance 控制台中,前往映像页面。

    转到“映像”

  2. 点击创建映像

  3. 为映像指定名称

  4. 来源磁盘下,选择 HPC 虚拟机上的启动磁盘的名称。

  5. 为映像选择其余属性。

  6. 点击创建

gcloud

使用 images create 命令创建自定义映像。

gcloud compute images create IMAGE_NAME \
         --source-disk=INSTANCE_NAME \
         --source-disk-zone=VM_ZONE \
         --family=IMAGE_FAMILY \
         --storage-location=LOCATION

请替换以下内容:

  • IMAGE_NAME:自定义映像的名称。
  • INSTANCE_NAME:您的 HPC 虚拟机的名称。
  • INSTANCE_ZONE:您的 HPC 虚拟机所在的可用区。
  • IMAGE_FAMILY:可选。此映像所属的映像系列
  • LOCATION:可选。存储自定义映像的区域。默认位置是最靠近来源磁盘位置的多区域。

价格

HPC 虚拟机映像无需额外付费即可使用。由于 HPC 虚拟机映像在 Compute Engine 上运行,因此 Compute Engine 资源(例如 vCPU、磁盘和内存)可能会产生费用。如需了解详情,请参阅 Compute Engine 价格

后续步骤