亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Ubuntu14.04配置cuda-convnet

系統(tǒng) 2680 0

轉(zhuǎn)載請注明:http://blog.csdn.net/stdcoutzyx/article/details/39722999

在上一個鏈接中,我配置了 cuda ,有強大的 GPU ,自然不能暴殄天物,讓資源白白空暇著,所以配置一下卷積神經(jīng)網(wǎng)絡(luò)跑一下程序嘍。至于卷積神經(jīng)網(wǎng)絡(luò)的原理,容后再寫。打算先寫庫的使用方法,再寫原理,以行動帶動對理論的追求。

話不多說,步入正題。

1.?預說明

關(guān)于 cuda-convnet ,起源于一篇經(jīng)典論文 ①,論文中針對 ILSVRC-2010 的數(shù)據(jù)進行實驗,然后發(fā)布了事實上驗使用的代碼,鏈接為 ②。可是,事實往往跟論文是有差距的,鏈接②中的代碼根本不能重現(xiàn)論文中的結(jié)果。在下不才,在使用這個鏈接的庫非常久之后才發(fā)現(xiàn)的,認為非常坑,希望后來者慎之。

之所以說它坑,首先,論文中提到特性中, multi-GPU dropout 就沒有實現(xiàn),并且也沒有給出論文中 8 層卷積神經(jīng)網(wǎng)絡(luò)的配置文件。總之不能直接拿來用,須要自己探索。

盡管如此,但有總比沒有好,畢竟這個庫實現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)封裝的非常好,論文中的大神的貢獻非我等小菜所能企及的。給大神點 32 個贊。

本文僅僅對 cuda-convnet cuda-convnet2 的配置進行說明,論文中的作者還發(fā)布了其它版本號的庫,尚未用到,故且按下不提。

2.?Cuda-convnet 配置

2.1.?源代碼下載

參考鏈接②,先將源代碼下載下來。

      svn checkout http://cuda-convnet.googlecode.com/svn/trunk/ cuda-convnet-read-only
    

取出的版本號是 562

2.2.?安裝必要的庫

然后,安裝必須的庫,我使用的是 ubuntu 系統(tǒng)。所以命令為

      sudo apt-get install python-dev python-numpy python-magic python-matplotlib libatlas-base-dev
    

當然,還要確認你安裝了 cuda ,我安裝的是 cuda6.5 ,在 /usr/local/ 文件夾下,例如以下所看到的:

      $ ls /usr/local
bin  cuda  cuda-6.5  etc  games  include  lib  man  sbin  share  src
    

2.3.?更改 build.sh

進入到剛才下載的 cuda-convnet-read-only 文件夾,更改 build.sh 文件里的配置路徑。例如以下所看到的:

      # CUDA toolkit installation directory.
export CUDA_INSTALL_PATH=/usr/local/cuda
 
# CUDA SDK installation directory.
export CUDA_SDK_PATH=/usr/local/cuda-6.5/samples/common/inc
 
# Python include directory. This should contain the file Python.h, among others.
export PYTHON_INCLUDE_PATH=/usr/include/python2.7
 
# Numpy include directory. This should contain the file arrayobject.h, among others.
export NUMPY_INCLUDE_PATH=/usr/lib/python2.7/dist-packages/numpy/core/include/numpy
 
# ATLAS library directory. This should contain the file libcblas.so, among others.
export ATLAS_LIB_PATH=/usr/lib/atlas-base
 
make $*
    


依照官網(wǎng)的教程,配置完 build.sh 后就能夠進行編譯了。可是會錯誤發(fā)生,還須要改例如以下幾個地方才干夠。

2.4.?頭文件加入

直接編譯會發(fā)生找不到 cutil_inline.h 頭文件的錯誤。分析原因可能是原來有這個頭文件,后來這個頭文件的功能被實現(xiàn)到其它頭文件里去了。

include 子目錄下田間 cutil_inline.h 文件,并輸入內(nèi)容。

      #include "helper_cuda.h"
#define cutilCheckMsg(a) getLastCudaError(a)
#define cutGetMaxGflopsDeviceId() gpuGetMaxGflopsDeviceId()
#define MIN(a,b) (a) < (b) ? (a) : (b)
    

2.5.?MakeFile 文件更改

MakeFile 3 行,原文例如以下:

      INCLUDES :=  -I$(PYTHON_INCLUDE_PATH) -I$(NUMPY_INCLUDE_PATH) -I./include -I./include/common -I./include/cudaconv2 -I./include/nvmatrix
    

加入 cuda 的路徑后例如以下:

      INCLUDES :=  -I$(PYTHON_INCLUDE_PATH) -I$(NUMPY_INCLUDE_PATH) -I$(CUDA_SDK_PATH) -I./include -I./include/common -I./include/cudaconv2 -I./include/nvmatrix
    

保存之。

2.6.?最后的庫鏈接錯誤

做完上述修改后,能夠編譯了,但到最后會發(fā)生一個庫鏈接的錯誤,不用管,直接將那個庫凝視掉。

common-gcc-cuda-4.0.mk 文件的 332 行。直接用 # 號凝視。

      # LIB += -lcutil_$(LIB_ARCH) $(LIBSUFFIX) -lshrutil_$(LIB_ARCH) $(LIBSUFFIX)
    

至此,就能夠完畢 cuda-convnet 的編譯了。

3.?Cuda-convnet2 配置

顧名思義,這是 cuda-convnet 2.0 版本號,支持多 GPU 執(zhí)行。

3.1.?源代碼下載

git?clone? https://code.google.com/p/cuda-convnet2/

3.2.?必要的庫

      sudo apt-get install python-dev python-numpy python-scipy python-magic python-matplotlib libatlas-base-dev libjpeg-dev libopencv-dev
    

3.3.?配置

我僅僅能說,這個版本號的比上個版本號人性化多了,這個版本號的 build.sh 直接如此。

      # CUDA toolkit installation directory.
export CUDA_INSTALL_PATH=/usr/local/cuda
 
# Python include directory. This should contain the file Python.h, among others.
export PYTHON_INCLUDE_PATH=/usr/include/python2.7
 
# Numpy include directory. This should contain the file arrayobject.h, among others.
export NUMPY_INCLUDE_PATH=/usr/lib/python2.7/dist-packages/numpy/core/include/numpy/
 
# ATLAS library directory. This should contain the file libcblas.so, among others.
export ATLAS_LIB_PATH=/usr/lib/atlas-base
 
# You don't have to change these:
export LD_LIBRARY_PATH=$CUDA_INSTALL_PATH/lib64:$LD_LIBRARY_PATH
export CUDA_SDK_PATH=$CUDA_INSTALL_PATH/samples
export PATH=$PATH:$CUDA_INSTALL_PATH/bin
    

假設(shè)是在 ubuntu 下的話,這樣就直接已經(jīng)基本把路徑都配置對了。

3.4.?鏈接錯誤

可是直接編譯的話還是會遇到錯誤,例如以下所看到的:

      cd ./bin/ && g++  -O3   -DNUMPY_INTERFACE -shared -Wl,-no-undefined -o libutilpy.so src/matrix.o -L/usr/lib/atlas-base -latlas -lcblas -lpython2.7
/usr/bin/ld: cannot find -latlas
/usr/bin/ld: cannot find -lcblas
collect2: error: ld returned 1 exit status
    

主要是由于 atlas 庫中沒有 libatlas.so libctlas.so 。查看 atlas 的文件夾發(fā)現(xiàn)結(jié)構(gòu)如此:

      :/usr/lib/atlas-base$ ls -l
總用量 4292
drwxr-xr-x 2 root root    4096  9月 22 11:41 atlas
lrwxrwxrwx 1 root root      15  2月  4  2014 libatlas.so.3 -> libatlas.so.3.0
-rw-r--r-- 1 root root 3746968  2月  4  2014 libatlas.so.3.0
lrwxrwxrwx 1 root root      15  2月  4  2014 libcblas.so.3 -> libcblas.so.3.0
-rw-r--r-- 1 root root  135376  2月  4  2014 libcblas.so.3.0
lrwxrwxrwx 1 root root      17  2月  4  2014 libf77blas.so.3 -> libf77blas.so.3.0
-rw-r--r-- 1 root root  131000  2月  4  2014 libf77blas.so.3.0
lrwxrwxrwx 1 root root      22  2月  4  2014 liblapack_atlas.so.3 -> liblapack_atlas.so.3.0
-rw-r--r-- 1 root root  369472  2月  4  2014 liblapack_atlas.so.3.0
    

加入兩個軟鏈接,運行命令:

      sudo ln -s libatlas.so.3.0 libatlas.so
sudo ln -s libcblas.so.3.0 libcblas.so
    

文件夾結(jié)構(gòu)變?yōu)槿绱耍?

      /usr/lib/atlas-base$ ls -l
總用量 4292
drwxr-xr-x 2 root root    4096  9月 22 11:41 atlas
lrwxrwxrwx 1 root root      15 10月  1 22:35 libatlas.so -> libatlas.so.3.0
lrwxrwxrwx 1 root root      15  2月  4  2014 libatlas.so.3 -> libatlas.so.3.0
-rw-r--r-- 1 root root 3746968  2月  4  2014 libatlas.so.3.0
lrwxrwxrwx 1 root root      15 10月  1 22:36 libcblas.so -> libcblas.so.3.0
lrwxrwxrwx 1 root root      15  2月  4  2014 libcblas.so.3 -> libcblas.so.3.0
-rw-r--r-- 1 root root  135376  2月  4  2014 libcblas.so.3.0
lrwxrwxrwx 1 root root      17  2月  4  2014 libf77blas.so.3 -> libf77blas.so.3.0
-rw-r--r-- 1 root root  131000  2月  4  2014 libf77blas.so.3.0
lrwxrwxrwx 1 root root      22  2月  4  2014 liblapack_atlas.so.3 -> liblapack_atlas.so.3.0
-rw-r--r-- 1 root root  369472  2月  4  2014 liblapack_atlas.so.3.0
    

然后就能夠正常編譯了。

參考文獻

① ImageNet?Classification?with?Deep?Convolutional?Neural?Networks

②  https://code.google.com/p/cuda-convnet

③  https://code.google.com/p/cuda-convnet2

Ubuntu14.04配置cuda-convnet


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产一区私人高清影院 | 精品伊人久久久 | 久久精品国产99久久72 | 91精品久久久久久久久网影视 | 免费刺激性视频大片区 | 国产综合视频在线 | 中文字幕视频在线 | 品色视频 | 国产国产成人精品久久 | 精品久久在线观看 | 日本免费一区二区三区在线看 | 欧美一级毛片俄罗斯 | 综合欧美日韩一区二区三区 | 狠狠色噜噜狠狠狠狠黑人 | 色综合久久88中文字幕 | 国产精品成人一区二区不卡 | 在线日韩亚洲 | 免费一区二区三区久久 | 四虎影视国产精品 | 久久视频免费在线观看 | 日本一区二区三区欧美在线观看 | 在线播放真实国产乱子伦 | 成人黄色免费网站 | 日韩在线国产精品 | 日韩欧美视频在线 | 神马老子不卡视频在线 | 在线中文字幕日韩 | 神马影院我不卡在线观看 | 高清一级毛片免免费看 | 久久久久爽亚洲精品 | 妖精视频在线看免费视频 | 天天在线欧美精品免费看 | 日韩精品免费一级视频 | 最新精品亚洲成a人在线观看 | 涩涩的视频在线观看 | 一色屋精品亚洲香蕉网站 | 天天爱天天色 | 国产精品福利久久香蕉中文 | 九九re6精品视频在线观看 | 国产亚洲精品精品国产亚洲综合 | 色综合天天综合网看在线影院 |