リモートPC(Ubuntu20.04)でVirtualGLを設定した環境において、Maltabを動作させる方法について記録しておきます。

単に起動しただけではplotやsimulinkの起動でクラッシュするので注意が必要です。

環境について

  • OS: Linux (Ubuntu 20.04 LTS)
  • CPU: AMD Ryzen
  • MEM: 16GB
  • GPU: Nvidia Geforce GTX 1660
    • nvidia-dirver 470.xをインストール済
  • すでにsshd設定済み

前の記事で既にVirutalGL、VNCなどは設定済みです。

Matlabのクラッシュ問題

本環境では~/.vnc/xstartupvglrun startlxdeにてVNCでVirtualGL環境を用意していますが、VNC接続後にMaltabを起動するといくつか問題がありました。

Maltabを起動した場合、ロゴが表示されてその後ウィンドウが立ち上がり、画像に関連しない処理であれば動かすことが出来ます。

しかし、plot関数やSimulinkなどの起動のようにOpenGLを利用する機能においては、Segmentation violation detected at...とでてクラッシュしてしまいます。

クラッシュの原因

Maltabはソフトウェア内蔵のOpenGLを利用する関係でVirtualGLが正常に機能しないようです。

Maltabに限らず、いくつかの有名どころのソフトウェアはVirtualGLドキュメントに起動方法が書いてあるので、参考にするとよさそうです。

例えばMaltabだと以下のように起動する必要があります。

vglrun /usr/local/MATLAB/R2022a/bin/matlab -nosoftwareopengl

上記コマンドで起動したMaltabにおいては、plotやSimulinkは問題なく動作することが出来ました。

ただ、このコマンドを毎回入力するのも面倒なのでエイリアスを登録しておきます。.bashrcへエイリアスを登録しておきます。

alias matlab='vglrun /usr/local/MATLAB/R2022a/bin/matlab -nosoftwareopengl'

まとめ

  • VirtualGL + TigerVNCのMaltabでクラッシュ
  • 内蔵OpenGLを使っていたのが原因
  • vglrunで起動時にオプション設定で対処可能