TL;DR:
- Tensorflow 1.15 crashes on my virtual machine when imported by Python (error message is
Illegal instruction (core dumped)
), very probably thanks to AVX and AVX2 being disabled on it. - My host machine (Windows 10 64bit) has AVX and AVX2 (validated using Cygwin, see more details below) [CPU is Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz]
- On guest machine (Ubuntu 20.04 64bit using VirtualBox 6.1.16, same happens with 18.04), AVX and AVX2 are missing.
- Following advice from existing threads, I ran
VBoxManage setextradata "Ubuntu20" VBoxInternal/CPUM/IsaExts/AVX 1
andVBoxManage setextradata "Ubuntu20" VBoxInternal/CPUM/IsaExts/AVX2 1
on the host machine and restarted the guest machine - nothing changed (the guest machine's name is Ubuntu20).
any advice?
For more details:
Output of cat /proc/cpuinfo
on the host machine using Cygwin - it has avx in avx2:
.....
processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
stepping : 9
cpu MHz : 3600.000
cache size : 256 KB
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts
acpi mmx fxsr sse sse2 ss ht tm pbe pni dtes64 est tm2 ssse3 fma cx16 xtpr pdcm sse4_1 sse4_2 movbe
popcnt aes xsave osxsave avx f16c rdrand hypervisor lahf_lm ida xsaveopt pln pts dtherm fsgsbase
tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt
TLB size : 0 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
Output of cat /proc/cpuinfo
on the guest machine - avx and avx2 are missing:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
stepping : 9
microcode : 0xffffffff
cpu MHz : 3599.996
cache size : 8192 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx
fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid
tsc_known_freq pni ssse3 pcid sse4_1 sse4_2 hypervisor lahf_lm invpcid_single pti fsgsbase invpcid
md_clear flush_l1d arch_capabilities
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips : 7199.99
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
setextradata
commands. – Malliemallinsetextradata
(wrote it in the tl;dr section), but it didn't help, AVX and AVX2 are still not supported. This is visible both when executingcat /proc/cpuinfo
and when looking at the logs, which indicate the reading of the two "extradata" values I set to 1, while still later showing for both AVX and AVX2 the value 0 (1), meaning that it is disabled on the guest, while being supported by the host. – Abiogeneticavx
requiresxsave
, nested paging, and nested virtualization (SeeVBox/VMM/VMMR3/CPUMR3CpuId.cpp
). However, nested virtualization seem unavailable when Hyper-V is on, as of vbox v6.1.22. – Happygolucky