首页 文章

使用CentOS在AWS GPU实例上运行OpenGL

提问于
浏览
21

我需要使用CentOS在AWS EC2 GPU实例上执行一些离屏渲染程序 . 然而,虽然我发现Ubuntu很容易设置,但我不能让CentOS正常工作 .

目标是在EC2 GPU实例上运行一些基本的实用程序/测试工具(没有屏幕或X客户端) . 在下面的文章中,我将描述如何设置Ubuntu以及CentOS / Amazon Linux AMI如何失败 .

Ubuntu

在ubuntu 12.04上,一切都很顺利 . 我使用的EC2环境是:

  • 实例类型:CG1和G2都经过测试并正常工作 .

  • AMI映像:用于HVM实例的Ubuntu Server 12.04.3 LTS(美国东部的ami-b93264d0)

  • 大多数其他设置都是默认设置 .

启动实例后,将执行以下命令:

# 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 也可以在没有物理屏幕或X客户端的后台运行:

$ 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或Amazon Linux AMI

“CentOS”和“Amazon Linux AMI”均源自红帽企业版 . 但是,我不能让它们中的任何一个起作用 .

几天前,AWS announced their new G2 instance type . 在本文中,建议在Linux平台上使用Amazon Linux AMI with NVIDIA Drivers . 在这个AMI中,安装了Nvidia驱动程序,X窗口和OpenGL库 . 但是,我在尝试执行OpenGL程序时只收到GLX错误消息 .

使用以下设置启动EC2实例:

  • AMI图片:带有NVIDIA GRID GPU驱动程序的Amazon Linux AMI(美国东部的ami-637c220a)

  • 实例类型:G2

  • 大多数其他设置都是默认设置

启动后,重现此问题的步骤非常简单:

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

输出是:

$ 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

/var/log/Xorg.0.log 中发现以下错误:

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

我用Google搜索并尝试了很多可能的解决方案,例如:

  • 使用干净的CentOS HVM AMI并手动安装Nvidia驱动程序

  • 尝试了两种CG1 / G2实例类型

  • 使用nvidia-xconfig重新生成X窗口配置

  • 使用Xvfb而不是X窗口

  • 安装mesa库后重新安装Nvidia驱动程序

......但它们都不起作用 .

有没有人为这个问题找到具体的解决方案?我提到的一切都应该是可以重复的(我试过很多次) . 如果您能提供可重现的说明,以使OpenGL(GLX)在使用CentOS / Amazon Linux AMI的EC2 GPU实例上运行,我将不胜感激 .

2 回答

  • 6

    lspci | grep VGA

    你应该看到 busID0:3:0 .

    使用sudo,将其添加到xorg.conf中,如下所示:

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

    这应该可以解决GLX故障 .

  • 16

    另外一个发现:

    我这样做是为了让X Server运行:

    sudo /usr/bin/X :0 &
    

    但是,我的OpenGL应用程序仍然没有使用GPU进行图像渲染,因此非常慢 .

    这就是我节省的 - 将一个DISPLAY环境变量设置为X服务器正在使用的同一显示(ID:0):

    export DISPLAY=:0.0
    

相关问题