2020/04/16(木) [n年前の日記]
#1 [blender] LuxCoreRender 2.3 Linux版をビルドしようと試みたけど上手く行かない
無料で使える物理ベースレンダラー、
_LuxCoreRender
の 2.3 Linux版は、Intel CPUでしか動かないバイナリが公開されてしまっているっぽいのだけど。自分でビルドしたら AMD CPU (AMD A8-3850, A6-3500等)でも動くバイナリが作れるのではないかしらん、と思えてきたので試行錯誤中。
_昔の日記 によると、LuxCoreRender 2.0 の時は、以下をすることでAMD製CPUでも動いたらしい。
であれば、今回も同じ作業をすれば動くバイナリが作れるのではないか。
ちなみに、Embree というのは、Intel が提供してくれたライブラリで、レイトレーシング計算時の交差判定を高速に処理してくれるのだとか。
_Introduction to Embree
おそらく、元々がIntel製だけあって、Intel CPUでしか動かないバイナリがずっと公開されているのだろう…。たぶん。
さておき、Ubuntu 18.04 LTS + AMD A8-3850 で、ビルドできるか試してみたけど…。Embree をビルドするところまではできたけど、LuxCoreRender ダイナミックリンク版をビルドするところで詰まってしまった。 _公式 Wikiに記述されてるビルド手順 が古い内容らしくて、「oidn (Intel製ノイズ除去ライブラリ)が足りない」と言われて止まってしまう。
他にも、LuxCoreRender が使用しているライブラリのいくつかが、AVX や SSE4_2 を有効にした状態でビルドされているようで…。2.3 は 2.0 より機能が増えた分、他のライブラリへの依存度も増えていて、その分、Intel CPU に特化したバイナリが混ざってしまっているのだろうなと。
_昔の日記 によると、LuxCoreRender 2.0 の時は、以下をすることでAMD製CPUでも動いたらしい。
- Embree (libembree) を、AVX や SSE4_2 を無効にした状態でビルドする。
- LuxCoreRender をダイナミックリンク版としてビルドする。
であれば、今回も同じ作業をすれば動くバイナリが作れるのではないか。
ちなみに、Embree というのは、Intel が提供してくれたライブラリで、レイトレーシング計算時の交差判定を高速に処理してくれるのだとか。
_Introduction to Embree
おそらく、元々がIntel製だけあって、Intel CPUでしか動かないバイナリがずっと公開されているのだろう…。たぶん。
さておき、Ubuntu 18.04 LTS + AMD A8-3850 で、ビルドできるか試してみたけど…。Embree をビルドするところまではできたけど、LuxCoreRender ダイナミックリンク版をビルドするところで詰まってしまった。 _公式 Wikiに記述されてるビルド手順 が古い内容らしくて、「oidn (Intel製ノイズ除去ライブラリ)が足りない」と言われて止まってしまう。
他にも、LuxCoreRender が使用しているライブラリのいくつかが、AVX や SSE4_2 を有効にした状態でビルドされているようで…。2.3 は 2.0 より機能が増えた分、他のライブラリへの依存度も増えていて、その分、Intel CPU に特化したバイナリが混ざってしまっているのだろうなと。
[ ツッコむ ]
#2 [pc] AMD CPUのSIMD対応状況を調べたり
AMD CPU、特にAPUの、
_ストリーミングSIMD拡張命令
について調べてみたり。
自分の部屋に転がってるのは、A8-3850、A6-3500、そして Athlon II X2 250 なのだけど…。
_AMD Accelerated Processing Unit - Wikipedia
_Athlon II - Wikipedia
A8-3850、A6-3500 は、Llano世代。2011年頃の製品。AMD APUとしては第一世代なのかな。たぶん。対応しているのは…。
Athlon II X2 250 は、Regor世代。2009年頃の製品。対応しているのは…。
しかし、同じAPUと呼ばれる製品でも、例えば Trinity世代、2012年の製品、第二世代では…。
つまり、
ということで、「LuxCoreRender が動かない? お前の使ってるCPUが古過ぎるんだよ。そんなもん窓から投げ捨てろ」と言われてしまっても仕方ないような気もするわけで。
CPUだけ交換したら使えるPCにならんかな、と思ったけれど、A8-3850 や A6-3500 って Socket FM1 だから…。第二世代は Socket FM2 なのでM/Bに刺さらない。Socket FM1対応CPUって第一世代だけなのだよな…。
ちょっと待て。古いPCを有効活用できないかと悩んでいたのに、別途ハードウェアを購入することを考え始めるとか…。これでは本末転倒ではないか。
自分の部屋に転がってるのは、A8-3850、A6-3500、そして Athlon II X2 250 なのだけど…。
_AMD Accelerated Processing Unit - Wikipedia
_Athlon II - Wikipedia
A8-3850、A6-3500 は、Llano世代。2011年頃の製品。AMD APUとしては第一世代なのかな。たぶん。対応しているのは…。
MMX, Enhanced 3DNow!, SSE, SSE2, SSE3, SSE4a, AMD64, NX Bit, AMD-VAVX や SSE4.2 は未対応らしい。
Athlon II X2 250 は、Regor世代。2009年頃の製品。対応しているのは…。
MMX, Extended 3DNow!, SSE, SSE2, SSE3, SSE4a, AMD64, Cool'n'Quiet, NX bit, AMD-Vこれも、AVX や SSE4.2 は未対応。
しかし、同じAPUと呼ばれる製品でも、例えば Trinity世代、2012年の製品、第二世代では…。
MMX, SSE1 - 2 - 3 - 3s - 4.1 - 4.2 - 4a, AES, AVX, BMI1, F16C, FMA3, FMA4, TBM, XOP, AMD64, NX Bit, AMD-V, Turbo Core 3.0AVX も SSE4.2 も対応しているっぽいのだよな…。
つまり、
- Llano世代(第一世代APU)やRegor世代のAMD CPUは、AVX も SSE4.2 も未対応だから、LuxCoreRender 2.3 Linux版のバイナリは動かない。
- Trinity世代(第二世代APU)以降なら、AVX や SSE4.2 に対応してるので、ひょっとしたら LuxCoreRender 2.3 Linux版があっさり動くのかもしれない。
ということで、「LuxCoreRender が動かない? お前の使ってるCPUが古過ぎるんだよ。そんなもん窓から投げ捨てろ」と言われてしまっても仕方ないような気もするわけで。
CPUだけ交換したら使えるPCにならんかな、と思ったけれど、A8-3850 や A6-3500 って Socket FM1 だから…。第二世代は Socket FM2 なのでM/Bに刺さらない。Socket FM1対応CPUって第一世代だけなのだよな…。
ちょっと待て。古いPCを有効活用できないかと悩んでいたのに、別途ハードウェアを購入することを考え始めるとか…。これでは本末転倒ではないか。
[ ツッコむ ]
以上、1 日分です。