caffe学习笔记,Ubuntu下编写翻译串行siesta

在Ubuntu环境下编译串行siesta,首先要准备以下几个库和软件:

Linux内核编译与安装

平台:虚拟机Ubuntu10.04

内核版本:3.0.80       


内核的编译分为两种:X86平台和ARM嵌入式平台

 

一.X86

 

平台:虚拟机Ubuntu10.04

 

内核版本:3.0.80

 

1.下载(并安装)源码:linux-3.0.08

 

 

亚洲城ca88唯一备用,网站默认的源码支持的为X86平台,下载源码解压到自定义的目录:/root(此目录是我自己建的,你尽可以解压到任意目录),解压后生成内核文件夹:linux-3.0.80

 

2.下载(并安装)终端处理库:libncurses5-dev

 

这个库用于后面的内核配置界面命令的执行环境。许多人在线安装软件包会遇到网速过慢的情况,这里建议先在“新立得软件管理”里搜索到适合自己系统的软件包版本,然后在下述网址搜索下载,最后离线安装即可。

 

网址1:

 

 

网址2:

   

 

3.内核配置:

 

终端界面,执行以下命令:

cd /root/linux-3.0.80# 进入内核根目录

make meuconfig      #进入内核配置界面

 

此时,出现如图内核配置界面:

亚洲城ca88唯一备用 1

 

上下键选择相应的选项,空格键更改相应的选项的属性:

[*]把此项编入系统内核

[M]把此项以驱动模块的形式编译。

[]不选择编译此项。

 

双击Esc后退。选择完后退出,提示是否保存,确定即可。这时候在根目录下生成一个隐藏文件:.config

 

里面以“文本”的形式记录下你的配置信息。当你后续编译的时候即按照这个文件的信息进行编译。

 

当然,你也可以直接输入:

make defaultconfig

 

来执行默认的配置信息。

 

这里还要叙述一下另外两个文件:Kcongfig和Makefie。

 

这两个文件分布在内核源码树的各个目录下,其中Kconfig构成了一个分布式的内核设置数据库,每个Kconfig描述了所属目录源文件相关的内核设置菜单。在内核设置make
menuconfig(或xconfig等)时,从Kconfig中读出菜单,用户在配置界面选择后保存到.config的内核设置文件中。在内核编译时,Makefile调用这个.config,就知道了用户的选择。

 

比如,要想添加新的驱动到内核的源码中,要修改Kconfig,这样就能选择这个驱动。如图

亚洲城ca88唯一备用 2

就是下图USB_SURPORT的菜单信息

亚洲城ca88唯一备用 3

如果想使某个驱动被编译,要修改Makefile,如图:

亚洲城ca88唯一备用 4

也就是说,Kconfig负责使你的配置菜单显示出来。而真正要想编译出来相应的模块是由Makefile来负责的。而上图中等号右边的文件名对应的c源代码,就在Makefile当下的目录下,Makefile负责引导编译这些c源代码变成相应的文件。

3.编译:

      如果是编译整个内核,直接输入:

make

而实际上,为了加快编译速度我们常常执行

make -j4

其中数字4可以理解为4线程同时编译,所以速度会快。理论上数字应为实际cpu核心+1.但是,如果你是双核的就直接写成
make -j4也是没有问题的。另外需要解释的是,你会看到一些文档的执行命令是:
make bzlmage。实际上,make命令默认的执行的是:Make bzlmage和make
modules,即编译内核和内核驱动。而生成的内核镜像zlmage在内核源码目录下:arch/x86/boot或者是arch/i386/boot.

 

而如果你只是编译驱动的话,请执行:

make modules

 

就行了。

 

4.安装:

 

安装模块:

make  modules_install

 

执行后,系统会在/lib/modules目录下生成一个3.0.8子目录,里面存放着新内核的所有可加载模块(即将编译好的modules拷贝到/lib/modules下),注意,此目录是系统的目录,不是内核源码的目录。

 

安装内核:

make install

 

执行后,即复制内核目录内的.config,vmlinuz,initrd.img,System.map文件到系统/boot目录、更新grub。

 

5.检查:

dpkg–get-selections|grep linux

 

此命令可以查看当前安装的内核版本号有哪些,从而看到我们是否把新内核安装到系统了

 

6.重启:

Reboot

 

在内核选择界面,选择内核版本号。对于不同的系统,有可能得修改一下启动引导文件。这里先不叙述。

 

好了,这就是X86内核的编译与安装。


 

二 ARM

 

平台:Ubuntu10.04 

 

交叉编译环境:arm-linux-gcc  4.5.1

 

目标开发板:友善之臂tiny210

 

内核移植版本:3.0.8

 

1.下载内核

 

2.下载终端处理库

 

3.建立交叉编译环境:

 

虚拟机上默认的系统的编译器是X86的,也就是说编译完成的内核是适用于X86机器的。所以我们必须安装交叉编译环境,使X86机器编译出的内核适用于ARM平台。一般所买的开发板都配套有开发板建立交叉编译环境的说明文档,这里我简要的说明一下:

 

1.首先把交叉编译器拷贝到Ubuntu系统任意目录:

 

在终端命令行输入:

      cd /tmp       #进入所在目录

      tar xvzfarm-linux-gcc-4.5.1-v6-vfp-20101103.tgz –C /#解压安装

 

执行后,将把arm-linux-gcc安装到/opt/FriendlyARM/toolschain/4.5.1目录

 

2.编辑环境变量:

      gedit /root/.bashrc      #打开文件.bashrc,

 

最后一行添加:

 

export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin,注意路径一定要写对,否则将不会有效。

亚洲城ca88唯一备用 5

3.注销计算机后,重新回到命令终端,执行命令:

arm-linux-gcc –v

 

会出现如下信息,这说明交叉编译环境已经成功安装

亚洲城ca88唯一备用 6

其实,你只需要看到最后一行gcc version 4.5.1就行了。

 

4.配置交叉编译器:

 

如果此时我们执行make命令来编译内核的话,系统默认的依然是调用gcc编译器来编译。执行:

gdit Makefile   #打开源码目录下的Makefile文件

 

找到下面两行:(192行左右)

亚洲城ca88唯一备用 7

修改为:

 

这个时候,我们再执行make命令,就会调用交叉编译器。

 

4.修改内核:

 

其实,原生X86的内核是不适用于ARM开发板的,一般情况下我们需要做相应的移植工作。网上关于特定开发板的内核移植有相应的文章。而实际上如果要独立的做内核移植的话,需要对linux内核和嵌入式开发有不错的理解。但是一般情况下,开发板配套的都会有适合此开发板的已经移植好的内核。所以在第一步确切的应该是:从开发板获得内核源码。而且这样获得内核源码一般会省略掉上一步中修改Makefile文件的步骤。

 

5.编译内核:

 

执行:

make -j4

 

执行完后,会在arch/arm/boot生成zlmage镜像。运用开发板配套的内核烧录工具下载到开发板即可。

 

好了,就这样!

平台:虚拟机Ubuntu10.04

官方安装手册

在Ubuntu的软件管理中可以方便的安装:fftw、gfortran,最好有mpi、scalapack、blacs……支持并行编译的工具。

内核版本:3.0.80

内…

备注:使用系统 – Ubuntu 15.04
64位操作系统(若系统位于虚拟机上,在安装CUDA后,Ubuntu将无法进入图形界面)

进入Src目录并配置如下:

/**************************************************/

$cd siesta/Src/

//准备工作:CUDA,OpenBLAS/ATLAS,Boost, protobuf,OpenCV, Python

$./configure

/**************************************************/

这时会生成安装文件,arch.make。

方法一:

打开看一下配置,并根据自己的机器进行修改。如果前面的库和软件都安装好了的话,一般就可以直接编译了:

Ubuntu系统上安装caffe官方手册(第一次安装时竟没看到这个神器。。。)

$make

  1. 基本依赖项

也可以从Src/Sys/中找和自己机器相同配置的文件,输入以下命令:

$sudo apt-get install libprotobuf-dev  libleveldb-dev  libsnappy-dev 
libopencv-dev  libhdf5-serial-dev  protobuf-compiler

$cp *.make ../arch.make

$sudo apt-get install –no-install-recommends  libboost-all-dev

$cd ..

  1. CUDA(使用方法二安装)

  2. BLAS

$make

若选择使用ATLAS:$sudo apt-get install libatlas-base-dev(安装较方便)

编译成功之后会生成siesta的执行文件

若选择使用OpenBLAS 则参考方法二安装;

在计算目录下输入一下命令:

  1. Python(可选)

$siesta *.fdf | tee *.out

若需要使用Python,则$sudo apt-get install python-dev
安装pycaffe接口的Python头文件;

亚洲城ca88唯一备用 8

+方法二中的Python安装;

  1. 剩余依赖项 (14.04及以上)

$sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

 

 

方法二:(因为系统空间问题失败。。。)

  1. CUDA –
    是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题

download

0.1 选择操作系统和安装类型

亚洲城ca88唯一备用 9

0.2 deb(network)方式的安装

亚洲城ca88唯一备用 10

下载上图所示软件到Ubuntu中;

执行后面3行命令即可;

 

  1. OpenBLAS –
    基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序

download

1.1 下载.zip / .tar.gz文件,解压;

1.2 安装命令

$sudo make

$sudo make PREFIX=/path/to/your/installation install

[1.3 将生成的.so库文件放入系统/lib文件夹中](可选步骤);

 

  1. Boost库-为C++语言提供的扩展的C++程序库

download

方法一:(失败)

2.1 下载boost_1_60_0.tar.gz文件,解压;

2.2 安装命令

执行$sudo ./bootstrap.sh 编译成功;

执行$sudo ./bjam 开始编译,大约十几分钟,编译完成后出现:The Boost C++
Libraries were successfully built!

方法二:

直接执行命令:

$apt-cache search boost :搜索所有的boost库

$sudo apt-get install libboost-all-dev:安装相应的库

2.3 测试代码:利用boost库将字符串转换成整数

1 #include<iostream>
2 #include<boost/lexical_cast.hpp>
3 int main()
4 {
5    int a = boost::lexical_cast<int>("123456");
6    std::cout << a <<std::endl;
7    return 0;
8 }

 

 

  1. protobuf – protocol
    buffer:google的一种数据交换的格式

方法一:根据源码安装(失败)

download

3.1 下载,并解压;

3.2 安装命令

C++下安装指南

安装编译工具$sudo apt-get install autoconf automake libtool curl

执行$./autogen.sh 生成configure脚本;

失败未解决:

提示 – Google Mock not present.  Fetching gmock-1.7.0 from the web…
未成功

解决:是否需要安装Google Mock?Google
Mock安装指南 

 

开始编译:

$./configure

$make

$make check

$sudo make install

$sudo ldconfig # refresh shared library cache.

 方法二:(成功)

sudo apt-get install protobuf-compiler

 

  1. OpenCV(安装时间较长)

利用自动脚本安装(脚本地址)

Ubuntu执行:

$cd Ubuntu

$chmod +x *

$./opencv_latest.sh

 

  1. Python(安装时间较长)

Ubuntu中缺省安装了Python;

执行$sudo apt-get install python-pip
安装pip(Python的一个安装和管理扩展库的工具);

下载caffe,解压,再进入python文件夹下,执行$ for req in
$(requirements.txt); do pip install $req; done
操作,安装caffe中对Python的依赖项;“

 

/*****************************/

//安装caffe

/****************************/

download

关键在于正确配置Makefile.config文件:

cp Makefile.config.example Makefile.config

根据情况修改配置:

CUDA_DIR;

BLAS:=open;(使用OpenBLAS)

未使用python接口则将对应的参数注释掉;

INCLUDE_DIRS和LIBRARY_DIRS下需要加入caffe所需要的所有头文件和库目录的文件夹地址;

 

配置完成后,执行命令:(这部分操作中使用的是cmake)

$make all – 编译生成caffe的库文件_caffe.so

 

相关文章