Atualmente, não há suporte de aceleração de GPU completo para o OpenStack. Existe uma proposta para adicionar suporte a máquinas aceleradas por GPU como um tipo de máquina alternativa no OpenStack. O lançamento alvo para isso é o Grizzly. Você pode conferir um protótipo funcional aqui .
Implementação openstack bem-sucedida com suporte a CUDA. Tipo de instância cg1.xlarge e GPUs NVIDIA Fermi
$ 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
A única abordagem que foi bem-sucedida para o acesso CUDA de uma máquina virtual kvm gVirtuS . Aqui, precisamos de um acesso direto ao gpus das instâncias do LXC. Contanto que o kernel do sistema host suporte 'lxc-attach' e os utilitários para 'lxc-attach' estejam instalados.
nova.virt.GPULibvirt
, que é uma extensão de nova.virt.libvirt
para instanciar uma máquina virtual habilitada para GPU quando solicitado.
1) Quando uma instância é gerada (ou reinicializada), a nova inicia uma VM LXC
2) A (s) GPU (s) solicitada (s) é (são) marcada (s) como alocada e seu (s) dispositivo (s) é (são) criado (s) dentro do LXC usando 'lxc-attach'
3) A permissão de acesso ao (s) gpu (s) é adicionada ao / cgroup
Inicialização finaliza
4) Quando uma instância é terminada (destruída), as gpu (s) são desalocadas.