CentOSを使用してAWSEC2GPUインスタンスでオフスクリーンレンダリングプログラムを実行する必要があります。ただし、Ubuntuのセットアップは非常に簡単であることがわかりましたが、CentOSを正しく動作させることはできません。
目標は、EC2 GPUインスタンス(画面またはXクライアントなし)でいくつかの重要なユーティリティ/テストツールを実行することです。次の記事では、Ubuntuをセットアップする方法と、CentOS/Amazon LinuxAMIが失敗する方法について説明します。
Ubuntu 12.04では、すべてが非常にスムーズに機能します。私が使用したEC2環境は次のとおりです。
インスタンスが起動された後、次のコマンドが実行されます。
# 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」と「AmazonLinuxAMI」はどちらも、Red HatEnterpriseエディションから派生しています。しかし、私はそれらのどれも機能させることができません。
数日前、AWS 新しいG2インスタンスタイプを発表しました 。この記事では、Linuxプラットフォームには NVIDIAドライバーを搭載したAmazon Linux AMI をお勧めします。このAMIには、Nvidiaドライバー、Xウィンドウ、OpenGLライブラリがすべてインストールされています。ただし、OpenGLプログラムを実行しようとすると、GLXエラーメッセージが表示されます。
EC2インスタンスは、次の設定で起動されます。
起動後、この問題を再現する手順は非常に簡単です。
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/Amazon LinuxAMIを使用してEC2GPUインスタンスでOpenGL(GLX)を機能させるための再現可能な手順を提供していただければ幸いです。
lspci | grep VGA
busID
が0:3:0
であることがわかります。
Sudoを使用して、次のようにxorg.confに追加します。
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GRID K520"
BusID "0:3:0"
EndSection
これにより、GLXの障害が修正されるはずです。
ただの追加の発見:
Xサーバーを実行するためにこれを行いました。
Sudo /usr/bin/X :0 &
ただし、私のOpenGLアプリケーションはまだ画像のレンダリングにGPUを使用していなかったため、非常に低速でした。
これが私を救ったものです-DISPLAY環境変数をXサーバーが使用しているのと同じディスプレイ(ID:0)に設定します:
export DISPLAY=:0.0