Monday, September 28, 2015

install caffe on nvidia jetson tk1 (ubuntu 14.04)

[1] install cuda 

wget -c http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda-repo-l4t-r21.2-6-5-prod_6.5-34_armhf.deb

sudo dpkg -i cuda-repo-l4t-r19.2_6.0-42_armhf.deb

sudo apt-get update

sudo apt-get install cuda-toolkit-6-5

sudo usermod -a -G video $USER

(add 32bit lib to bashrc)
echo "# Add CUDA bin & library paths:" >> ~/.bashrc
echo "export PATH=/usr/local/cuda/bin:$PATH" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc

(to check the nvcc version)
$nvcc -V

(to install the sdk)
go to /usr/local/cuda/bin
./cuda-install-samples-6.5.sh /home/your_user_folder

Note: Many of the CUDA samples use OpenGL GLX and open graphical windows. If you are running these programs through an SSH remote terminal, you can remotely display the windows on your desktop by typing "export DISPLAY=:0" and then executing the program. (This will only work if you are using a Linux/Unix machine or you run an X server such as the free "Xming" for Windows). eg: 

export DISPLAY=:0
cd ~/NVIDIA_CUDA-6.5_Samples/2_Graphics/simpleGL


[2] install opencv



the downloaded file is libopencv4tegra-repo_l4t-r21_2.4.10.1_armhf.deb


$ sudo dpkg -i libopencv4tegra-repo_l4t-r21_2.4.10.1_armhf.deb
$ sudo apt-get update
$ sudo apt-get install libopencv4tegra libopencv4tegra-dev


If you bumped into the dependency issue
$sudo apt-get -f install
$ sudo apt-get install libopencv4tegra libopencv4tegra-dev

download cudnn from https://developer.nvidia.com/cuDNN

run the procedures in this linkhttps://gist.github.com/jetsonhacks/fa9f4ff89006607359ea
then you have your cudnn with it.
as default the tk1 uses 6.5, so I download the 6.5 compatible one, version 2.
the current caffe requires cudnn >3, i used v3 armv7

[3] get Caffe

go to https://gist.github.com/jetsonhacks
download the ./installCaffe.sh

#!/bin/sh
# Install and compile Caffe on NVIDIA Jetson TK1 Development Kit
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install libprotobuf-dev protobuf-compiler gfortran \
libboost-dev cmake libleveldb-dev libsnappy-dev \
libboost-thread-dev libboost-system-dev \
libatlas-base-dev libhdf5-serial-dev libgflags-dev \
libgoogle-glog-dev liblmdb-dev -y
sudo usermod -a -G video $USER
# Git clone Caffe
sudo apt-get install -y git
git clone https://github.com/BVLC/caffe.git
cd caffe && git checkout dev
cp Makefile.config.example Makefile.config
make -j 4 all
make -j 4 runtest
build/tools/caffe time --model=models/bvlc_alexnet/deploy.prototxt --gpu=0

Noted that,
in order to use cudnn, you need to change makefile, turn on/add some options
http://elinux.org/Jetson/cuDNN

Since tk1 is cuda 3.2, I changed the arch in the Makefile.config to allow compiling only this architecture.



--------------------------------------------------------------------------------------------------------------------------
Reference:
*http://elinux.org/Jetson/Installing_CUDA
*https://developer.nvidia.com/linux-tegra-rel-21
*http://developer.download.nvidia.com/embedded/OpenCV/L4T_21.1/README.txt
* http://petewarden.com/2014/10/25/how-to-run-the-caffe-deep-learning-vision-library-on-nvidias-jetson-mobile-gpu-board/


Friday, April 10, 2015

Install caffe on ubuntu 14.04

Install cuda first, I am using 7.5

Install cuDNN

Go to https://developer.nvidia.com/cuDNN, download .tar.gz file and extract.
Here is the link for cuDNN v3 lib for linux.
wget -c http://developer.download.nvidia.com/assets/cuda/secure/cuDNN/v3/cudnn-7.0-linux-x64-v3.0-prod.tgz?autho=1445140377_f51da7032f9f7293550d875fc2b8c4ef&file=cudnn-7.0-linux-x64-v3.0-prod.tgz

v5 link:


Copy all the files, (except cudnn.h) to /usr/local/cuda-6.5/lib64

Copy the cudnn.h to /usr/local/cuda-6.5/include

Install cuda sdk
use the following example command (modify accordingly), the shell script is in bin dir of your cuda installation dir.
$cuda-install-samples-7.5.sh /home/xxxx/

Install opencv
http://rodrigoberriel.com/2014/10/installing-opencv-3-0-0-on-ubuntu-14-04/

you can donwload the opencv from the official website,
http://opencv.org/downloads.html

set cuda generation by auto
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_GENERATION=Auto ..

otherwise, you will see errors about gpu architecture 'compute_11'

refer to : https://help.ubuntu.com/community/OpenCV

install opencv 2.4.10

https://github.com/BVLC/caffe/wiki/Ubuntu-14.04-VirtualBox-VM



~/Downloads/opencv/opencv-3.0.0-alpha/modules/cudalegacy/src/cuda/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization


if you are using opencv 3.0 alpha version, you may come across the errors below.
remove the static keyboard before the inline

do the same thing for
/home/leiming/Downloads/opencv/opencv-3.0.0-alpha/modules/cudastereo/src/cuda/stereocsbp.cu

line 62/66/74


/usr/include/opencv2/contrib/openfabmap.hpp:118:36: error: ‘vector’ does not name a type
put using namespace std before the included header files in openfabmap.hpp



Install caffe

Install all the dependencies and libraries needed for caffe in ubuntu
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
sudo apt-get install libopenblas-dev
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
(installed libboost and libopenblas)

cp Makefile.config.example Makefile.config

In the Makefile.config, uncomment the "USE_CUDNN".
# cuDNN acceleration switch (uncomment to build with cuDNN).
# USE_CUDNN := 1

make -j $(nproc) all
make -j $(nproc) test 
make -j 8 runtest 
make pycaffe 
make distribute


/usr/bin/ld: cannot find -lcblas
/usr/bin/ld: cannot find -latlas

sudo apt-get install libatlas-base-dev
(http://caffe.berkeleyvision.org/install_apt.html)

make -j $(nproc) runtest


at last you should see your test passed!

Congratulations!


to test
build/tools/caffe time --model=models/bvlc_alexnet/deploy.prototxt --gpu=0


you can build pycaffe too.
(http://installing-caffe-the-right-way.wikidot.com/start)

To run caffe in eclipse, please refer to
http://tzutalin.blogspot.com/2015/05/caffe-on-ubuntu-eclipse-cc.html
http://tzutalin.blogspot.tw/2015/06/setup-caffe.html
You can build your caffe first, and add existing g++ project to eclipse, then configure the include, lib and preprocessor settings.


--------------------------------------------------------------------------------------------------------------------------
http://petewarden.com/2014/10/25/how-to-run-the-caffe-deep-learning-vision-library-on-nvidias-jetson-mobile-gpu-board/
http://corpocrat.com/2014/11/03/how-to-setup-caffe-to-run-deep-neural-network/