Tensorflow: illegal instruction (core dumped) 的解決方法記錄

第二次碰到這個(gè)問(wèn)題了,之前解決之后忘記記錄了。憑借零星的記憶加上強(qiáng)大的Google終于“又”搞定了。避免下次又忘了,果斷記下來(lái)。

環(huán)境

Items Version
Operation system Ubuntu 16.04
Python 3.6.1
Tensorflow 1.12.0
Hardware virtualization KVM

問(wèn)題描述

import tensorflow時(shí)拋出如下錯(cuò)誤:

Illegal instruction (core dumped)

解決方法討論

關(guān)于問(wèn)題的討論在Github上有開(kāi)issue #17441。stackoverflow也有相關(guān)問(wèn)題回答。

總結(jié)相關(guān)回答:新版本(version >= 1.6.0)的Tensorflow binary release是在avx指令環(huán)境下編譯的。如果你的CPU不支持該類(lèi)型指令,就不能使用新版本。

這樣核心問(wèn)題就是avx了。如果硬件不支持,解決辦法很顯然有以下幾種:

  1. 降級(jí)Tensorflow版本,降到1.5或更低。不過(guò)會(huì)丟掉一些新版本的功能。
  2. 源碼編譯。老老實(shí)實(shí)從頭開(kāi)始。
  3. 換個(gè)CPU??。

而我的問(wèn)題稍不同,我是KVM虛擬機(jī)不支持avx,但是宿主機(jī)是支持的,那么事情就有轉(zhuǎn)機(jī)了??,無(wú)非是想辦法改虛擬機(jī)配置啦。

支持avx

  1. 首先確定宿主機(jī)是否支持avx的,查看宿主機(jī)CPU架構(gòu)
$ virsh capabilities 

可以看到宿主機(jī)的CPU架構(gòu)為SandyBridge,并且該架構(gòu)的<feature>是支持<feature name='avx2'/>

<capabilities>
  ...
    <cpu>
      <arch>x86_64</arch>
      <model>SandyBridge</model>
      <vendor>Intel</vendor>
      <topology sockets='1' cores='8' threads='2'/>
      <feature name='invpcid'/>
      <feature name='erms'/>
      <feature name='bmi2'/>
      <feature name='smep'/>
      <feature name='avx2'/>
      ...
    </cpu>
  ...
</capabilities>
  1. 指定虛擬機(jī)CPU架構(gòu)
$ virsh edit $YOUR_VM_NAME

<domain>內(nèi)增加<cpu>配置如下:

<domain type='kvm'>
  ...
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>SandyBridge</model>
  </cpu>
  ...
</domain>

其中,<model>填寫(xiě)步驟1中查到的CPU架構(gòu)名稱(chēng),如這里是SandyBridge。

  1. 重啟虛擬機(jī)&檢查是否生效。

進(jìn)入虛擬機(jī),查看虛擬機(jī)CPU支持的指令。

$ cat /proc/cpuinfo | grep avx

出現(xiàn)如下結(jié)果,說(shuō)明CPU已經(jīng)支持avx指令。

cpuinfo.jpg

現(xiàn)在可以開(kāi)始愉快的使用Tensorflow了。??


2021-6-5 日補(bǔ)充:
升級(jí)2.4.0之后,又雙叒core dumped了,檢查CPU的avx指令集是支持的。再次扒拉了一下issues #45744,2.4.0需要avx2指令集的支持,TF真是好棒棒嗷,這次環(huán)境的CPU不支持了,剩我留下了貧窮的淚水。

降級(jí)!降級(jí)!降級(jí)!tensorflow 2.3.1是OK的。

2021-7-13 補(bǔ)充
2.4.0的問(wèn)題,可以升級(jí)2.4.1,因?yàn)楣俜桨l(fā)布是這么說(shuō)的
Release 2.4.1 This release removes the AVX2 requirement from TF 2.4.0.
版本差別不大,趕緊升他鴨??。

參考文獻(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在 Ubuntu 上安裝 TensorFlow 本指南將介紹如何在 Ubuntu 上安裝 TensorFlow。雖...
    高山居士閱讀 4,758評(píng)論 0 6
  • 與 TensorFlow 的初次相遇 https://jorditorres.org/wp-content/upl...
    布客飛龍閱讀 4,012評(píng)論 2 89
  • 1. 介紹 首先讓我們來(lái)看看TensorFlow! 但是在我們開(kāi)始之前,我們先來(lái)看看Python API中的Ten...
    JasonJe閱讀 11,970評(píng)論 1 32
  • 做了18年老師(?。〈蠹也粫?huì)把我想像成兩鬢斑白的大媽吧?),有時(shí)會(huì)思考教師這個(gè)職業(yè)。如果沒(méi)有一些形而上的精神追求,...
    原衛(wèi)華閱讀 665評(píng)論 0 2
  • 她裹著大大的披肩窩在沙發(fā)里,喝著玫瑰花茶,看著書(shū)。書(shū)桌旁是一個(gè)架子,架子上是一排一排的藤筐??鹄镅b著干了的紅衣主教...
    花聞鈴閱讀 405評(píng)論 6 5

友情鏈接更多精彩內(nèi)容