xDroid's Blog

Matlab 使用 OpenGL 硬件加速

删掉了几个开头之后决定文明用语

问题是这样的,在 Linux 下 Matlab 默认使用 OpenGL 的软件加速进行渲染(至少英文直译过来是这样的)。
但是总归看着图上的锯齿很蛋疼啊,怎么办呢。

第一反应:我把 n 卡屏蔽了,开 optirun 呗。

开就开。

$ optirun glxgears -info
[ 1914.305050] [ERROR]Cannot access secondary GPU - error: Could not load GPU driver
[ 1914.305086] [ERROR]Aborting because fallback start is disabled.

???怎么就用不了了呢?

开机启动 bumblebeed 服务……好,重启之后直接整个系统 down 掉了。

那可能是 X 服务没有识别 n 卡设备(因为 modprobe -r nvidia 也报错嘛),那加一个 /etc/X11/xorg.conf.d/10-nvidia.conf
重启之后卡在了 lightdm 登录界面前面(进 tty 抢救一下)。


转念一想虽然核显辣鸡但是好坏也能硬件加速啊,于是寻找玄学。

功夫不负有心人,发现大概是 Matlab 自带的 GL 库太辣鸡,只要链接到系统的库上就可以了。

sudo ln -s /usr/lib/libGLU.so.1 libGLU.so.1
sudo ln -s /usr/lib/libGL.so.1 libGL.so.1

但是,且慢!还需要进行 玄学 配置

$ export LD_PRELOAD=/usr/lib/libstdc++.so; export LD_LIBRARY_PATH=/usr/lib/xorg/modules/dri/; /usr/bin/matlab -nodesktop -nosplash -r "opengl info; exit" | grep Software 
Software: 'false'

脑子坏掉了在 $PATH 里建了这个叫 matlab 的脚本

$ cat ~/bin/matlab
export LD_PRELOAD=/usr/lib/libstdc++.so
export LD_LIBRARY_PATH=/usr/lib/xorg/modules/dri/
matlab

Ref