跳转到: 导航, 搜索

HeterogeneousGpuAcceleratorSupport

总结

该蓝图建议在 OpenStack 中添加对 GPU 加速机器的支持,作为一种替代的机器类型。

目标发布版本是 Grizzly。我们计划在 https://code.launchpad.net/~usc-isi/nova/hpc-testing 处拥有一个稳定的分支。

USC-ISI 团队在此处提供了一个功能原型

此蓝图与 HeterogeneousInstanceTypes 蓝图相关

一个用于讨论此蓝图的 etherpad 可在 http://etherpad.openstack.org/heterogeneousultravioletsupport 处找到

发布说明

Nova 已扩展,以便为 CUDA 编程提供 NVIDIA GPU 给配置的实例。

原理

请参阅 HeterogeneousInstanceTypes

此蓝图的目标是在 OpenStack 中实现 GPU 加速计算。

用户故事

Jackie 有一个 CUDA 加速应用程序,并且希望在可以访问 GPU 硬件的实例上运行它。她选择了一个 cg1.xlarge 实例类型,该类型提供对两个 NVIDIA Fermi GPU 的访问权限

$ nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------------------------------------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs                                  |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------------------------------------+
| 9  | cg1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      | {u'hypervisor': u's== LXC', u'gpus': u'= 2', u'gpu_arch':u's== fermi'} |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------------------------------------+
 
$ nova boot --flavor 9 --key-name mykey --image 2b1509fe-b573-488a-be4d-d61d25c7ab4f  gpu_test


前提条件

我们所知的从 kvm 虚拟机访问 CUDA 的唯一成功方法是 gVirtuS [1]。在这里,我们建议直接从 LXC 实例访问 GPU。我们假设主机系统的内核支持 'lxc-attach',并且已安装 'lxc-attach' 的实用程序。

设计

我们有新的 nova.virt.GPULibvirt,它是 nova.virt.libvirt 的扩展,用于在请求时实例化一个 GPU 启用的虚拟机。

  • 当启动(或重新启动)实例时,nova 会启动一个 LXC VM
  • 请求的 gpu(s) 被标记为已分配,并且其(们)设备被使用 'lxc-attach' 在 LXC 内部创建
  • 访问 gpu(s) 的权限被添加到 /cgroup
  • 启动完成
  • 当实例被终止(销毁)时,gpu(s) 被释放。

Schema 变更

实现

USC-ISI 团队有一个功能原型:https://code.launchpad.net/~usc-isi/nova/hpc-trunk

GPU(NVIDIA Teslas)

代码变更

  • 添加了 nova/virt/gpu/driver.py
       Inherits LibvirtDriver and extends a few methods to provision gpus
       Adds a few flags to describe gpu architecture, number of gpus, device ids, etc.
  • 添加了 nova/virt/gpu/utils.py
       Gpu provisioning routines

迁移

Unless the migration target supports gpus of the same indices, it may not work.

测试/演示计划

这不必在规范接近 Beta 之前添加或完成。

未解决的问题

BoF 议程和讨论

使用本节记录 BoF 期间的笔记;如果将其保留在批准的规范中,请用于总结讨论内容并记录任何被拒绝的选项。