import tensorflow报错Illegal instruction

我是用PVE创建的虚拟机,在虚拟机里安装了tensorflow,结果import tensorflow报错Illegal instruction。

谷歌后发现,tensorflow在1.6版本之后提供的pip包均假设CPU支持AVX指令(一种加速向量运算的CPU指令),而Illegal instruction就说明CPU没有支持AVX指令。

AVX指令只有在很老的CPU才不支持,并且也没有BIOS开关,默认就是生效的,那么为什么我的电脑会报错呢?

因为我使用了PVE虚拟机,因为KVM虚拟化的CPU类型是kvm64自定义模式,kvm64模式并没有把比较新的CPU指令集开放给虚拟机,所以虚拟机内安装tensorflow会找不到对应的CPU指令集。

解决方法是改变KVM虚拟机的CPU模式为host模式,这样大部分宿主机CPU支持的指令集都会开放到虚拟机,这样虚拟机可以享受CPU的高级特性,性能会更好。

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~