22

我需要使用 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宣布了他们的新 G2 实例类型。在本文中,建议将带有 NVIDIA 驱动程序的 Amazon Linux AMI用于 Linux 平台。在这个 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)

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

  • 使用干净的 CentOS HVM AMI 并手动安装 Nvidia 驱动程序
  • 尝试了两种 CG1/G2 实例类型
  • 使用 nvidia-xconfig 重新生成 X 窗口配置
  • 使用 Xvfb 代替 X 窗口
  • 安装台面库后重新安装 Nvidia 驱动程序

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

有没有人有这个问题的具体解决方案?我提到的一切都应该是可重现的(我尝试了很多次)。如果您能提供可重现的指令以使 OpenGL (GLX) 在具有 CentOS/Amazon Linux AMI 的 EC2 GPU 实例上工作,我将不胜感激。

4

2 回答 2

16

lspci | grep VGA

你应该看到busIDis 0:3:0

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

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

这应该可以修复 GLX 故障。

于 2013-11-09T12:03:32.230 回答
6

Just an additional find:

I did this to get the X Server running:

sudo /usr/bin/X :0 &

However, my OpenGL application was still not using the GPU for image rendering, and was therefore being REALLY slow.

This is what saved me -- setting a DISPLAY environment variable to the same display (ID: 0) that the X Server is using:

export DISPLAY=:0.0
于 2014-02-03T10:29:38.083 回答