Lancer OpenGL sur les instances GPU AWS avec CentOS

j'ai besoin d'exécuter un programme de rendu hors-écran sur l'instance AWS EC2 GPU avec CentOS. Cependant, bien que J'ai trouvé Qu'Ubuntu est très facile à configurer, Je ne peux pas laisser CentOS fonctionner correctement.

le but est d'exécuter un utilitaire/outil de test essentiel sur l'instance GPU EC2 (sans écran ou X client). Dans l'article suivant, je décrirai comment L'Ubuntu peut être configuré et comment CentOS/Amazon Linux AMI échoue.

Ubuntu

Sur ubuntu 12.04, tout fonctionne beaucoup de douceur. L'environnement EC2 que j'ai utilisé est:

  • Type D'Instance: CG1 et G2 ont été testés et ont fonctionné correctement.
  • AMI de l'image: le Serveur Ubuntu 12.04.3 LTS pour HVM Instances (ami-b93264d0 en NOUS-Orient)
  • la Plupart des autres paramètres par défaut.

après le lancement de l'instance, les commandes suivantes sont exécutées:

# Install the Nvidia driver
sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install nvidia-current
# Driver installation needs reboot
sudo reboot now

# Install and configure X window with virtual screen
sudo apt-get install xserver-xorg libglu1-mesa-dev freeglut3-dev mesa-common-dev libxmu-dev libxi-dev
sudo nvidia-xconfig -a --use-display-device=None --virtual=1280x1024
sudo /usr/bin/X :0 &

# OpenGL programs are now workable. Ex. glxinfo, glxgears
DISPLAY=:0 glxinfo

glxgears peut également fonctionner en arrière-plan sans écran physique ou X client:

$ DISPLAY=:0 glxgears
95297 frames in 5.0 seconds = 19059.236 FPS
95559 frames in 5.0 seconds = 19111.727 FPS
94173 frames in 5.0 seconds = 18834.510 FPS

CentOS ou Amazon Linux AMI

les deux "CentOS " et" Amazon Linux AMI " sont dérivés de Red Hat Enterprise edition. Cependant, je ne peux en faire fonctionner aucun.

il y a quelques jours, AWS a annoncé son nouveau type d'instance G2. Dans cet article, le Amazon Linux AMI with NVIDIA Drivers est recommandé pour la plate-forme Linux. Dans cet AMI, le pilote Nvidia, les bibliothèques X window et OpenGL sont tous installés. Cependant, Je reçois juste des messages D'erreur GLX quand J'essaie d'exécuter des programmes OpenGL.

l'instance EC2 est lancée avec le paramètre suivant:

  • image AMI: Amazon Linux AMI with NVIDIA GRID GPU Driver (ami-637c220a in US-East)
  • Type D'Instance: G2
  • la Plupart des autres paramètres sont par défaut

Après avoir démarré, les étapes pour reproduire ce problème est très simple:

sudo X :0 & # Start the X window
glxinfo
glxgears

La sortie est:

$ glxinfo
name of display: :0
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't find RGB GLX visual or fbconfig

Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".
Xlib:  extension "GLX" missing on display ":0".

$ glxgears
Xlib:  extension "GLX" missing on display ":0".
Error: couldn't get an RGB, Double-buffered visual

l'erreur suivante se trouve dans /var/log/Xorg.0.log:

[139017.484] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)

j'ai cherché et essayé beaucoup de solutions possibles, telles que:

  • utilisez L'AMI propre CentOS HVM et installez le pilote NVIDIA manuellement
  • essayé les deux types D'instance CG1/G2
  • Régénérer les X de la fenêtre de config nvidia-xconfig
  • utilisez Xvfb au lieu de X window
  • réinstaller le pilote Nvidia après que les bibliothèques mesa sont installé

... mais aucun d'entre eux travaille.

quelqu'un aurait-il une solution concrète à ce problème? Tout ce que j'ai mentionné devrait être reproductible (j'ai essayé plusieurs fois). J'apprécierai si vous pouvez fournir des instructions reproductibles pour faire fonctionner OpenGL (GLX) sur les instances EC2 GPU avec CentOS/Amazon Linux AMI.

20
demandé sur miaout17 2013-11-08 13:59:06

2 réponses

lspci | grep VGA

Vous devriez voir le busID0:3:0.

en utilisant sudo, ajoutez ceci à votre xorg.conf comme ceci:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GRID K520"
    BusID           "0:3:0"
EndSection

cela devrait corriger les défaillances de GLX.

16
répondu user2971823 2017-01-22 23:07:02

Juste un supplément de trouver:

j'ai fait ça pour que le serveur X tourne:

sudo /usr/bin/X :0 &

cependant, mon application OpenGL n'utilisait toujours pas le GPU pour le rendu d'image, et était donc très lente.

c'est ce qui m'a sauvé -- paramétrer une variable D'environnement D'affichage sur le même écran (ID: 0) que le serveur X utilise:

export DISPLAY=:0.0
6
répondu UgniusR 2014-02-03 10:29:38