Spark Deeplearning4j 运行问题-“unable to load from [netlib-native_system-linux-x86_64.so]”

Deeplearning4J最新的版本(2015-11-4),重新编译后,运行scene-classification-spark下的SparkMnist程序出现unable to load from [netlib-native_system-linux-x86_64.so]等如下问题。

1)15/11/04 09:49:42 WARN scheduler.TaskSetManager: Lost task 4.0 in stage 0.0 (TID 4, 10.0.71.18): java.lang.ExceptionInInitializerError: unable to load from [netlib-native_system-linux-x86_64.so]
at com.github.fommil.jni.JniLoader.load(JniLoader.java:81)
at com.github.fommil.netlib.NativeSystemBLAS.<clinit>(NativeSystemBLAS.java:42)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.nd4j.linalg.cpu.BlasWrapper.<clinit>(BlasWrapper.java:47)

2)15/11/04 09:49:42 WARN scheduler.TaskSetManager: Lost task 2.0 in stage 0.0 (TID 2, 10.0.71.18): java.lang.NoClassDefFoundError: Could not initialize class org.nd4j.linalg.cpu.NDArray
at java.io.ObjectStreamClass.hasStaticInitializer(Native Method)
at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1743)
at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:72)
at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:250)
at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:248)
at java.security.AccessController.doPrivileged(Native Method)


原因是Spark的主节点以及data节点上没有安装合适的netlib-java库,导致程序运行过程中,由于找不到合适的blas函数库而中断。

解决方法就是在每个节点上将这些库装上。

针对ubuntu 14.04系统

1) 安装g++编译器

sudo apt-get install -y g++

2)安装gfortran编译器

sudo apt-get install -y gfortran

3) 安装blas库

sudo apt-get install -y libatlas3-base libopenblas-base

sudo apt-get install -y libopenblas-dev libatlas-base-dev libblas-dev

sudo apt-get install -y liblapack-dev

关联合适的 libblas*.so库

sudo update-alternatives --config libblas.so

sudo update-alternatives --config libblas.so.3

sudo update-alternatives --config liblapack.so

sudo update-alternatives --config liblapack.so.3


上述步骤走完后,再运行程序,上述问题消失。

这是针对Ubuntu 14.04采用openblas、atlas等native库的解决方案。

当然还有其它解决方案(见参考文献),针对不同的系统以及不同的函数库如MKL,需要采取不同的方式。


参考:

1 https://github.com/fommil/netlib-java#machine-optimised-system-libraries

2 http://apache-spark-user-list.1001560.n3.nabble.com/Native-library-can-not-be-loaded-when-using-Mllib-PCA-td7042.html

3 https://github.com/fommil/netlib-java/issues/62

4 https://github.com/fommil/netlib-java/




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值