2018/05/19(土) [n年前の日記]
#1 [ubuntu][blender] AMD製CPU + Ubuntu 14.04 LTS上で LuxCoreRender の Static link版をビルドできるか実験
AMD A6-3500 + Ubuntu 14.04 LTS 上で、LuxCoreRender のスタティックリンク版をビルドできるか試してみたり。
ビルド手順は、以下で紹介されてる。
_Compiling LuxCore - LuxCoreRender Wiki
おそらくビルドに必要になりそうなパッケージをインストール。
紹介されてる手順通りに作業。
Ubuntu 16.04 上で試した時は、途中で libstdc++.a が見当たらない的なエラーが出て処理が進まなかったけど。Ubuntu 14.04 上ならビルド自体はスルスルと進んでくれた。
しかし、出来上がった luxcoreui を実行してみたら Illegal instruction と表示されてcore dump。公式サイトで配布されてるバイナリと似たような動作結果になった。
ビルド手順は、以下で紹介されてる。
_Compiling LuxCore - LuxCoreRender Wiki
おそらくビルドに必要になりそうなパッケージをインストール。
sudo apt update sudo apt install git cmake g++ flex bison libbz2-dev libopenimageio-dev libtiff5-dev libpng12-dev libgtk-3-dev libopenexr-dev libgl1-mesa-dev python3-dev python3-pip libboost-all-dev sudo apt install libtbb2 libtbb-dev sudo apt install cmake-curses-gui libtbb-dev sudo apt install libxmu-dev libxi-dev sudo apt install libtool sudo apt install cmake3 cmake3-curses-gui cmake3-data sudo apt install mesa-utils mesa-utils-extra途中で cmake 3.x を要求されるので、cmake3 をインストールしないといけない…。
紹介されてる手順通りに作業。
git clone https://github.com/LuxCoreRender/LinuxCompile.git cd LinuxCompile git clone https://github.com/LuxCoreRender/LuxCore.git ./build-64-sse2 LuxCore
Ubuntu 16.04 上で試した時は、途中で libstdc++.a が見当たらない的なエラーが出て処理が進まなかったけど。Ubuntu 14.04 上ならビルド自体はスルスルと進んでくれた。
しかし、出来上がった luxcoreui を実行してみたら Illegal instruction と表示されてcore dump。公式サイトで配布されてるバイナリと似たような動作結果になった。
◎ embreeが原因じゃないだろうか。 :
LinuxCompile/distfiles/ の中に、embree-2.17.1.x86_64.linux.tar.gz というファイルがあるのだけど、この圧縮ファイルの中身を覗くと、embree-config.cmake というファイルがある。その中で色々なオプションが列挙されてるけど…。SSE42、AVX、AVX2 がONになった状態でビルドされている。
例えば以下のページを眺めると…。
_Intel Core i3 3220 vs AMD A6 3500
AMD製CPUは、SSE42、AVX、AVX2、etc はサポートしてない。おそらくこれが原因で動かないのではないかなと。
それにしても、SSE42 や AVX って、Intel Core2Duo ですらサポートしてるんだな…。
_Intel Core2 Duo E8400 vs AMD Athlon II X2 250
ただ、AVX2 は Intel Haswell CPU から対応してるみたいだけど。
_ASCII.jp:インテルCPU進化論 Haswellで導入されるCPUの改良 後編 (1/4)|ロードマップでわかる!当世プロセッサー事情
つまり、現在配布されてる LuxCoreRender のLinux向けバイナリは、Intel製CPU、しかも Haswell世代以降でしか動かない版になっている。たぶん。
であれば…。embree のビルドオプションを、AVX、AVX2、SSE42 を使わないように変更してビルドして、それを使って LuxCore をビルドしてみたらどうなるだろう。やり方が分からんけど。
例えば以下のページを眺めると…。
_Intel Core i3 3220 vs AMD A6 3500
AMD製CPUは、SSE42、AVX、AVX2、etc はサポートしてない。おそらくこれが原因で動かないのではないかなと。
それにしても、SSE42 や AVX って、Intel Core2Duo ですらサポートしてるんだな…。
_Intel Core2 Duo E8400 vs AMD Athlon II X2 250
ただ、AVX2 は Intel Haswell CPU から対応してるみたいだけど。
_ASCII.jp:インテルCPU進化論 Haswellで導入されるCPUの改良 後編 (1/4)|ロードマップでわかる!当世プロセッサー事情
つまり、現在配布されてる LuxCoreRender のLinux向けバイナリは、Intel製CPU、しかも Haswell世代以降でしか動かない版になっている。たぶん。
であれば…。embree のビルドオプションを、AVX、AVX2、SSE42 を使わないように変更してビルドして、それを使って LuxCore をビルドしてみたらどうなるだろう。やり方が分からんけど。
◎ Ubuntu 14.04 と 16.04 は Python のバージョンが違うので問題が発生する。 :
作業していて気が付いたけど。Ubuntu 14.04 LTS は Python 3.4 がインストールされるけど、Ubuntu 16.04 LTS は Python 3.5 がインストールされるのだな…。
この違いは、Python で使えるGUIライブラリ、PySide のインストールに絡んでくるので、ちょっとマズイ。PySide は Python 3.4 までしか対応してなくて、Python 3.5 は未対応。そして、LuxCoreRender は、各所で PySide を要求してくるわけで…。
BlendLux を、Ubuntu 16.04 LTS + blender 2.79b にインストールして、ネットワークレンダリング用のボタンをクリックすると、「PySide をインストールしろや。sudo pip3 install PySide でインストールできるで。インストールしろや」と言ってくる。しかし、実際にインストールを試すとエラーが出てしまう。 *1
おそらく、LuxCoreRender の開発者は せいぜい Ubuntu 14.04 LTS でしか動作確認してないのだろう…。
このあたり、どうもモヤモヤする。LuxRender 1.6 の頃は、端末上で luxconsole -s と打つだけでネットワークレンダリング・分散レンダリングができた。余ってるPCが転がってれば、USBメモリからLinuxを起動して、端末上で一文を打ち込むだけでレンダリング処理の手伝いをしてくれた…。
LuxCoreRender 2.0 になったら、GUIが表示できる環境を要求されて、しかもディストリのバージョンによっては、PySide が pip でインストールできないのに、「pip でインストールしろ」と要求してくる…。これはどう考えても改悪じゃないのだろうか。GUIは要らんやろ。CUIでええやん。
もっとも、それ以前に、肝心のレンダリング処理をする部分が、比較的新しいIntel製CPU上でしか動きそうにないあたりがアレだけど。
この違いは、Python で使えるGUIライブラリ、PySide のインストールに絡んでくるので、ちょっとマズイ。PySide は Python 3.4 までしか対応してなくて、Python 3.5 は未対応。そして、LuxCoreRender は、各所で PySide を要求してくるわけで…。
BlendLux を、Ubuntu 16.04 LTS + blender 2.79b にインストールして、ネットワークレンダリング用のボタンをクリックすると、「PySide をインストールしろや。sudo pip3 install PySide でインストールできるで。インストールしろや」と言ってくる。しかし、実際にインストールを試すとエラーが出てしまう。 *1
おそらく、LuxCoreRender の開発者は せいぜい Ubuntu 14.04 LTS でしか動作確認してないのだろう…。
このあたり、どうもモヤモヤする。LuxRender 1.6 の頃は、端末上で luxconsole -s と打つだけでネットワークレンダリング・分散レンダリングができた。余ってるPCが転がってれば、USBメモリからLinuxを起動して、端末上で一文を打ち込むだけでレンダリング処理の手伝いをしてくれた…。
LuxCoreRender 2.0 になったら、GUIが表示できる環境を要求されて、しかもディストリのバージョンによっては、PySide が pip でインストールできないのに、「pip でインストールしろ」と要求してくる…。これはどう考えても改悪じゃないのだろうか。GUIは要らんやろ。CUIでええやん。
もっとも、それ以前に、肝心のレンダリング処理をする部分が、比較的新しいIntel製CPU上でしか動きそうにないあたりがアレだけど。
*1: ただ、Ubuntu 16.04 LTS の場合、別途パッケージが存在していて、sudo apt install python3-pyside で PySide をインストールすることはできる。あくまで、pip(pip3)経由でインストールできない、という話で…。しかし、BlendLux は、何故か pip経由でインストールされたかどうかに拘るわけで…。
[ ツッコむ ]
以上です。