mxnet

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!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值