paraview 提示没有 OpenGL 3.2

出现这个状况的原因是 ssh -X 登录服务器时,使用了不同的端口和协议来传递 X 服务信息。当直接登录服务器时,使用图形时,则是使用的 :10 来显示,而服务器端则没有显示。这时,采用的协议是

OpenGL version 2.1 Mesa 18.0.5 is supported

对于 paraview 5.4.0 需要的 OpenGL 3.2,则没办法满足。根据参考资料 3,远程图形的情况有两种:

  1. 登录服务器,直接命令使用图形程序,采用的是 OpenGL 2.1,此时,所使用的 GPU 资源是本地,而不是服务器的。
  2. 使用服务器的 GPU,将会有 XSession 运行,此时可采用完整的 OpenGL 能力运行。

同时,一般服务器也不会带显示器,有时,服务器的 GPU 也没有输出接口。当服务器没有显示器时,一般是不能启动 X 服务的,因为找不到显示器。但是,你知道,系统还是可以启动的。

这个问题还是比较复杂,我也遇到过,找过很多资源,没有看到网上有这种特殊情况。因此,以下是我自己的处理过程。

安装 Nvidia 驱动

屏蔽 nouveau 显卡驱动

编辑 /etc/default/grub ,在 GRUB_CMDLINE_LINUX 行加上 nouveau.modeset=0 rd.driver.blacklist=nouveau ,如下

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet nouveau.modeset=0 rd.driver.blacklist=nouveau"

生成启动配置文件

sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

重新启动机器

安装驱动

nvidia.com 下载官方驱动,假设针对你的显卡,下载了 Nvidia.run
则使用

sudo sh Nvidia.run

安装驱动,并自动更新 xorg.conf 文件。

sudo nvidia-xconfig -a --use-display-device=None --virtual=1280x1024

设置启动方式

sudo systemctl set-default multi-user.target # 启动到多用户模式,无图形界面
sudo reboot

安装 xpra,服务器和本地均需安装

[ ~]$ cd /etc/yum.repos.d/
[ yum.repos.d]$ sudo wget https://xpra.org/repos/CentOS/xpra.repo
[ yum.repos.d]$ sudo yum install xpra -y

运行

服务器端运行

[server ~]$ sudo /usr/bin/X :0 &  # 启动 X 服务
[server ~]$ of5x
[server ~]$ cd <foam-work-dir>
[server foam-work-dir]$ xpra start :0 --use-display --exit-with-client=yes --start=paraFoam

客户端 (本地) 运行

[local ~]$ xpra attach ssh:<服务器 IP 地址>

然后就可以在本地看到在服务器 GPU 上运行的图形程序了。这时,由于采用了服务器显卡驱动所使用的 OpenGL,因此,解决了 OpenGL 版本的问题。

在本地使用 Ctrl+C 退出。然后,服务器端就会自行退出。

参考资料

  1. http://arrayfire.com/remote-off-screen-rendering-with-opengl/
  2. https://xpra.org/trac/wiki/Usage/OpenGL
  3. http://renderingpipeline.com/2012/05/remote-opengl/
3 个赞