Мне нужно выполнить некоторую программу внеэкранного рендеринга на экземпляре GPU AWS EC2 с CentOS. Однако, хотя я обнаружил, что Ubuntu очень прост в настройке, я не могу позволить CentOS работать должным образом.
Цель состоит в том, чтобы запустить некоторый важный инструмент утилиты/теста на экземпляре EC2 GPU (без экрана или X-клиента). В следующей статье я опишу, как Ubuntu может быть настроен и как CentOS/Amazon Linux AMI не работает.
Ubuntu
На ubuntu 12.04 все работает очень гладко. Я использовал среду EC2:
- Тип экземпляра: оба CG1 и G2 были протестированы и работали правильно.
- Изображение AMI: сервер Ubuntu 12.04.3 LTS для экземпляров HVM (ami-b93264d0 в US-East)
- Большинство других настроек по умолчанию.
После запуска экземпляра выполняются следующие команды:
# 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" взяты из Red Hat Enterprise edition. Однако я не могу заставить их работать.
Несколько дней назад AWS объявил о своем новом экземпляре экземпляра G2. В этой статье рекомендуется использовать Amazon Linux AMI с драйверами NVIDIA для платформы Linux. В этом AMI установлены драйвер Nvidia, окна X и библиотеки OpenGL. Тем не менее, я просто получаю сообщения об ошибках GLX при попытке выполнить программы OpenGL.
Экземпляр EC2 запускается со следующей настройкой:
- Изображение AMI: Amazon Linux AMI с драйвером NVIDIA GRID GPU (ami-637c220a на US-East)
- Тип экземпляра: 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)
У меня есть googled и пробовал много возможного решения, например:
- Использовать чистый CentOS HVM AMI и вручную установить драйвер Nvidia.
- Пробовал типы экземпляров CG1/G2
- Восстановить конфигурацию окна X с помощью nvidia-xconfig
- Используйте Xvfb вместо окна X
- Переустановите драйвер Nvidia после установки библиотек mesa.
... но никто из них не работает.
Есть ли у кого-нибудь конкретное решение этой проблемы? Все, что я упоминал, должно быть воспроизводимым (я много раз пробовал). Я буду признателен, если вы сможете предоставить воспроизводимые инструкции, чтобы OpenGL (GLX) работал над экземплярами EC2 GPU с CentOS/Amazon Linux AMI.