Hi,
I've just downloaded Magma, modified make.inc with path to Intel MKL, and ran make. I'm getting the following error while linking. Could you please let me know if I'm missing anything? Thanks.
make
( cd testing; make )
make[1]: Entering directory `/home/st/sbyna/necla/cuda_trials/benchmarks/magma_0.1/testing'
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_spotrf.cpp -o testing_spotrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_spotrf_gpu.cpp -o testing_spotrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgeqrf.cpp -o testing_sgeqrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgeqrf_gpu.cpp -o testing_sgeqrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgetrf.cpp -o testing_sgetrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_sgetrf_gpu.cpp -o testing_sgetrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dpotrf.cpp -o testing_dpotrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dpotrf_gpu.cpp -o testing_dpotrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgeqrf.cpp -o testing_dgeqrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgeqrf_gpu.cpp -o testing_dgeqrf_gpu.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgetrf.cpp -o testing_dgetrf.o
gcc -O3 -DADD_ -I../include -I/usr/local/cuda/include -c testing_dgetrf_gpu.cpp -o testing_dgetrf_gpu.o
gcc -fPIC testing_spotrf.o -o testing_spotrf -L../lib \
-lcuda -lmagma -lmagmablas -L/opt/intel/mkl721/lib/em64t -L/usr/local/cuda/lib -lmkl_em64t -lguide -lpthread -lcublas -lm get_nb.cpp
testing_spotrf.o: In function `main':
testing_spotrf.cpp:(.text+0x31e): undefined reference to `spotrf_'
testing_spotrf.cpp:(.text+0x383): undefined reference to `slange_'
testing_spotrf.cpp:(.text+0x3cb): undefined reference to `slange_'
../lib/libmagma.a(spotrf.o): In function `magma_spotrf(char*, int*, float*, int*, float*, int*)':
spotrf.cpp:(.text+0x154): undefined reference to `spotrf_'
spotrf.cpp:(.text+0x3ce): undefined reference to `spotrf_'
spotrf.cpp:(.text+0x429): undefined reference to `spotrf_'
../lib/libmagma.a(auxiliary.o): In function `dqrt02(int*, int*, int*, double*, double*, double*, double*, int*, double*, double*, int*, double*, double*)':
auxiliary.cpp:(.text+0x450): undefined reference to `dlamch_'
auxiliary.cpp:(.text+0x481): undefined reference to `dlaset_'
auxiliary.cpp:(.text+0x4b5): undefined reference to `dlacpy_'
auxiliary.cpp:(.text+0x4f7): undefined reference to `dorgqr_'
auxiliary.cpp:(.text+0x521): undefined reference to `dlaset_'
auxiliary.cpp:(.text+0x546): undefined reference to `dlacpy_'
auxiliary.cpp:(.text+0x5b6): undefined reference to `dlange_'
auxiliary.cpp:(.text+0x5eb): undefined reference to `dlange_'
auxiliary.cpp:(.text+0x66e): undefined reference to `dlaset_'
auxiliary.cpp:(.text+0x6c5): undefined reference to `dlansy_'
../lib/libmagma.a(auxiliary.o): In function `sqrt02(int*, int*, int*, float*, float*, float*, float*, int*, float*, float*, int*, float*, float*)':
auxiliary.cpp:(.text+0x780): undefined reference to `slamch_'
auxiliary.cpp:(.text+0x7b1): undefined reference to `slaset_'
auxiliary.cpp:(.text+0x7e5): undefined reference to `slacpy_'
auxiliary.cpp:(.text+0x827): undefined reference to `sorgqr_'
auxiliary.cpp:(.text+0x851): undefined reference to `slaset_'
auxiliary.cpp:(.text+0x876): undefined reference to `slacpy_'
auxiliary.cpp:(.text+0x8e6): undefined reference to `slange_'
auxiliary.cpp:(.text+0x91f): undefined reference to `slange_'
auxiliary.cpp:(.text+0x9b3): undefined reference to `slaset_'
auxiliary.cpp:(.text+0xa0a): undefined reference to `slansy_'
collect2: ld returned 1 exit status
make[1]: *** [testing_spotrf] Error 1
make[1]: Leaving directory `/home/st/sbyna/necla/cuda_trials/benchmarks/magma_0.1/testing'
make: *** [test] Error 2
error in linking
-
- Posts: 283
- Joined: Fri Aug 21, 2009 10:39 pm
Re: error in linking
Hi,
The undefined functions are in the LAPACK library and should be recognized (in general) in the MKL library when you link with
"-L/opt/intel/mkl721/lib/em64t -lmkl_em64t -lguide"
What version of gcc and mkl are you using? We use mkl 10.0.1.014 and compile exactly in the way you are trying.
Would replacing "-lmkl_em64t -lguide" by "-lmkl_sequential -lmkl_intel_lp64 -lmkl_core" work?
If not what are you getting from
nm /opt/intel/mkl721/lib/em64t/libmkl_intel_lp64.a | grep 'spotrf_'
Something like this?
_spotrf_lp64.o: 0000000000000000 T spotrf_
Stan
The undefined functions are in the LAPACK library and should be recognized (in general) in the MKL library when you link with
"-L/opt/intel/mkl721/lib/em64t -lmkl_em64t -lguide"
What version of gcc and mkl are you using? We use mkl 10.0.1.014 and compile exactly in the way you are trying.
Would replacing "-lmkl_em64t -lguide" by "-lmkl_sequential -lmkl_intel_lp64 -lmkl_core" work?
If not what are you getting from
nm /opt/intel/mkl721/lib/em64t/libmkl_intel_lp64.a | grep 'spotrf_'
Something like this?
_spotrf_lp64.o: 0000000000000000 T spotrf_
Stan
-
- Posts: 2
- Joined: Tue Oct 13, 2009 9:23 am
Re: error in linking
Hi Stan,
Thanks for your response. Replacing "-lmkl_em64t -lguide" with "-lmkl_lapack -lmkl_em64t -lguide" helped solving the problem. Older versions of MKL (7.2.1 in our case) probably have the LAPACK library separately.
Suren.
Thanks for your response. Replacing "-lmkl_em64t -lguide" with "-lmkl_lapack -lmkl_em64t -lguide" helped solving the problem. Older versions of MKL (7.2.1 in our case) probably have the LAPACK library separately.
Suren.