5.3. GPU 共享方法


红帽和 NVIDIA 已开发 GPU 并发和共享机制,以简化在企业级 Red Hat OpenShift Service on AWS 集群上的 GPU 加速计算。

应用程序通常会有不同的计算要求,这可能会使 GPU 使用率不足。为每个工作负载提供正确的计算资源数量对于降低部署成本和最大化 GPU 使用率至关重要。

用于提高 GPU 使用率的并发机制,范围从编程模型 API 到系统软件和硬件分区,包括虚拟化。以下列表显示了 GPU 并发机制:

  • 计算统一设备架构 (CUDA) 流
  • Time-slicing(时间分片)
  • CUDA 多进程服务 (MPS)
  • 多实例 GPU (MIG)
  • 使用 vGPU 的虚拟化

其他资源

5.3.1. CUDA 流

Compute Unified Device Architecture (CUDA) 是由 NVIDIA 开发的并行计算平台和编程模型,用于 GPU 上的常规计算。

流是 GPU 上问题顺序执行的操作序列。CUDA 命令通常在默认流中按顺序执行,任务在前面的任务完成后才会启动。

跨不同流的异步处理操作允许并行执行任务。在一个流中发布的任务之前、期间或另一个任务签发到另一个流后运行。这允许 GPU 以任何规定的顺序同时运行多个任务,从而提高性能。

其他资源

5.3.2. Time-slicing(时间分片)

当您运行多个 CUDA 应用程序时,在超载 GPU 上调度 GPU 时间的交集工作负载。

您可以通过为 GPU 定义一组副本来启用 Kubernetes 上的 GPU 的时间,每个副本都可以独立分发到 pod 来运行工作负载。与多实例 GPU (MIG) 不同,在副本之间不存在内存或故障隔离,但对于某些工作负载,这优于根本不进行共享。在内部,GPU 时间分片用于从同一底层 GPU 将多个工作负载分配到不同的副本。

对于时间分片,您可以应用一个集群范围的默认配置。您还可以应用特定于节点的配置。例如,您只能将时间分片配置应用到具有 Tesla T4 GPU 的节点,而不能将节点改为使用其他 GPU 模型。

您可以通过应用集群范围的默认配置来组合这两种方法,然后标记节点以授予这些节点接收特定于节点的配置。

5.3.3. CUDA 多进程服务

CUDA 多进程服务 (MPS) 允许单个 GPU 使用多个 CUDA 进程。进程在 GPU 上并行运行,消除了 GPU 计算资源的饱和。MPS 还支持并发执行或重叠内核操作和从不同进程复制的内存,以增强利用率。

其他资源

5.3.4. 多实例 GPU

使用多实例 GPU (MIG),您可以将 GPU 计算单元和内存分成多个 MIG 实例。每个实例都代表了从系统的角度来看的独立 GPU 设备,并可连接到节点上运行的任何应用程序、容器或虚拟机。使用 GPU 的软件将每个 MIG 实例视为单独的 GPU。

当您有一个不需要整个 GPU 完全功能的应用程序时,MIG 很有用。新的 NVIDIA Ampere 架构的 MIG 功能允许您将硬件资源分成多个 GPU 实例,每个实例都可作为独立的 CUDA GPU 提供给操作系统。

NVIDIA GPU Operator 版本 1.7.0 及更高版本为 A100 和 A30 Ampere 卡提供 MIG 支持。这些 GPU 实例旨在支持最多 7 个独立的 CUDA 应用程序,以便它们与专用硬件资源完全隔离。

5.3.5. 使用 vGPU 的虚拟化

虚拟机 (VM) 可以使用 NVIDIA vGPU 直接访问单个物理 GPU。您可以创建虚拟 GPU,供虚拟机在企业之间共享,并由其他设备访问。

此功能将 GPU 性能与 vGPU 提供的管理和安全优势相结合。vGPU 提供的其他好处包括虚拟机环境的主动管理和监控、混合 VDI 和计算工作负载的工作负载平衡以及多个虚拟机之间的资源共享。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.