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

标签 opengl amazon-web-services amazon-ec2 centos gpu

我需要使用 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 .在本文中,Amazon Linux AMI with NVIDIA Drivers推荐用于 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 窗口
  • 安装 mesa 库后重新安装 Nvidia 驱动程序

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

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

最佳答案

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 故障。

关于opengl - 使用 CentOS 在 AWS GPU 实例上运行 OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19856192/

相关文章:

opengl - 如何从世界位置和 MVP 矩阵中获取相机的距离?

opengl - 为什么在使用 FBO 进行多重采样时 OpenGL 会照亮我的场景?

java - 如何在 AWS Elastic Beanstalk 上设置编码?

amazon-web-services - 是否可以从 CloudWatch 为 Lambda 状态函数集创建计划规则

linux - 无法连接到 Jenkins 服务器 (Amazon Linux AMI)

java - 使用 Amazon Spot 实例(或其他方式)从 Java 代码发出多个 HTTP 请求

java - 添加光照 glLightfv 方法不起作用

计算多边形的 OpenGL 面法线

amazon-web-services - 在 AWS Lambda 上配置 CORS 响应 header ?

amazon-web-services - 无法通过 SSH 连接到 EC2 | AWS Cloudformation 模板