Python 仮想環境を使う
Illegal instruction (コアダンプ) 問題の整理
ここまでで Illegal instruction(コアダンプ)問題は回避することができたのですが、ものすごく苦労しました。
一時は諦めました。
そもそも AVX は Intel 社が始めたものでここへ来て止めるのは生んだ子を捨てるようなものです。
到底許されません。
AVX は、米インテル(Intel)社の CPU(マイクロプロセッサ/MPU)に実装された拡張命令セットの一つで
複数のデータに一度に同じ演算を行う SIMD 方式の処理を実行するためのもの。
2011年に登場した Sandy Bridgeマイクロアーキテクチャ製品以降に搭載されています。
AVX は第2世代の Core-i シリーズである Sandy Bride(2011)からサポートしており
浮動小数点演算に関してはここから AVX 命令が使えます。
AMD では Zen4 で AVX-512 に正式対応。
しかし、インテルはその後に BIOS アップデートで AVX-512 自体を無効にし、
さらには2022年以降の出荷ロット(私の PC はこれに該当)は物理的に無効化を施すなど
「一般向け CPU では使わせない」意向を示しています。
第13世代ではデフォルトで AVX-512 に対応しないことが発表されています。
私の PC はなぜ Illegal instruction になるのか
私の PC が Illegal instruction になるのかもう少し調べてみました。
うちの PC で使える CPU 拡張命令セットはどれ?
に行くと使用可能な CPU 拡張命令セットを調べることができます。
その結果は下記のようになりました。
12th Gen Intel(R) Core(TM) i7-12700 MMX yes SSE yes SSE2 yes SSE3 yes SSSE3 yes SSE4.1 yes SSE4.2 yes AESNI yes PCLMULQDQ yes AVX CPU: yes OS:yes F16C CPU: yes OS:yes AVX2 CPU: yes OS:yes FMA CPU: yes OS:yes SHA yes AVX512F no AVX512CD no AVX512DQ no AVX512BW no AVX512VL no AVX512ER no AVX512PF no
SSE4.* が使えて、AVX512** は使えない結果に
AVX* CPU ではあるようなのですが、物理的に無効化しているようです。
よく調べてから PC を購入すべきでした。
後の祭りでした。
base 仮想環境に TensorFlow-gpu インストール
私の PC の装置構成は
FMV ESPRIMO WD2/G3
CPU : Core i7-12700
GPU : NVIDIA GeForce GTX1650
OS 構成は
Windows11
VirtualBox7
Ubuntu 22.04LTS
となっています。
ここに GPUドライバをインストールします。
しかしこれが大きな問題でした。
OS が仮想マシンで実行されている場合、ゲスト OS(Ubuntu)のグラフィックスドライバーも仮想です。
VirtualBox のゲスト OS に Nvidia グラフィックスドライバーをインストールまたは使用することはできないのです。
散々苦労したあげく諦めました。
解決策は Windows11 と Ubuntu 22.04LTS のデュアルブートにするしかないようです。
または、Windows11 に Anaconda + Jupter Notebook 環境を作成し
TensorFlow(GPU) をインストールすることをお勧めします。
どうしても仮想環境上の Ubuntu から GPU を利用したい場合
WSL で GPU パススルーを行うことができるようです。
仮想環境のUbuntuからのGPU利用【WSL on Windows 11】
を参照してください。
ここまで、tensorflow Illegal instruction (コアダンプ)回避方法について説明してきました。
最後までお読みいただき、ありがとうございました。