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 阅读(1504) 评论(0) 编辑 收藏 举报