mxnet

转载 2016年06月02日 11:10:41

STEP 1

http://m.blog.csdn.net/article/details?id=50260419  #MXnet实战深度学习1--MXnet的安装与第一个例子
[Make sure  all the rely-on lib have been installed. otherwise

sudo apt-get install libatlas-base-dev

]

STEP 2

   安装 cblas [ lapack, lapacke ]

   BLAS(Basic Linear Algebra Subprograms)库,是用Fortran语言实现的向量和矩阵运算库,是许多数值计算软件库的核心, 但也有一些其它的包装, 如cblas是C语言, 也有C++的包装, boost/ublas 是C++ template class的实现; 另外还有一些特别的实现, 如intel MKL, AMD core math library blas就是做向量、矩阵的基本运算,如加、减、乘等操作。CBLAS是BLAS的C语言接口。 LAPACK(Linear Algebra PACKage)库,是用Fortran语言编写的线性代数计算库,包含线性方程组求解(AX=b)、矩阵分解、矩阵求逆、求矩阵特征值、奇异值等。该库用BLAS库做底层运算,许多高层的数学库都用BLAS和LAPACK做底层。CBLAS只是BLAS的C语言版本,所以CBLAS安装需要先装BLAS

1.确保机器上安装了gfortran编译器,如果没有安装的话,可以使用sudo apt-get install gfortran
2.下载blas, cblas, lapack 源代码, 这些源码都可以在 http://www.netlib.org 上找到,下载并解压。这里提供我安装时的下载链接 http://www.netlib.org/blas/blas.tgz http://www.netlib.org/blas/blast-forum/cblas.tgz http://www.netlib.org/lapack/lapack-3.4.2.tgz,解压之后会有三个文件夹,BLAS, CBLAS, lapack-3.4.2
3.这里就是具体的编译步骤
1)编译blas, 进入BLAS文件夹,执行以下几条命令


    gfortran -c  -O3 *.f  # 编译所有的 .f 文件,生成 .o文件  

    ar rv libblas.a *.o  # 链接所有的 .o文件,生成 .a 文件  
    su cp libblas.a /usr/local/lib  # 将库文件复制到系统库目录  


2)编译cblas, 进入CBLAS文件夹,首先根据你自己的计算机平台,将目录下某个 Makefile.XXX 复制为 Makefile.in , XXX表示计算机的平台,如果是Linux,那么就将Makefile.LINUX 复制为 Makefile.in,然后执行以下命令


    cp ../BLAS/libblas.a  testing  # 将上一步编译成功的 libblas.a 复制到 CBLAS目录下的testing子目录  

    make # 编译所有的目录  
    sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 将库文件复制到系统库目录下  


3)编译 lapack以及lapacke,这一步比较麻烦,首先当然是进入lapack-3.4.2文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX 复制一份到 lapack-3.4.2目录下,并命名为make.inc, 这里我复制的是 INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器。修改lapack-3.4.2/Makefile, 因为lapack以来于blas库,所以需要做如下修改


    #lib: lapacklib tmglib
    lib: blaslib variants lapacklig tmglib
    make # 编译所有的lapack文件  
    cd lapacke # 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件  
    make # 编译lapacke  
    cp include/*.h /usr/local/include #将lapacke的头文件复制到系统头文件目录  
    cd .. #返回到 lapack-3.4.2 目录  
    cp *.a /usr/local/lib # 将生成的所有库文件复制到系统库目录  

这里的头文件包括: lapacke.h, lapacke_config.h, lapacke_mangling.h, lapacke_mangling_with_flags.h lapacke_utils.h
生成的库文件包括:liblapack.a, liblapacke.a, librefblas.a, libtmglib.a

至此cblas和lapack就成功安装到你的电脑上了。

测试.可以到 LAPACKE 找测试代码,这里是lapacke的官方文档,比如以下代码:

    #include <stdio.h>  
    #include <lapacke.h> 
    int main (int argc, const char * argv[])  
    {  
       double a[5*3] = {1,2,3,4,5,1,3,5,2,4,1,4,2,5,3};  
       double b[5*2] = {-10,12,14,16,18,-3,14,12,16,16};  
       lapack_int info,m,n,lda,ldb,nrhs;  
       int i,j; 
       m = 5;  
       n = 3;  
       nrhs = 2;  
       lda = 5;  
       ldb = 5;
       info = LAPACKE_dgels(LAPACK_COL_MAJOR,'N',m,n,nrhs,a,lda,b,ldb);  
       for(i=0;i<n;i++)  
       {  
          for(j=0;j<nrhs;j++)  
          {  
             printf("%lf ",b[i+ldb*j]);  
          }  
          printf("\n");  
       }  
       return(info);  
    } 

将上诉代码保存为test.c,编译时,别忘了使用gfortran,此外,还需要连接用到的库,编译上面的代码,应使用如下命令:

    gfortran test.c -llapacke -llapack -lrefblas 

如果能正常编译,即表示安装成功。如果要了解这段代码的具体含义,可以到 LAPACKE  查看.


[STEP 3]

While using Spyder or other Ipython-based IDE , you perhaps find that the system $PATH cannot act as well as in the raw python envirement ,such as cuda\bin or other config path could not take effect, so you cannot run theano or mxnet using GPU  mode. The simplest solution (maybe not safety) is to modify file "profile" which is located in '/etc/' folder.

$cd /

$chmod 777 etc      

$cd etc

$chmod 777 profile 

$gedit profile

#add the same ~/.bashrc config context

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

$source profile

[You may need root privilege when some ops above]

RESTART your computer. [Perhaps essential]


GOOD LUCK!



举报

相关文章推荐

centos 7.1下部署MXNet (包括多节点环境及运行)

centos下安装部署MXNet环境(单节点及多节点),数据转换方法,并运行实例

mxnet实战之艺术画

接着上一篇文章,在装好cuda7.5后。我们用mxnet来测试一下。 Neural art:用机器模仿著名画家 1.说明 MXnet的neural art范例在mxnet/example/ne...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

MXNet的训练基础脚本:base_module.py

写在前面:在MXNet中有一个很重要的脚本:base_module.py,这个脚本中的BaseModule类定义了和模型实现相关的框架。另外还有一个脚本module.py会在另外一篇博客中讲,这个类继...

mxnet学习记录【1】

由于caffe依赖性太多,配置极其复杂,所以将接下来的学习转向mxnet.因此本文主要记录我的学习历程,如果描述有什么问题,欢迎大家的指正。mxnet的优点很明显,简洁灵活效率高 ,多机多卡支持好。m...

MXNet学习8——自己写operator实现Logistic Regression

概要上一篇博客介绍了Logistic Regression,其中最主要的symbol是官方已经实现好的例子,不知道细节是怎么样的,而且结果看着十分奇怪,所以打算自己实现一个,参考官方的例子,How t...

mxnet下如何查看中间结果

查看权重在训练过程中,有时候我们为了debug而需要查看中间某一步的权重信息,在mxnet中,我们可以很方便的调用get_params()方法来得到权重信息。''' 查看权重示例代码 转载时注明地址:...

mxnet学习(3)--填坑之旅(持续更新)

最近在用mxnet重写代码,因为之前的代码因为集群问题没法跑了,想方设法找到一个可以在集群跑的框架,只有mxnet。于是 就开始了填坑之旅。想着开篇文章记录一下这个过程,用于以后查阅,反省。  关于...

MXNet数据加载

本篇博客主要讲讲MXNet如何加载数据的,因为它自己实现了一个方便的数据加载的方法。当然最全面的还是去看MXNet的官方文档了,这里主要是简单介绍一下,外加一些自己实验的结果。目录目录 一介绍 二从原...

MXNET安装

按照官方的说法安装:sudo apt-get update sudo apt-get install -y build-essential git libblas-dev libopencv-dev...
  • prahs
  • prahs
  • 2016-08-11 17:11
  • 840

MXNet的训练实现脚本:module.py

前面一篇博客:MXNet的训练基础脚本:base_module.py提到MXNet中很重要的一个脚本base_module.py,这里面定义了基本的BaseModule类,而本篇博客提到的module...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)