Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


数学:并行计算:dcuda_dynamic_gpu_scheduling_with_live_migration_support

DCUDA: Dynamic GPU Scheduling with Live Migration Support


总结

  1. 场景是多个用户的程序共享一个GPU(常见于云服务器)
  2. 动态迁移的单位是整个程序不是kernel,正在执行的kernel是不能被打断的
  3. 在某个CUDA API或kernel执行结束后,下一个执行之前的间隔,可以迁移整个程序到其他GPU
  4. User Code → DCUDA(分析kernel call的参数) → CUDA/GPU,DCUDA通过在中间层分析函数估算程序资源需求,以此为依据决定迁移策略
  5. 数据统一使用CUDA Unified Memory分配,数据迁移后,程序内使用的虚拟地址可以不变

AI总结

核心内容简介

DCUDA 是一个面向数据中心和云计算环境的 GPU 动态调度系统,支持运行中的 CUDA 应用在多 GPU 之间的“实时迁移”(live migration),旨在解决当前主流 GPU 调度方法的“静态性”和由此带来的 GPU 资源负载不均衡问题。

背景与动机

  • 现代数据中心广泛部署多 GPU 服务器,但现有方法仅在应用启动前进行“静态调度”,无法感知运行时 GPU 负载变化。
  • 现实中经常出现某些 GPU 过载、而其他 GPU 空闲的情况,这种负载不均衡问题降低了 GPU 利用率,增加了能耗并拉长应用执行时间。
  • CUDA 等主流编程模型本身并不支持运行时迁移。

DCUDA 的贡献

  1. 轻量级实时监控:通过拦截 CUDA API 并分析参数,实时准确监控 GPU 利用率与应用资源需求,开销极小。
  2. 通用运行时迁移机制:无需修改应用源码,兼容所有 CUDA 应用,利用统一内存(Unified Memory)实现数据按需迁移,迁移开销低于 0.3%。
  3. 动态调度框架

    • 通过实时迁移实现多 GPU 负载平衡。
    • 进一步通过轻量任务压缩提升 GPU 能效。
    • 采用优先级切片机制保障不同应用的公平性与 QoS。
  4. 原型与实验

    • 实验表明,DCUDA 能平均减少 78.3% GPU 过载时间,应用平均执行时间缩短 42.1%,在轻负载场景节能可达 13.3%。

技术架构

DCUDA 基于前后端架构:

  • 前端:拦截 CUDA API(以动态链接库方式提供)。
  • 后端:包含监控(Monitor)、调度器(Scheduler)、迁移器(Migrator)三大模块。
  • 利用 CUDA Unified Memory 支持跨 GPU 的按需数据访问与迁移。

核心技术难点与优化

  • 利用句柄池(Handle Pooling)、数据预取(Prefetching)等方法降低迁移开销。
  • 引入滞回控制避免“迁移震荡”(ping-pong effect)。
  • 综合考虑负载均衡、能耗与公平性多维目标。

评价实验

  • 基于 NVIDIA 1080Ti 多 GPU 服务器,使用 CUDA Samples、SHOC、TensorFlow 等 20 个基准测试。
  • 相较经典静态调度(Least-Loaded),DCUDA 显著提升 GPU 利用率与公平性,降低执行时长与能耗。

总结

DCUDA 是业内首个支持所有 CUDA 应用实时迁移的系统,突破了现有静态调度方案的局限,为提升数据中心 GPU 资源利用率、降低能耗、提升性能与公平性提供了有效方案。

/var/www/DokuWikiStick/dokuwiki/data/pages/数学/并行计算/dcuda_dynamic_gpu_scheduling_with_live_migration_support.txt · Last modified: 2025/07/19 15:06 by zhonghui