web-dev-qa-db-ja.com

CentOSを使用してAWSGPUインスタンスでOpenGLを実行する

CentOSを使用してAWSEC2GPUインスタンスでオフスクリーンレンダリングプログラムを実行する必要があります。ただし、Ubuntuのセットアップは非常に簡単であることがわかりましたが、CentOSを正しく動作させることはできません。

目標は、EC2 GPUインスタンス(画面またはXクライアントなし)でいくつかの重要なユーティリティ/テストツールを実行することです。次の記事では、Ubuntuをセットアップする方法と、CentOS/Amazon LinuxAMIが失敗する方法について説明します。

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またはAmazonLinux AMI

「CentOS」と「AmazonLinuxAMI」はどちらも、Red HatEnterpriseエディションから派生しています。しかし、私はそれらのどれも機能させることができません。

数日前、AWS 新しいG2インスタンスタイプを発表しました 。この記事では、Linuxプラットフォームには NVIDIAドライバーを搭載したAmazon Linux AMI をお勧めします。このAMIには、Nvidiaドライバー、Xウィンドウ、OpenGLライブラリがすべてインストールされています。ただし、OpenGLプログラムを実行しようとすると、GLXエラーメッセージが表示されます。

EC2インスタンスは、次の設定で起動されます。

  • AMIイメージ:NVIDIA GRIDGPUドライバーを搭載したAmazonLinux 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)

私はグーグルで検索し、次のような多くの可能な解決策を試しました:

  • クリーンなCentOSHVM AMIを使用し、Nvidiaドライバーを手動でインストールします
  • 両方のCG1/G2インスタンスタイプを試しました
  • Nvidia-xconfigを使用してXウィンドウ構成を再生成します
  • Xウィンドウの代わりにXvfbを使用する
  • Mesaライブラリをインストールした後、Nvidiaドライバーを再インストールします

...しかし、それらのどれも機能しません。

誰かがこの問題の具体的な解決策を持っていますか?私が言及したことはすべて再現可能でなければなりません(私は何度も試しました)。 CentOS/Amazon LinuxAMIを使用してEC2GPUインスタンスでOpenGL(GLX)を機能させるための再現可能な手順を提供していただければ幸いです。

22
miaout17

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
user2971823

ただの追加の発見:

Xサーバーを実行するためにこれを行いました。

Sudo /usr/bin/X :0 &

ただし、私のOpenGLアプリケーションはまだ画像のレンダリングにGPUを使用していなかったため、非常に低速でした。

これが私を救ったものです-DISPLAY環境変数をXサーバーが使用しているのと同じディスプレイ(ID:0)に設定します:

export DISPLAY=:0.0
6