mayavi与X11的一些坑总结

1. Mayavi:https://docs.enthought.com/mayavi/mayavi/

适合渲染各种和图形有关的数据。在大批量处理数据时,一般不希望对每一个渲染好的对象都将其显示出来,(如1万个图形显示一万次窗口,电脑会先疯掉的)

则可以设置offscreen,不让图形渲染的窗口显示出来。详见https://docs.enthought.com/mayavi/mayavi/tips.html#off-screen-rendering

mayavi的mlab,会在几乎每一次调用(包括import时)都创建一个python“图形化”进程,即使使用了offscreen也会创建“图形化”进程,只不过这时没有显示出窗口,但这个进程的属性仍然是“图形化”属性,它会试图调用和OpenGL相关的一个包来进行渲染(虽然不显示出来,但是例如投影射线等操作还是需要进行渲染计算的)

本来是在mac上运行程序的,没什么问题就是特别烫。后来放在服务器1上面,但是一直显示"cannot create glx context"

这是由于服务器1上的显卡适用于科学计算,不适用于图形渲染

 

于是选择了服务器2,上面的GPU是游戏显卡,全能型选手。于是就遇到了新的坑

 

2. X11与docker

服务器2是用docker进行管理的,大家都有sudo权限,但相互不影响,每个人都是在一个独立的容器里运行的。

此时试图运行offscreen后的渲染程序,报错xhost: unable to open display ":0.0"

这是由于目前试图在display 0 上显示东西,但是display 0并不是我们当前用户的权限能够调用的

于是果断切换到root用户(输入su,然后输密码即可),并切换到相应的python虚拟环境中运行渲染程序

然后有新的报错:

X11 forwarding request failed on channel 0

解决方法:https://www.cyberciti.biz/faq/how-to-fix-x11-forwarding-request-failed-on-channel-0/

注意ubuntu系统中不是sshd,是ssh,所以在修改完配置文件后,应该输入

/etc/init.d/ssh reload

否则会显示找不到sshd这个文件

如果遇到以下问题,说明当前用户下没有X授权文件(即.Xauthority),

: “X11 proxy: wrong authorisation protocol attempted"

从你的用户目录拷贝到root目录就行了

参考:https://superuser.com/questions/610084/putty-x11-proxy-wrong-authorisation-protocol-attempted

比如 

cp /home/name/.Xauthority /root/

 

总的来说,遇到问题多用英文去搜索,并且要耐下性子去看英文的长篇回答,

不要迷信权威,要多去调查,减少信息不对称

 

posted on 2018-08-04 20:04  Oliver-cs  阅读(1450)  评论(0编辑  收藏  举报

导航