HeterogeneousGpuAcceleratorSupport
- Launchpad 条目: NovaSpec:heterogeneous-gpu-accelerator-support
- 创建者: Brian Schott
- 当前维护者: John Paul Walters
- 贡献者: USC 信息科学研究所
目录
总结
该蓝图建议在 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 期间的笔记;如果将其保留在批准的规范中,请用于总结讨论内容并记录任何被拒绝的选项。