Yael for ubuntu 部署日誌 - [內含ssaupd_的問題,python部署]

做高維數據索引實驗,發現有個比較好的c/python/matlab庫,yael-鏈接地址

不過目前只支持linux和macOS。

特此將安裝過程記錄下來:

版本信息

  • yael_v438
  • ubuntu 14.04 或者 14.10

準備工作

安裝gfortran, blas, lapack, swig

$ sudo apt-get install gfortran
$ sudo apt-get install libblas3gf
$ sudo apt-get install liblapack3gf
$ sudo apt-get install swig

編譯核心庫

切換到yael目錄下

$ sudo ./configure.sh
$ # 如果CPU支持sse4:$ sudo ./configure.sh --msse4
$ # 打開生成的makefile.inc, 將其中的python2.x修改爲計算機上
$ # 對應的python版本(例如我的是python2.7)
$ sudo make

此時yael下核心目錄的C代碼編譯完畢,可以到test/c和prog下運行測試代碼。

matlab

matlab目錄下的編譯過程中遇到了一個ssaupd_, sseupd_ underfined的問題(在Make.m的第13行及之後)。在這篇帖子的幫助下得以修正。
具體來講,需要更改三處:

  • 檢查libarpack的安裝,使用apt-get安裝libarpack
  • 將configure.sh中的 arpackldflags=/usr/lib64/libarpack.so.2
    改成arpackldflags=/usr/lib/libarpack.so.2
  • 將子文件matlab中的Make.m中的 -lmwarpack從LDFLAGS中移出來,放在選項-lmwblas的後面

然後,切換到yael目錄下

$ cd matlab目錄
$ matlab -nojvm  // 命令行運行matlab
$ Make

python

$ sudo ./configure.sh --enable-numpy
$ make
$ # 如果要使用python腳本,需要添加--enable-numpy,否則會出現python代碼調用的部分方法不存在的問題

之後將yael庫中的python庫文件複製到系統python的包中,例如系統python版本是2.7,具體如下:

  • 在/usr/local/lib/python2.7/dist-packages/下建立一個yael目錄
  • 將yael核心目錄中的所有.py文件連同編譯出的_yael.so文件一起復制到新創建的yael目錄中即完成python版本yael的安裝
  • yael提供了ynumpy, yael, threads, yutils幾個庫,可以在自己的python腳本中調用,調用方式爲from yael import yael, ynumpy

注意_yael.so文件十分重要,一定記得複製。

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