2014-04-16 3 views
0

내 Red Hat을 사용하여 ARMv7 용 Armadillo를 크로스 컴파일했습니다. 내가 행렬 곱셈을 할 때아르마딜로는 BLAS 선형 대수 패키지를 찾지 못합니다

내가 오류 얻을 : 소스에서 내가 BLAS를 구축

armadillo_bits/blas_wrapper.hpp:79: undefined reference to `wrapper_dgemv_' 

및 LAPACK을, 나 오류없이 콜레 분해를 수행 할 수 있습니다으로 LAPACK을 찾을 것으로 보인다.

는 I는 다음과 같이 구축 :

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 라이브러리를 찾지 못하는 이유는 무엇입니까?

+0

'wrapper_'로 시작하는 함수가 사용 중이면 ARMA_USE_WRAPPER가 여전히 사용 가능하다는 의미입니다. 여러개의 Armadillo가 설치되어 있는지 확인하십시오. (예 :/usr/include 또는/usr/local/include 또는 가정용 디렉토리 어딘가에 있음) – mtall

+0

안녕하십니까, 내 Red Hat에 2 개 설치되어 있고 다른 하나는 출처에서 설치되어 있습니다 ARM 용. link.txt 파일에서 필자는 use/include 등의 모든 링크를 없앴습니다. 또한 Cholesky 분해는 241x241 행렬에서 실행될 때 70ms가 걸립니다. 왜 그렇게 느린 지 아십니까? 그게 정상인가요? – user1876942

+0

Cholesky + inv (r) * inv (r.t()) * B는 70ms가 걸리지 만 내 고유 코드는 40ms가 걸립니다. 나는 BLAS가 더 빠를 것이라고 생각했다. Solve (X, A, B)를 사용하면 250ms가 소요됩니까 ?? – user1876942

답변

0

Android 프로젝트 용으로 Armadillo를 컴파일하려고했을 때도이 오류가 발생했습니다. ARMA_USE_WRAPPER가 아직 비활성화되지 않았 음을 확신합니다. 그래서 'wrapper_dgemv_'에 대한 정의되지 않은 참조 에 대한 오류가 발생합니다. 다시 확인하십시오.

Mobile에서의 행렬 계산이 Mac OS에서보다 느립니다.

관련 문제