0
我使用紅帽爲ARMv7交叉編譯了Armadillo。Armadillo找不到BLAS線性代數包
當我嘗試做矩陣乘法我得到的錯誤:從源
armadillo_bits/blas_wrapper.hpp:79: undefined reference to `wrapper_dgemv_'
我建BLAS和LAPACK,似乎在尋找LAPACK,因爲它讓我做Cholesky分解沒有錯誤。
我已經建立了這樣的:
arm-linux-gnueabihf-g++ -march=armv7-a -mthumb-interwork -mfloat-abi=hard
-mfpu=neon
-mtune=cortex-a9 --sysroot=/home/mg/yocto/build/tmp/sysroots/socfpga_cyclone5
-DHAVE_CONFIG_H -I. -I.. --sysroot=/home/mg/yocto/build/tmp/sysroots
/socfpga_cyclone5 -g -O2 -L/opt/altera-linux/linaro/gcc-linaro-arm-linux-gnueabihf-
4.7-2012.11-20121123_linux/arm-linux-gnueabihf/lib -I/opt/altera-linux/linaro
/gcc-linaro-arm-linux-gnueabihf-4.7-2012.11-20121123_linux/arm-linux-gnueabihf
/include -llapack -lf2c -lblas -lm --sysroot=/home/mg/yocto/build/tmp/sysroots
/socfpga_cyclone5 -MT AlgoLibTests.o -MD -MP -MF .deps/AlgoLibTests.Tpo -c -o
AlgoLibTests.o AlgoLibTests.cpp
我把我的BLAS和LAPACK在這裏:
/opt/altera-linux/linaro/gcc-linaro-arm-linux-gnueabihf-
4.7-2012.11-20121123_linux/arm-linux-gnueabihf/lib
如果我禁用BLAS的支持,它的計算速度非常緩慢。
這是在配置文件中
ARMA_USE_BLAS
定義,這是禁用的。
ARMA_USE_WRAPPER
ATLAS也被禁用。爲什麼沒有找到BLAS庫?
如果正在使用以wrapper_開頭的任何函數,則意味着ARMA_USE_WRAPPER仍處於啓用狀態。檢查您是否安裝了多個Armadillo副本(例如,在/ usr/include或/ usr/local/include或您的主目錄中的某處) – mtall
Hello mtall,我的Red Hat上有兩個安裝的,另一個安裝在源上爲ARM。在link.txt文件中,我拿走了所有使用/包含等的鏈接。此外,Cholesky分解需要70ms才能在241x241矩陣上執行。你知道它爲什麼這麼慢嗎?這是正常的嗎? – user1876942
這應該是Cholesky + inv(r)* inv(r.t())* B需要70ms,我自己編寫的代碼需要40ms。我認爲BLAS會更快。使用求解(X,A,B)需要250ms? – user1876942