MXNet源碼級構建過程

兩個步驟:
1、根據MXNet的C++源碼文件構建libmxnet共享庫
2、安裝Python語言依賴包
外加一個測試部分

第一步:

構建環境要求:

C++編譯器支持C11標準,系統安裝有Git以及GNUMake工具。由於本系統是Ubuntu 14.04LTS,需要的操作如下:
命令:

sudo apt-get update && sudo apt-get install build-essential git

至此,構建環境準備完畢。

安裝BLAS庫

命令:

sudo apt-get install libatlas-base-dev

鍵入命令後出現以下錯誤:

E: Unable to locate package libatlas-bas-dev

原因:爲了安裝libatlas需要安裝以下Python依賴包

python-numpy 
python-scipy 
python-matplotlib 
ipython 
ipython-notebook 
python-pandas 
python-sympy 
python-nose 

鍵入命令:

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

然而,會在最後兩行出現以下提示:

/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 不是符號連接
/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 不是符號連接

原因:系統找的是一個符號連接,而不是一個文件。這應該是個bug….
解決方法:
1.對這兩個文件更名;2.重新建立符號連接
下面是具體命令

sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

然後,重新鍵入

sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose

然後,鍵入

sudo apt-get install libatlas-base-dev

至此libatlas安裝完成

安裝OpenCV

sudo apt-get install libopencv-dev

OpenCV安裝順利

構建libmxnet共享庫

下載mxnet源文件

git clone --recursive https://github.com/dmlc/mxnet

下載完成,目錄切換到mxnet文件夾下

make

至此,libmxnet共享庫安裝完成

第二步:構建Python依賴包

sudo apt-get install python-dev python-numpy

至此安裝完成

第三步,測試

以下是測試部分
~/mxnet/python/目錄下操作,鍵入:

python

MXNet提供兩種編程接口:imperative n-demensional array interface,symbolic programing interface。
接口1: imperative n-demensional array interface

>>> import mxnet as mx
>>> a = mx.nd.ones((2, 3))
>>> b = a * 2 + 1
>>> b.asnumpy()  # print b by converting to a numpy.ndarray object
array([[ 3.,  3.,  3.],
       [ 3.,  3.,  3.]], dtype=float32)

接口二:symbolic programing interface

>>> a = mx.sym.var('a')  # it requires the latest mxnet
>>> b = a * 2 + 1  # b is a Symbol object
>>> c = b.eval(a=mx.nd.ones((2,3)))
>>> c[0].asnumpy()  # the list of outputs
array([[ 3.,  3.,  3.],
       [ 3.,  3.,  3.]], dtype=float32)

都能得到預期結果,至此,MXNet依賴庫測試完畢,MXNet依賴庫安裝成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章