Linux安装MXNet

  最近安装MXNet碰到了一些问题,这里记录一下解决方案。

  1、通过官网的给的pip方式安装,安装之后导入出现错误Illegal instruction (core dumped)。更换了几个版本(1.6, 1.7, 1.8)都报同样的错误。查找之后发现,是因为mxnet pip安装支持编码集是avx,但是当前的服务器不支持。
  可以通过cat /proc/cpuinfo查看支持的编码集:

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 syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts md_clear flush_l1d

  解决方案:本来打算通过源码编译安装。但是,试了试最新的1.9版本,居然导入成功,这样节省了很多时间。

  2、安装之后在控制台可以导入MXNet成功



  但是,在pycharm中使用的时候会报如下错误:

OSError: /home/djzheng/anaconda3/envs/insightface/lib/python3.7/site-packages/mxnet/libmxnet.so: symbol cudnnDestroyRNNDataDescriptor, version libcudnn.so.7 not defined in file libcudnn.so.7 with link time reference

  从报错的信息来看,是因为加载cudnn库失败。但是在控制台终端可以加载,说明环境存在,但是pycharm没加载到。于是,查看当前conda虚拟环境加载了哪些环境变量,发现cuda的环境变量已经被加载:



  然后,问题找到这里就被卡住了。网上找了一些资料,也都是说cuda的环境问题。但是这里已经被加载了。折腾了很长时间,突然发现报错信息里的描述version libcudnn.so.7 not defined in file libcudnn.so.7 with link time reference,说是加载不到cudnn7.0。到这里终于找到问题,是cudnn的版本问题。因为机器上装了多个版本的cuda,而这里的/usr/local/cuda/binusr/local/cuda/lib64都只是软链接,指向当前使用的cuda版本(CUDA 10.1,cuDNN v8.0.5)。也就是说cudnn的版本不匹配。
  从这里可以推测出,mxnet-1.9.0的cuda10.1版本需要的cudnn版本是7.0。然后,发现机器上安装的cuda10.0用的是cudnn7.0。所以,这里直接修改pycharm中加载的LD_LIBRARY_PATH目录,让其指向cudnn7.0:


  修改之后,重新import,发现可以加载成功。

参考:
http://www.4k8k.xyz/article/jinhao_2008/104060814
https://mxnet.apache.org/versions/1.9.0/get_started?version=v1.9.0&platform=linux&language=python&processor=gpu&environ=pip&
https://www.likecs.com/show-203509918.html
https://blog.csdn.net/uniqueyyc/article/details/88122204
https://discuss.gluon.ai/t/topic/2599

你可能感兴趣的:(Linux安装MXNet)