make時には気づかなかったが、実行時にこんなメッセージが…
The oneAPI toolkits no longer support 32-bit libraries, starting with the 2025.0 toolkit release. See the oneAPI release notes for more details.
oneAPIツールキットは、2025.0ツールキットリリース以降、32ビットライブラリをサポートしなくなりました。詳細については、oneAPIリリースノートを参照してください。
一応グーグル翻訳から
llama.cppのリリースb9145にてSYCL関連のコード中のoneAPI内のLevelZeroの処理を利用するようになったので出るようになったメッセージだとおもいます。
ただ、このメッセージを見て初めて気づいたのですが、バイナリって32bitコードだったのか?と。良く分かりませんが、32bitだとシステムメモリーのアドレス空間が4Gだった気がするのだが…。参考:【1秒で確認】Linuxで32bit/64bitかを確認する3つの方法(GUIも解説)
~$ getconf LONG_BIT
64
とりあえず私の実行環境は64bitっぽいですね。でもそうするとこのメッセージが何で表示されるのだろう?参考:linuxでアプリが32ビット版か64ビット版かを判定 (file, od, hexdump)
:~$ file -e elf ./LocalAIv4.2.4/backend/cpp/llama-cpp/llama-cpp-avx2
./LocalAIv4.2.4/backend/cpp/llama-cpp/llama-cpp-avx2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV)
~$ file -e elf ./LocalAIv4.2.4/local-ai
./LocalAIv4.2.4/local-ai: ELF 64-bit LSB executable, x86-64, version 1 (SYSV)
大丈夫そうだけどなぁ…念のため
~$ file -e elf ./stable-diffusion.cpp/build/bin/sd-cli
./stable-diffusion.cpp/build/bin/sd-cli: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux)
~$ file -e elf ./stable-diffusion.cpp/build-sycl/bin/sd-cli
./stable-diffusion.cpp/build-sycl/bin/sd-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV)
~$ file -e elf ./stable-diffusion.cpp/build-sycl32/bin/sd-cli
./stable-diffusion.cpp/build-sycl32/bin/sd-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV)
windowsだとサンク層とかなんとかで自動で下位ビットのバイナリを動かしてたりしますが、Linuxだとどうなんでしょうかね?→ubuntu 64bit環境で32bitプログラムを動かす
だ、そうです。sudo apt-get install lib32z1 で入れておけばいいんですか…へぇ知らなかった。
Androidですら、もう64bitに移行しちゃったはずだし、そもそもメモリー4Gって今どきのスペックでは最低ラインと言うか…いやでも4Gって結構十分な気がするんだがw
まぁ生成AIだと何もできないですねwギリ2Bモデルの量子化が動くとか動かないとかそんな気がします。
で、結局、32bitのライブラリなんてリンクしてないと思うわけですが、違うのかな?謎なメッセージで悩む…
0 件のコメント:
コメントを投稿