Laufen OpenGL auf AWS-GPU-instances, die mit CentOS
Ich ausführen müssen, einige off-screen-rendering-Programm auf AWS EC2-GPU-Instanz mit CentOS. Während jedoch fand ich, dass Ubuntu sehr einfach zu setup, kann ich nicht zulassen, CentOS funktionieren.
Ziel ist es, einige wesentliche Tools/test-Tools, die in EC2-GPU-Instanz (ohne screen oder X-client). Im folgenden Artikel werde ich beschreiben, wie das Ubuntu-setup kann und wie CentOS/Amazon Linux AMI fehl.
Ubuntu
Auf ubuntu 12.04, alles funktioniert reibungslos. Die EC2-Umgebung, die ich verwendet sind:
- Instance-Typ: Sowohl CG1 und G2 wurden getestet und funktionierte einwandfrei.
- AMI Bild: Ubuntu Server 12.04.3 LTS für HVM-Instanzen (ami-b93264d0 in US-East)
- Die meisten anderen Einstellungen sind Standard.
Nachdem die Instanz gestartet wird, die folgenden Befehle ausgeführt werden:
# 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
Den glxgears
können auch im hintergrund laufen, ohne körperliche screen oder 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 oder Amazon Linux AMI
Beide "CentOS" und "Amazon Linux AMI" sind abgeleitet von Red Hat Enterprise edition. Jedoch, ich kann keine von Ihnen Arbeit.
Vor ein paar Tagen, AWS angekündigt, Ihre neue G2-instance-Typ. In diesem Artikel werden die Amazon Linux AMI mit NVIDIA-Treiber wird empfohlen, für die Linux-Plattform. In diesem AMI, der Nvidia Treiber, X-window-und OpenGL-Bibliotheken sind alle installiert. Jedoch bekomme ich nur GLX-Fehlermeldungen, wenn Sie versuchen zum ausführen von OpenGL-Programmen.
Die EC2-Instanz gestartet wird mit der folgenden Einstellung:
- AMI Bild: Amazon Linux AMI mit NVIDIA GRID GPU-Treiber (ami-637c220a in US-East)
- Instance-Typ: G2
- Die meisten anderen Einstellungen sind Standard
Nachdem Sie gestartet ist, die Schritte zum reproduzieren dieses Problems ist sehr einfach:
sudo X :0 & # Start the X window
glxinfo
glxgears
Ausgabe:
$ 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
Wird der folgende Fehler ist gefunden in /var/log/Xorg.0.log
:
[139017.484] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)
Ich habe gegoogelt und versucht, eine Menge mögliche Lösung, wie zum Beispiel:
- Mit dem clean CentOS HVM AMI und installieren der Nvidia-Treiber manuell
- Versucht, sowohl die CG1/G2-instance-Typen
- Regenerieren das X-window-Konfiguration mit nvidia-xconfig
- Verwenden Xvfb statt des X-window -
- Neuinstallation der Nvidia-Treiber nach der mesa-Bibliotheken installiert sind
... aber keiner von Ihnen arbeitet.
Hat jemand eine konkrete Lösung für dieses Problem? Alles, was ich erwähnen sollte reproduzierbar sein (ich habe viele Male versucht). Ich werde zu schätzen, wenn Sie reproduzierbare Anweisungen, um OpenGL (GLX) arbeitet auf EC2 GPU instances mit CentOS/Amazon Linux AMI.
- Sie können das nützlich finden: github.com/rncry/gpu-desktop
Du musst angemeldet sein, um einen Kommentar abzugeben.
lspci | grep VGA
Sollten Sie die
busID
ist0:3:0
.Verwendung von sudo ist, fügen Sie diese in Ihre xorg.conf etwa so:
Dieses Problem beheben sollte-GLX-Fehlern.
BusID
explizit, aber Ubuntu nicht braucht. Nicht sicher, dass es Ursache.Nur eine zusätzliche finden:
Ich Tat dies, um der X-Server läuft:
Aber meine OpenGL-Anwendung war noch immer nicht die GPU für die Darstellung der Bilder, und war daher sehr langsam.
Dies ist, was mich gerettet -- festlegen einer Umgebungsvariable DISPLAY die gleiche display - (ID: 0), dass der X-Server mit: